微调是"把通用模型改造成业务模型"的必经之路,也是算法岗面试几乎必问的一块。本文按一条真实项目链路组织:先判断该不该微调(和 RAG/提示词的边界在哪)→ SFT 与指令数据怎么准备、损失怎么观察 → LoRA/QLoRA 为什么是默认选择、原理是什么 → 从 RLHF 到 DPO 的对齐演进与各自坑 → 全参 vs PEFT 的训练工程取舍,最后给两道微调系统设计手撕题的答题骨架。
面试一上来最常问:什么时候该微调,什么时候提示词/RAG 就够了?必答
判断三问:① 知识型还是能力型——模型只是"不知道"某份事实/私有资料,RAG 喂进去更便宜、可随时更新、无遗忘风险;模型是"行为/格式/推理范式不对",才需要微调改行为。② 要不要跟随指令模板稳定输出——比如要它永远按固定 JSON schema 出结果、严格说某种话术,微调比每次提示词稳定。③ 算力和维护成本兜不兜得住——微调要数据、要训练机、要评测回归、模型要维护多份。答出"知识靠 RAG、行为靠微调、轻量尝试靠提示词"这个分流,再补一句"先提示词 + RAG 压测到瓶颈,确定是能力缺口再上微调",是区分点。
那"微调让模型学到新知识"这个说法对吗?必答
对一半,坑就在这。微调确实能把高频事实"记进"权重,但代价高:一条知识要多次重复才可能记住,还会污染原有能力(灾难性遗忘),且新知识无法快速更新(改一条要重训)。所以生产共识是事实性新知识优先走 RAG 外挂,微调主要改"行为/风格/格式/领域语言";真想给模型灌领域,做法是把领域知识整理成 RAG 语料 + 微调学"怎么用这些语料回答",而不是直接背。
SFT(监督微调)数据准备最容易被忽略的是哪几点?必答
不是"量越大越好",而是:① 质量 > 数量:几千条高质量对齐示例常好过几十万条网上抓的脏数据,脏数据(答非所问、有错)直接教坏模型;② 多样性 > 重复:同一模板刷屏会让模型只会一种说法,要覆盖输入形态/难度/边界情形;③ 只对答案 token 算损失:指令/用户输入通常要 mask,别让模型去"背问题";④ 格式即能力:要它最终按 JSON 出,示例就必须是 JSON 收尾,连终止符习惯都会被学到。答出"mask 掉 prompt、只管 answer 的交叉熵"是加分细节。
训练时盯哪些信号?loss 降了就是好吗?必答
loss 要降,但别只看它:① 训练 loss 降、验证 loss 不降 → 过拟合,先看是不是数据重复/学习率太大/轮次太多;② loss 震荡/不降 → 学习率、batch、数据配比问题,先查脏数据;③ 微调要防"遗忘基座能力"——在微调任务集之外留一份"通用能力"评测集(通用问答/推理/格式),每轮都跑,别让领域能力上来、通用能力掉下去;④ 业务能直接评测的最好在训练中就抽样评测(如正确率/通过率),loss 与业务指标方向不一致时以业务为准。核心一句话:loss 是训练信号,业务评测才是验收标准。
LoRA 为什么"训得动大模型"?低秩假设是什么?必答
全参微调要更新并存储整份权重(7B 就有几十 GB 梯度/优化器态)。LoRA 的核心假设:微调对权重的更新量 ΔW 是低秩的,不需要在 full 秩空间更新。于是把 ΔW 分解成两个小矩阵 A×B(A 降维、B 升维),训练时冻结原权重、只训 A/B 两个小矩阵,秩 r 通常几十。好处:可训练参数量从全部变成 ~0.1%–1%;多个任务可各存一份小 adapter,推理时按需叠加/切换,不用各自存整份模型;训练完可把 adapter 合并回权重零额外推理开销。要补一句"低秩更新为什么够用——微调相对预训练只做小的方向性修正,不需要 full-rank 表示变化"。
QLoRA 在 LoRA 之上又省了什么?NF4 是干嘛的?必答
QLoRA 让单卡也能微调大模型,三板斧:① 把冻结的基座权重量到 4bit(NF4:normal float,按正态分布分桶的 4bit 格式,比均匀 INT4 在权重分布上更省精度),基座显存从几十 GB 降到几 GB;② 训练时做反量化计算——权重存 4bit、前向时解回更高精度参与运算,LoRA adapter 本身仍用 BF16 训练保持精度;③ 双重量化 + 分页优化器:连量化常数也压一压、优化器状态溢出时换到 CPU 显存,进一步省。落点:QLoRA 是在"低精度存基座 + 高精度训 adapter"之间找平衡,单卡 24GB 就能微调 7B/13B 量级的模型,是没集群团队的默认起手式。
LoRA 的秩 r、作用在哪些层,怎么调?进阶
r 太小表达力不足、r 过大又回到"接近全参的显存/过拟合"。实践口径:r 常从 8/16 起步,任务复杂或数据大再往上加;adapter 加在注意力层的 Q/K/V/O 投影上是基配,加不加 MLP 层、加几层,用任务评测对比而非拍脑袋。区分点:能讲"r 与任务复杂度/数据量的关系 + 用评测集定 r + adapter 合并后误差可忽略",比背默认值强。
SFT 之后为什么还要 RLHF?它四步在干嘛?必答
SFT 只是"学人类怎么答",没有直接优化"哪个回答更好",且只见过标注示例、没见过开放式生成被怎么评价。RLHF 把"好"显式建模:① 先训练奖励模型——拿人类对同一提示多个回答的偏好排序学一个打分器;② 用 PPO 让策略模型生成回答、按奖励模型打分去更新——但直接最大化奖励会钻空子,所以引入参考模型 + KL 惩罚:策略不能离 SFT/参考模型太远,防它为了高分输出乱码/谄媚;③ 迭代收集新偏好再训奖励模型。面试要点:RLHF 的本质是"把人类偏好做成可优化的奖励信号",PPO 只是载体,KL 约束是防止 reward hacking 的关键。
DPO 为什么"不需要奖励模型和 PPO"?代价是什么?必答
DPO 的关键推导:在 RLHF 的"KL 约束 + 奖励最大化"目标里,最优策略和奖励函数之间存在闭式解——于是可以把奖励函数消掉,直接写成"偏好数据上的分类损失":让 chosen 回答的 log-prob 高于 rejected、且差值受参考模型约束。结果:不需要训练奖励模型、不需要 RL 采样/PPO 稳定性调参,一份偏好数据直接训,工程简单太多。代价:① 没有显式奖励信号,难处理"排序之外"的复杂反馈;② 对偏好数据质量更敏感;③ 仍可能"过优化"——偏好里 chosen 若本身有错会被放大。面试落点:DPO 是"RLHF 的闭式等价物",不是完全不同的东西——能把这层关系讲出来最加分。
reward hacking / 奖励作弊是什么意思?怎么防?进阶
奖励模型是近似,策略会找到"高分但实际很糟"的回答——典型:话越长越谄媚、堆砌关键词、输出模型觉得"人喜欢听"的套话,而真实质量没提升甚至下降。防护四件套:① KL 约束别让它离参考太远;② 奖励模型要够好、覆盖要广,别只在训练分布里自嗨;③ 训练中持续用真实业务/人工抽样评测盯"奖励分上去了、业务指标有没有跟",别只信 RM 分;④ 对过度优化设上限、必要时回滚到中间 checkpoint。能主动讲"奖励信号是近似、必须在训练中防作弊并回归真实验收",是有对齐经验的人才会说的。
全参微调和 PEFT 各自的显存/成本账怎么算?什么时候全参才值得?必答
一张 7B 在 BF16 全参训练,显存大头=权重 + 梯度 + 优化器态(Adam 每参数 2 份态),再加激活,通常要 ~70–140GB+,单卡 24GB 根本放不下 → 必须上ZeRO/张量并行/流水并行这类分布式;LoRA 冻结基座只训 adapter,优化器态只对 ~0.1–1% 参数,单卡/小规模卡组就能训。什么时候全参值得:数据量大且任务离基座分布远、需要最大表达力、且你有集群与调参预算;否则 PEFT 先用。区分点:能把"参数 训练态(梯度+优化器)才是显存大头、冻结参数就免掉这些态"讲清,比背 ZeRO 名词有说服力。
ZeRO 是什么思路?它和"模型并行"差在哪?进阶
ZeRO 解决"显存塞不下"的另一种切法:数据并行每个卡都存全量参数+优化器态,冗余严重。ZeRO 把这套状态按卡切分——每卡只存一份分片(Stage1 切优化器、Stage2 再加梯度、Stage3 连参数也切,用时 all-gather 取回)——显存随卡数线性降,计算几乎不变。它区别于模型并行:模型并行是把"每层的权重切开、不同卡算不同分片"(层内张量切),ZeRO 是"每卡都有全部层、只是不重复存状态、通信换显存"。答出"ZeRO 是存-算解耦、用通信换显存,不是把模型切成几块各算各的",说明真用过。
"给一个垂直领域客服模型做微调上线"——你从哪几层答?加分
按"数据→训练→评测→回流"铺:① 判断:先明确是"知识缺"(领域 FAQ 走 RAG)还是"行为不对"(话术/拒答/格式),只对后者微调,别把整库倒进权重;② 数据:历史客服对话清洗成 (指令, 期望回答),质控 + 去重 + 多样性抽样,敏感/隐私信息脱敏,标注不好的先让人重写;③ 训练:LoRA/QLoRA 起手,mask 掉 prompt,小学习率跑少量 epoch,留一份通用能力评测防遗忘;④ 评测:业务指标(解决率/转人工率/满意度抽样)+ 领域基准集正确率 + 拒答率,配 LLM-as-judge 粗筛 + 人工抽样复核;⑤ 回流:线上 bad case 定期捞回补进训练集,形成"发现→补数据→重训→上线"闭环。落点:微调上线 = 数据运营 + 评测闭环,训练本身只是中间一步。
"模型总爱一本正经胡说(幻觉)/ 该拒答时不拒,怎么用对齐手段压?"加分
先分清两类病:① 事实幻觉——本质常是"拿不准也在编",第一手段是 RAG/溯源让它"能查就查、查不到就说不知道",再叠加 SFT/DPO 教它"低置信时给不确定性/拒答"的行为;② 该拒不拒 / 越界答——这是边界行为,直接造"违规/越界请求 → 得体拒绝"的成对数据,用 DPO 训"拒答是更优选择"。别指望一次对齐全治好:用评测集盯"合规拒绝率 vs 正常问题误拒率",过度对齐会变成什么都拒,要平衡。能给"事实靠外挂、行为靠对齐、误拒靠评测调"这个分工,是有落地经验的话。
面向大模型算法 / 应用工程师,以及要做模型定制化的后端与算法岗。偏模型训练的岗位在此基础上叠加分布式训练细节(见「全参 vs PEFT」「ZeRO」两节)。
理论按本文自查;动手用 Colab/Kaggle 免费卡 + QLoRA 微调一个小模型(如 7B 量级以下),任务就选"学会输出指定 JSON"这类能自测的,把数据怎么准备、loss 怎么观察、跑完比没跑前好在哪讲成你自己的实验即可,不必有集群。
关注小红书「兔老板工作室」私信「资料」免费领真题 PDF;官网 llms.txt 与课程页有完整微调对齐大纲与 FAQ 可免费读。
微调岗很吃自己真跑过的实验:用免费算力完成一次小模型 QLoRA 微调,记录数据量、显存、loss 与业务效果的变化曲线,这是最硬的面试项目;能用中英双语讲更稳,需要带练的可远程约课。
📚 免费系列长文:大模型算法岗高频考点清单 · RAG 面试 10 问 · AI Agent 面试 · 大模型微调对齐考点 · 大模型推理优化考点 · 大厂头部人才计划对比 · 简历与项目避坑指南 · 美国留学华人AI求职 · AI Infra 免费刷题题库