一、模型微调核心要点
-
环境与依赖
- 训练报错多与依赖版本兼容相关(如
accelerate版本过低导致Accelerator参数错误、NumPy版本不兼容导致张量转换失败),需保证transformers(4.37.2)、accelerate(0.25.0)、NumPy(1.26.4)版本匹配。 - 显存残留问题可通过「杀进程(
taskkill/kill)、清空 CUDA 缓存(torch.cuda.empty_cache())、重启驱动」解决,训练代码中建议加异常捕获 + 显存清理逻辑。
- 训练报错多与依赖版本兼容相关(如
-
数据与训练流程
- GLUE/SST2 数据集默认缓存路径(Windows):
C:\Users\<用户名>\.cache\huggingface\datasets,可通过cache_dir参数自定义路径,下载后重复加载会读取缓存。 - 微调核心步骤:加载数据集→预处理(分词 / 截断 / 补全)→定义评估指标(准确率)→配置训练参数(批次大小、学习率、轮数等)→
Trainer封装训练,最终验证集准确率 80.05%(bert-tiny 小模型正常水平)。
- GLUE/SST2 数据集默认缓存路径(Windows):
二、模型推理核心要点
-
基础推理
- 推理前必须切换模型到
eval()模式(禁用训练层),并加torch.no_grad()(禁用梯度计算,节省显存 / 提升速度)。 - 单条推理流程:文本→分词器编码(转 PyTorch 张量)→模型推理→
torch.argmax()解析 logits 得到分类结果(0 = 负面 / 1 = 正面)。
- 推理前必须切换模型到
-
批量推理
- 支持一次性输入多文本(如 10 个),分词器直接接收文本列表批量编码,模型一次性输出结果,效率远高于单条推理,批量大小需适配 GPU 显存。
三、文件与路径关键规则
-
数据集与模型文件
- 微调后模型保存:
trainer.save_model()仅保存模型权重 / 配置,必须单独用tokenizer.save_pretrained()保存分词器文件 (vocab.txt/tokenizer_config.json),否则推理时会因缺少分词器文件报错。 - 完整模型目录需包含:
config.json(模型结构)、model.safetensors(权重)、vocab.txt(分词器词汇表),缺一不可。
- 微调后模型保存:
-
路径与缓存
- 数据集缓存可通过代码
dataset["train"].cache_files[0]["filename"]快速定位,模型 / 分词器加载路径需与保存路径完全一致。
- 数据集缓存可通过代码
四、新手避坑核心原则
- 训练 / 推理时的「必加操作」:
model.eval()、torch.no_grad()、分词器truncation=True/padding="max_length"(保证文本长度统一)。 - 保存规范:训练完成后模型 + 分词器需保存在同一目录,才能保证推理时
AutoTokenizer/AutoModel正常加载。 - 设备适配:代码默认优先用 CUDA 训练 / 推理,可通过
torch.cuda.is_available()验证 GPU 是否可用,或在TrainingArguments中用device参数强制指定设备。