前几篇里,我们给模型扩充了“脑容量”,加足了“马达”,也平衡了“显存”。但最后一步,往往也是最致命的一步:如何确保模型真正听懂了你的话,并且学会了“举一反三”,而不是只会死记硬背?
今天,我们来聊聊微调中那些最容易被忽视、却决定了模型“灵魂”的软细节。
🎭1. Prompt Template (对话模板):微调的“接头暗号”
这是新手翻车率最高的地方。
🛠️ 作用与物理意义
大模型本身并不认识什么是“用户”,什么是“助手”。它看到的是一段长长的字符。对话模板定义了特殊的控制 Token(如 <|im_start|>、### Instruction: 等),用来告诉模型哪里是指令的开始,哪里是回答的结束。
⚠️ 致命风险:如果你训练时用的模板是 qwen,但推理(部署)时少了一个换行符,或者多了一个空格。
后果:模型会因为找不到熟悉的“路标”而陷入混乱,出现复读、胡言乱语或者直接拒绝回答。
📊 2026 建议
✅ 动作:严格对齐基座模型的官方模板。如果你用的是 Qwen3.5,请在 LLaMA-Factory 中务必选择 qwen;如果是 Llama-3,请选 llama3。不要尝试自定义模板,除非你非常确定 Token 的编码逻辑。
👺2. Loss Masking (损失掩码):只考“填空题”
这是区分“调参小白”与“工程专家”的分水岭。
🛠️ 为什么它如此重要?
在微调数据中,包含 Question(问题)和 Answer(回答)。
- 错误做法:对全量文本计算 Loss。这会导致模型花大量的精力去学习“如何复述用户的问题”。
- 正确做法:开启
train_on_prompt = False。在计算损失时,将问题部分的权重设为 0,只针对回答部分计算 Loss。
📉 对结果的影响
如果不做 Masking,你的模型会变成一个“背题家”。它记住了题目本身,却没学会逻辑。这也是为什么很多人训练集准确率 75% 却依然无法正确回答的原因——模型在分心背题目。
🎲3. NEFTune (噪声注入):给模型加点“乱子”
如果你发现模型只会背答案,换个问法就不会了,那么这个黑科技是你的救命稻草。
🛠️ 原理与作用
在 Embedding(词向量)层注入微小的随机噪声。
- 直观感受:这就像是在教孩子认字时,故意把字写得稍微潦草一点、斜一点。
- 效果:模型被迫去理解字背后的核心语义,而不是死记硬背那个精准的像素点。这能显著提升模型的泛化能力和指令遵循度。
📊 取值建议
✅ 建议值:NEFTune Alpha = 5 或 10。在 LLaMA-Factory 中一键开启,效果往往立竿见影。
📏4. Max Sequence Length (截断长度):视野的深度
🛠️ 物理意义
模型一次性能“看”多长的文字。
⚠️ 风险预警:如果你的 7000 条数据里有大量长文档(超过 2048 Token),但你为了省显存设成了 1024。
后果:模型不仅学不到结尾,还会学到一种“说话说一半”的坏毛病,甚至逻辑断层。
🏁专栏大总结:2026 微调全量参数“避坑”对照表
当你面对 LLaMA-Factory 的界面时,请对照下表进行最后校准:
| 容量 | 64 / 128 | |
| 范围 | all-linear | |
| 驱动 | 1e-4 | |
| 节奏 | cosine / 0.1 | |
| 精度 | bf16 | |
| 对齐 | 必须对齐基座官方 | |
| 泛化 | Alpha=5 / 开启 Masking |
夜雨聆风