状态传导图
数据治理发生在 tokenize 之前;错误或重复答案会提高模型模仿相应模式的训练压力。
观察点 01
先把“理想回答”变成一致、可追踪的数据
原始对话要去重、查污染、规范角色和工具格式,并保留来源、质量标签与版本。少量精选示范可以很有效,但数量、覆盖度与一致性必须分别用留出集验证。
定义、审计并持续维护“好示范”,往往是 SFT 的主要工程成本之一。
SFT 文件看起来像问答,但训练器真正读取的是 input IDs、labels 和 loss mask。模板、截断或 mask 错一个,模型就可能在错误位置学习。
状态传导图
数据治理发生在 tokenize 之前;错误或重复答案会提高模型模仿相应模式的训练压力。
观察点 01
原始对话要去重、查污染、规范角色和工具格式,并保留来源、质量标签与版本。少量精选示范可以很有效,但数量、覆盖度与一致性必须分别用留出集验证。
定义、审计并持续维护“好示范”,往往是 SFT 的主要工程成本之一。
状态传导图
图中“监督”只表示常见 assistant-only 方案,实际策略需按任务定义。
观察点 02
Chat Template 加入角色边界,Tokenizer 变成 ID;labels 常把不监督位置设为 ignore index。若只训 assistant,就应遮住 system 与 user,工具协议则按目标单独设计。
Loss Mask 决定模型在模仿谁;它是训练语义,不是数据格式细节。
状态传导图
评测失败应回到数据、mask、学习率或训练轮数,而不是盲目继续训练。
观察点 03
前向得到目标 token loss,反向更新全参或 LoRA。对候选 checkpoint 用同一套目标任务、通用能力、安全和格式回归评测;否则过拟合可能被低训练损失掩盖。
SFT 成功标准是行为改善且副作用可接受,不是 loss 越低越好。
你现在应该能解释:SFT 成功标准是行为改善且副作用可接受,不是 loss 越低越好。
SFT(Supervised Fine-Tuning,监督微调)是常见的后训练手段。这篇把它拆到够细:loss mask 怎么配、数据怎么造、全参数与低秩适配怎么比较、超参怎么验证,以及何时需要偏好优化或强化学习。
基座模型以续写目标训练,可能回答问题,却未必稳定遵循角色、格式或任务要求。SFT 用「输入 → 目标输出」示范提高这些目标输出的概率,让模型更像任务所需的助手。
「想让模型懂某个领域」——别一上来就 SFT。先分清三种手段各管什么。
教模型「行为、格式、口吻、任务」——看输入输出示范,学会按要求应答。
适合:指令遵循、风格、工具调用、分类抽取。
拿领域语料接着「读」,补的是领域分布与知识。
适合:大量领域知识打底,常作 SFT 的前置。
不要求改模型,答题时去外部知识库现查,把检索资料拼进上下文。
适合:事实更新快、要可追溯来源、长尾知识。
SFT 的训练方式和预训练很接近——都可用 next-token 交叉熵。对话/指令 SFT 常见做法是用 loss masking 选择监督位置:对话数据可做 assistant-only loss,prompt-completion 数据可做 completion-only loss;两者概念相近但数据边界并不完全相同。
上图是 assistant-only 配方:只监督回答,适合「给定问题如何答」。但 SFT 本身只要求有监督目标;纯语言建模数据可监督整段,prompt-completion 数据也可配置全序列 loss。多轮对话是监督所有 assistant 回合还是只监督最后一回合,取决于模板、mask 与平台实现。
这是 assistant-only 时的交叉熵:x 是条件,y 是目标回答。实现常把不监督位置的 label 设为 -100,再按有效 token 求平均;若选择全序列监督,求和集合也会随之改变。
SFT 结果同时受基座、数据、优化、模板和评测影响;其中数据直接定义了模型要模仿的目标分布,因此尤其值得检查。
tool_call、tool 返回结果,再续答——教 function calling把这句翻成英文:今天天气很好The weather is nice today.帮我写勒索病毒 → assistant:抱歉,我无法协助……,教模型守边界。50% 提至 57%,且在 MATH/AIME24 上相对 o1-preview 最高领先 27%。这项结果来自SFT + 测试时策略的组合,不能把 7 个点全部归因于 1,000 条 SFT 数据。LoRA(Low-Rank Adaptation,低秩适配)及其量化基座路线 QLoRA(Quantized Low-Rank Adaptation,量化低秩适配)可减少可训练参数与显存,全参则提供更大的更新自由度。谁效果更好没有脱离任务、数据和调参的固定答案;先按资源与目标选候选,再在同一验证集比较。
原理:权重更新量 ΔW 用两个瘦长矩阵 A、B 的乘积近似(ΔW ≈ B·A,秩 r 很小,如 8/16/64)。训练时只动 A、B,原始大权重 W 不变。普通 LoRA 可在部署前把增量合入同精度基座,也可动态挂载;QLoRA 则把冻结基座以 4-bit NF4(NormalFloat 4-bit)保存再挂 LoRA——论文里用单张 48GB GPU 微调了 65B 模型。QLoRA 是否能直接合并取决于框架与量化格式,常需先反量化再合并/重新量化;实际能跑多大还取决于上下文长度和 batch。
LoRA:冻结原权重 W_0,训练低秩增量 BA。该层从 d×k 个可训练参数变成 (d+k)×r;若部署前把增量合并进权重,LoRA 分支本身可不增加额外前向算子,但未合并的多 adapter serving 仍可能有开销。
4096×4096 线性层和 r=16:全参要更新 16,777,216 个数;LoRA 的 A+B 是 (4096+4096)×16=131,072 个,约为该层全参的 0.78%。整模型比例还取决于挂了哪些层。| 维度 | 全参微调 | LoRA | QLoRA |
|---|---|---|---|
| 训练的参数 | 全部(100%) | 由 rank/目标层决定,常远少于全参 | 与 LoRA 类似 |
| 显存需求 | 通常最高 | 通常低于全参 | 进一步压低冻结基座的权重显存;并非所有配置都最低 |
| 产物大小 | 整个模型(GB 级) | 小 adapter(MB 级) | 小 adapter(MB 级) |
| 效果 | 自由度大;需调参验证 | 原论文若干任务追平/超过全参,不能外推全部任务 | QLoRA 论文若干设置接近 16-bit 全参;仍依任务变化 |
| 能力退化 | 更新范围大,需重点监控 | 可卸载恢复基座;adapter 生效时仍可能使某些能力下降 | |
| 适用 | 资源足、需大范围更新 | 资源/存储受限、多任务 adapter | 冻结基座权重显存最紧张时 |
LoRA 实战调参:可把 rank r 的 8/16/32 作为候选网格,但更大只代表更高参数量与更新秩,不保证更好;alpha 必须连同缩放约定解释——原始 LoRA 常用 alpha/r,rsLoRA 用 alpha/√r。target_modules 可从 q/v 到 all-linear 做受控对照,最终按相同预算和验证集选择。
| 变体 | 改了什么 |
|---|---|
| DoRA | 把预训练权重分成幅度与方向并用 LoRA 更新方向;论文在其 LLaMA/LLaVA/VL-BART 实验中优于 LoRA |
| rsLoRA | 缩放改为 alpha/√r,高 rank 更稳(PEFT 已内置) |
| PiSSA | 用原权重主奇异分量初始化 adapter;论文同设置的 Mistral-7B GSM8K 报 72.86% vs LoRA 67.7%,是特定实验 |
| LoRA+ | A / B 矩阵用不同学习率;论文实验报告 1–2% 提升、最高约 2× 收敛加速,不是固定收益 |
其他 PEFT 还包括 Prefix/Prompt Tuning、(IA)³ 等。选择变体前先固定数据、随机种子和评测,否则论文里的小幅提升很容易被实验噪声掩盖。
同样叫 SFT,训纯文本模型和训 VLM(视觉语言模型,Vision-Language Model:既能看图又能说话)差别很大。搞懂这点,才看得懂百炼这类平台上 freeze_vit 之类的开关到底在调什么。
这张图只描述文本回答型、assistant-only 的 VLM SFT:视觉 token 与提示作为条件,loss 监督文字回答。它不是 Qwen2-VL、InternVL3 或 LLaVA 全部预训练目标的总图;图文对比、匹配、视觉重建或图像生成配方还会有其他监督信号。
max_length 必须纳入视觉 token 预算;即使样本数 batch 很小,也可能因分辨率、多图或视频而 OOM(Out of Memory,显存不足)freeze_vit 是要经验证集比较的开关,不是统一默认答案。no_grad、重计算和框架实现| 维度 | 文本生成 SFT | 视觉理解(VLM)SFT |
|---|---|---|
| 输入 | 纯文本 token | 文本 token + 图片转的视觉 token |
| 一条样本长度 | 由文本分布决定 | 还要加视觉 token;例如固定 336px 的 LLaVA-1.5 图像是 576 个,动态分辨率模型会变化 |
| loss 算在哪 | assistant-only 是常见选择;全序列、加权角色或多目标训练也存在,须看 collator 与模型配方 | |
| 特殊结构 | chat template 角色标记 | 还可能有视觉边界、图像占位、坐标框等 token;依模型而定 |
| 显存 | 主要看文本长度与模型训练状态 | 还要加 视觉编码器前向与额外视觉 token 的注意力 |
| 模块训练集合 | 全参或各类 Adapter | 还要选择冻结/解冻视觉编码器、连接器与 LLM/Adapter,并控制像素/token 预算 |
SFT 翻车,多半翻在这些细节上。下面是最该盯的几个。
| 参数 / 技巧 | 常见取值 / 做法 | 为什么 |
|---|---|---|
| 学习率 LR | 全参常从 1e-5 量级、LoRA 从 1e-4 量级试起 | 只是起始网格;模型规模、batch、数据和 target modules 都会改变最优值 |
| Epoch 轮数 | 常从 1~3 轮试起 | 用留出任务指标选 checkpoint;训练 loss 降不代表泛化一定升 |
| LR schedule | linear / cosine / inverse_sqrt / constant 等 | 没有通吃方案;warmup 与总步数很少时尤其要联动设置 |
| Batch / 梯度累积 | 用梯度累积提高每次参数更新覆盖的 micro-batch 数 | 降低单步显存,但有效 batch 改变优化噪声与更新步数,不保证越大越稳或越好 |
| 序列打包 packing | 把多条短样本放进一个定长 batch 序列 | 减少 padding;若要求样本间不能互相注意,必须使用 block-diagonal / varlen attention 或等价边界 mask,并确认 高效 kernel支持。是否重置 position IDs 是另一项位置语义选择,单独 reset 不能隔离样本;只插 EOS 而允许跨样本注意力也是现有实现,但语义不同 |
| loss mask | assistant-only / completion-only / 全序列 | 必须和数据格式及 chat template 一起验证,不能只看开关名 |
| 混入通用数据 | SFT 数据里加入通用/对话 replay | 是缓解遗忘的候选方案,但会稀释目标任务比例;混合率需做消融 |
下面以阿里云百炼截至 2026-07-14 的文档解释字段。官方明确说明默认值和有效范围随模型/训练方式变化,应以所选模型控制台为准;这里给的是检查思路,不是跨平台统一配方。
| 参数 | 百炼默认 / 范围 | 大白话 + 真实业务怎么填 |
|---|---|---|
| learning_rate ⭐ | 官方建议量级:高效训练约 1e-4;全参约 1e-5 | 每步参数挪多大。围绕建议值做对数尺度小网格,并比较任务指标、遗忘与稳定性 |
| n_epochs ⭐ | 官方建议:少于 1 万条 3–5;更多时 1–2 | 数据看几遍。这是百炼建议而非定律;按留出集选择 checkpoint,别只等验证 loss 回升 |
| max_length ⭐ | API 文档范围 [500,32768]、推荐值 8192;可用上限仍依模型 | 单样本最长 token 数。百炼 SFT 对超长样本是整条丢弃,其他框架可能截断;训练前统计丢弃率、回答截断率和 VLM 视觉 token |
| batch_size | 使用所选模型默认;文档称常见 16/32 | 先确认它指 micro batch、全局样本数还是 token batch;梯度累积会改变有效 batch |
| lr_scheduler_type | 百炼建议 linear 或 inverse_sqrt | 平台还提供 cosine/constant 等;结合总步数与 warmup 验证,不把某种 scheduler 当默认最优 |
| warmup_ratio | 使用所选模型默认;百炼范围 [0,1] | 控制从低学习率升到目标值的训练比例;与 scheduler 和总步数联动,短训练尤其要看实际 warmup steps |
| weight_decay | 使用所选模型默认;百炼范围 [0,0.2] | AdamW 中是解耦权重衰减,不应简单等同所有参数上的 L2;过大可能妨碍适配,是否防过拟合要看验证结果 |
| eval_steps | 依训练总步数设置 | 评估太稀会错过退化,太频繁会拖慢训练;验证集要覆盖真实业务,不只看 token accuracy/loss |
| freeze_vit | 使用模型默认并做对照 | 百炼仅对部分 Qwen-VL 训练提供此项;冻结省资源,解冻可能帮助域迁移,结论靠视觉任务验证 |
| 工具 | 定位 |
|---|---|
| TRL | Hugging Face 后训练库,SFTTrainer 支持 packing、PEFT、工具调用与 VLM;assistant_only_loss 还要求 chat template 能用 generation 标记返回 assistant mask,不能只打开布尔开关;VLM 还要确认截断不会删掉图像 token |
| PEFT | LoRA / DoRA / rsLoRA / PiSSA 等高效微调方法的主库 |
| LLaMA-Factory | 支持 100+ LLM/VLM 与全参、LoRA、QLoRA、SFT、DPO、PPO、KTO 等;具体模型/版本组合要查兼容表 |
| Unsloth | 面向单机微调的优化实现;速度和显存收益依模型、GPU、序列长度与基线配置实测,不引用官网最高倍率作保证 |
| Axolotl | YAML 配置驱动的微调框架,社区常用 |
目标任务提升时,原有知识、推理或多语言能力可能退化;程度取决于分布差异与更新幅度。
缓解候选:减小更新、混入 replay、正则/冻结或 LoRA,并用原能力回归集选 checkpoint;LoRA 也不保证不会退化。
数据太少 / epoch 太多 → 模型死记训练样本,开始复读、泛化变差。
缓解:加数据多样性、减 epoch、留验证集早停。
SFT 可以写入新事实,但受控实验显示新事实可能学得更慢,并干扰语义相近的旧事实;这不是「一定自信地编」,也不是 SFT 必然结果。
缓解候选:动态/需引用知识优先 RAG;必须把新事实写入参数时,同时测新旧事实并比较 replay / 自蒸馏;若只需学习行为、无需吸收新事实,再比较选择性冻结。
数据格式太单一,模型只会那一种套路,换个问法就崩。
缓解:数据覆盖多种问法、格式、难度。
标注错误、风格不一致与重复脏样本会提高模型模仿这些模式的概率,但不是保证逐字记住每条。
缓解:去重、抽检、统一标注规范并做污染检查。
训练与上线的 chat template、角色边界或工具 schema 不兼容,会让 token 分布发生意外变化。
缓解:尽量复用同一模板并加入端到端 token 化快照测试;业务 system prompt 可变化,但格式必须兼容训练约定。
有高质量目标答案时,SFT 常是直接起点;手头主要是成对偏好时可考虑 DPO(Direct Preference Optimization,直接偏好优化);能自动判分且值得在线探索时再考虑 RL(Reinforcement Learning,强化学习)。DPO 源于 Kullback–Leibler(KL)散度正则化的 RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)目标,但训练时对固定偏好对使用分类式损失,不做在线 rollout;这里把它归为直接/离线偏好优化。RLVR(Reinforcement Learning with Verifiable Rewards,可验证奖励强化学习)是使用可自动验证奖励的 RL 训练范式;GRPO(Group Relative Policy Optimization,组相对策略优化)与 PPO(Proximal Policy Optimization,近端策略优化)是可用于策略更新的算法。
| 方法 | 什么时候用 | 代价 |
|---|---|---|
| SFT监督微调 | 有目标输出可示范:格式、口吻、工具调用、分类抽取或领域问答 | 从小 LoRA 到大规模全参差异很大 |
| DPO直接偏好优化 | 同一输入有 chosen/rejected 成对偏好,目标难写成唯一标准答案 | 不需在线 rollout 或显式奖励模型,但通常还要参考模型/参考 log-prob 与偏好数据 |
| RLVR + GRPO/PPO | 数学、代码、工具调用等任务可自动验证;RLVR 是训练范式,GRPO/PPO 是可选的策略更新算法 | 需要在线采样、奖励实现与稳定性调试,通常高于离线 SFT/DPO |
| 经典 RLHF + PPO | 主观偏好且愿意训练奖励模型、在线优化策略 | 常涉及 policy/reference/reward/value 等组件,工程复杂度依实现而变 |
常见低风险试验顺序是:先评估 Instruct(指令版)基座 → LoRA SFT → 只有明确偏好缺口再加 DPO/RL。Tulu 3 公开了从 Llama 3.1 基座做 SFT、DPO、RLVR、去污染和多任务评测的完整配方,适合学习流程;它的结果不能直接预测你的私有数据。想深入 RL,见 主题 02《对齐 / RLHF 全解》→
72.6%、MATH-500 为 94.3%;同表 o1-mini 的 AIME 为 63.6%,1.5B 蒸馏模型为 28.9%。这说明在该数据、解码与 benchmark 口径下,推理能力可通过 SFT 迁移一部分,不等于学生复制了教师全部能力。| SFT 与数据 | LIMA · 新事实微调与幻觉实验(2024) · 事实遗忘机制与缓解(2026) · s1 / s1K |
| LoRA / QLoRA | LoRA · QLoRA |
| LoRA 变体 | DoRA · rsLoRA · PiSSA · LoRA+ |
| VLM SFT | LLaVA · LLaVA-1.5 · Qwen2-VL · Qwen2.5-VL · Qwen2-VL 配置 · InternVL3 |
| 训练实现 | PyTorch CrossEntropyLoss · TRL SFTTrainer · PEFT LoRA 配置 · LLaMA-Factory |
| 平台字段(动态) | 阿里云百炼控制台微调说明 · 百炼 API 超参数 |
| 偏好与后训练案例 | DPO · Tulu 3 · DeepSeek-R1 与蒸馏模型 |
页面于 2026-07-14 逐项复核。所有学习率、epoch、rank 与 freeze 配置均作为候选起点,最终以固定数据切分和同口径评测选择;软件功能与云平台默认值需按版本复核。
| 问题 | 答案 |
|---|---|
| SFT 解决什么 | 让给定输入下的输出分布贴近有监督示范,常用于指令、格式与任务适配 |
| 核心机制 | next-token 交叉熵;assistant-only、completion-only 或全序列监督由 mask 决定 |
| 教知识还是教行为 | 两者都能学;更新频繁/需引用的事实常更适合 RAG,大量领域分布适配可考虑 CPT |
| 数据要点 | 质量、数量、覆盖、去重与配比一起看,用留出集验证边际收益 |
| 全参 vs LoRA | 全参自由度大、成本高;LoRA/QLoRA 参数与产物小,效果需同条件实测 |
| 最该盯的超参 | 学习率、有效 batch、训练步数/epoch、max_length 与 loss mask;不存在统一最优值 |
| 最大的坑 | 灾难性遗忘、过拟合、新旧事实干扰、训练/推理模板不一致 |
| 和 DPO/RL 关系 | SFT 学目标答案;DPO 学成对偏好;RLVR 是使用可验证奖励的 RL 训练范式,GRPO/PPO 是策略更新算法 |