微调 · 技术问答
微调 · 技术问答
必会
重点 做AI应用需要的微调和基座模型公司做的微调,一般都是什么区别?
口述:名字都叫微调,目标、规模、技术、交付两档。基座公司训通用大脑;应用侧在现成基座上训岗位技能。
基座模型公司(OpenAI、Google、Meta、阿里、DeepSeek、月之暗面)
- 目标 — 通用语言能力,100B+ 参数量级。
- 数据 — 通用语料,万亿 token 级。
- 成本 — 千卡 × 月级。
- 技术 — 继续预训练 → 指令微调 → RLHF / PPO / DPO 对齐。
- 交付 — 公开权重或 API。
AI 应用侧
- 目标 — 垂直任务:固定格式、领域口径、指令遵循、风格。
- 数据 — 高质量指令 / 标注,千~百万条;不是灌万亿 token。
- 成本 — 单卡~数卡,小时~天;LoRA 消费级可摸 7B。
- 技术 — SFT + LoRA / QLoRA 为主;很少继续预训练;知识更新仍靠 RAG。
- 交付 — 私有 adapter 或内网部署,不是训一个新基座。
选型:缺事实先 RAG,缺格式 / 语气 / 固定推理链再微调。口条:基座训通才,应用训专才;别把 LoRA 几千条和 DeepSeek 千卡月级说成一回事。
重点 高效微调有哪些方法?
口述:全参太贵,应用侧走 PEFT:冻结底座,只训很少参数。五种按可训比例从少到多:
| 方法 | 可训比例 | 一句话 | 场景 |
|---|---|---|---|
| Prompt Tuning | <0.01% | 只在输入层加软提示向量 | >10B、资源极紧 |
| P-Tuning v1/v2 | <0.1%~1% | 每层插软提示 | NLU;~10B 也比 Prompt Tuning 稳 |
| Prefix Tuning | ~0.1%~3% | 每层虚拟前缀(常经 MLP) | NLG:对话、摘要、翻译 |
| LoRA | ~1%~10% | 低秩旁路近似 ΔW | 默认首选,LLM / 扩散都常用 |
| QLoRA | ~1%~10% | 4-bit 底座 + LoRA | 单卡摸大模型 |
口条:通用默认 LoRA;卡紧用 QLoRA;软提示别和写 Prompt 混。
重点 LoRA 原理?
口述:LoRA = 大模型的低秩适配器。冻结底座 W,旁路 BA 近似 ΔW,适配下游。小样本(课件:二三十条)还全参,容易过拟合、把大模型带偏。
text
h = Wx + BAx- W — 冻结;A 降维高斯初始化;B 升维零初始化,起步等于原模型。
- 只训 A、B — 参数约
2·d·r。 - 优点 — ① 一份底座 + 多任务小 adapter,省存储;② 推理可并回
W'=W+BA,无额外开销;③ 训练相对稳,小数据比全参少带偏。
口条:冻结 W,旁路 BA;一份底座多任务 adapter;小样本别全参硬刚。
重点 提示词工程 VS RAG VS 微调,什么时候使用?
口述:海量知识预训练 → LLM → 具备各种能力的 AI。用户拿到错误回复时,先诊断错因,再选型——三者不互斥,常组合。
| 错因(课件) | 手段 | 什么时候 |
|---|---|---|
| 没问清楚 | 提示工程 | 意图模糊、格式/口吻不稳、约束没写清;改 prompt、加 few-shot、加 schema 往往就够 |
| 缺乏背景知识 | RAG | 缺私有文档、新事实、要可引用;知识常更新,不该写死进权重 |
| 能力不足 | 微调 | 指令清楚、上下文也给了,仍不会:固定格式、垂直推理、风格/口径要「长在模型里」 |
选型顺序(工程习惯)
- 先 Prompt —— 成本最低、可立刻试。
- 仍缺事实 → RAG —— 知识外置,好更新、好引用。
- 格式 / 风格 / 固定能力仍不够 → 微调(常 LoRA)—— 最贵,最后上。
口条:问不清改 Prompt;没知识上 RAG;真不会再微调。 知识用 RAG,风格用微调;别用微调当知识库。
如何选择微调方法?
口述:按任务要什么选。有标准答案走 SFT;要推理走 GRPO;项目里常先 SFT 再 GRPO。
| 任务 | 例子 | 方法 |
|---|---|---|
| 有标准答案 | 客服、医疗问答 | SFT — 学格式和知识映射 |
| 要推理能力 | 数学、编程 | GRPO — 组内比路径,学推理策略 |
组合:① 先 SFT 定格式和知识;② 再 GRPO 练推理。格式乱时别先上 GRPO。文风 / 偏好对齐另看 RLHF、DPO。
口条:有标准答案上 SFT;要推理上 GRPO;先 SFT 再 GRPO。
进阶
微调显存估算的逻辑是什么?
口述:别只盯参数量。总显存 ≈ 四块相加:
text
总显存 ≈ 模型权重 + 优化器状态 + 梯度 + 前向激活- 模型权重 — 通常 FP16 / BF16 加载,占大头。
参数量(B) × 2 字节。例:7B →7×10⁹×2 ≈ 14 GB(量级口算)。 - 优化器状态 — AdamW 给每个可训参数存动量 m、方差 v 两份。全参 fp32 粗估 8 字节/参数;LoRA 可训参数量
L:L × 4 × 2(课件公式,按 fp32 状态算)。 - 梯度 — 反向存一份,通常 FP16,只跟可训参数走:
L × 2 字节。 - 前向激活 — 前向中间量,反向还要用,跟 batch、seq_len、层数强相关,最难精算。粗估:模型权重显存的 20%~50%;梯度检查点用算力换这块。
LoRA 串起来 — 底座权重仍要放(QLoRA 是 4-bit 底座);2、3 只看旁路 L,很小。全参 7B:权重 ~14G 只是起步,还要叠 Adam + 梯度 + 激活,单卡 24G 往往不够。口条:先拆四块;LoRA 的优化器梯度按 L 算,激活粗估权重的两成到五成。
微调一个 7B 模型需要多少显存?
口述:先问全参还是 LoRA / QLoRA。LoRA 把可训参数压到 L,优化器和梯度很小,大头仍是底座权重。
LoRA 口算例(课件假设:AdamW,L = 1% × 7B = 7×10⁷,batch=1,seq_len=512):
| 块 | 算式 | 约 |
|---|---|---|
| 权重 FP16 | 7×10⁹ × 2 | 14 GB |
| 优化器 | L × 4 × 2 | 0.56 GB |
| 梯度 | L × 2 | 0.14 GB |
| 激活 | 权重 × 30% | 4.2 GB |
| 合计 | ≈ 19 GB |
合并公式(课件):总显存 ≈ (B×2) × (1 + 激活系数) + L×10,激活系数常取 0.2~0.5。
怎么选卡(课件口径,别报成自己压测):
| 规模 / 方式 | 显存 | 卡 |
|---|---|---|
| 7B LoRA | ~19G,24G 够 | 3090 / 4090,batch 还能略加 |
| 7B 全参 | 权重 14G + 全参 Adam/梯度/激活 | 24G 往往不够 |
| 13B LoRA | 权重 alone ~26G | 32G+ 或 QLoRA |
| 7B QLoRA | 权重 B×0.5 字节 + 旁路 | 约 6~8 GB,消费级可跑 |
| 70B | — | QLoRA + 多卡 |
口条:7B LoRA 口算约 19G,24G 卡够;卡紧上 QLoRA 6~8G。
微调数据怎么准备?
口述:先质量、再数量。质量盯两件事:准和杂。
- 准确性 — 答案必须对;错模式也会被学走(垃圾进垃圾出)。
- 多样性 — 口径一致下覆盖多种场景 / 问法,抬泛化。
- 做法 — 约 80% 时间清洗、统一格式、核对答案;1000 条完美远胜 10 万条垃圾。数量按模型与难度定,先约 1000 条试跑,欠拟合再加。
课件量级(经验区间,别说亲测):7B 简单任务 1k~5k(LoRA 偏校准);7B 复杂 5k~5万+;13B~70B 约 1万~10万+;>70B 继续预训练是 GB 级原文,不是指令条数。黄金起点常说 1k~6k 高质量指令。
口条:先准再杂,先质再量;千条干净胜过十万脏。
如何证明微调后的模型变好了?
口述:靠数据集划分 + 独立测试,不能拿训练集自嗨。投入时间、数据、算力,最后要在从未参与训练的数据上,和基座比指标 / 人工评测。
- 训练集 — 喂给 LoRA / SFT 更新权重的那部分。
- 验证集 — 训的过程中看 loss / 指标,调学习率、选 best checkpoint;不能当最终成绩单。
- 测试集 — 全程封存,微调全程不参与;训完只评一次,模拟线上新数据。
流程:基座和微调版在同一测试集上比(任务指标 + 抽样人工看);验证集只用来早停 / 选 epoch。测试集是模型的期末考试,题不能提前泄露。口条:验证调参,测试定案;测试集封存,和基座同卷比。
模型评估有哪些维度?
口述:封存测试集定案之后,从五维看微调值不值,别只盯任务分。
| 维度 | 测什么 | 例子 |
|---|---|---|
| 任务主指标 | 目标任务涨多少 | 分类 Acc/F1;生成 BLEU/ROUGE;QA 的 EM/F1 |
| 通用能力保持 | 有没有灾难性遗忘 | 常识、简单代码、闲聊——微调后别变傻 |
| 泛化能力 | 真学会还是背题 | 换说法、复杂输入、带干扰的指令 |
| 人工评估 | 生成质量金标准 | 流畅、相关、有用;对话创意类数字指标不够 |
| 输出质量分析 | 个案定性 | 变好典型 + 仍失败 / 退步样例,指导下轮迭代 |
任务指标是硬杠;通用能力防「专了但蠢了」;泛化防过拟合训练口径;人工补指标盲区;失败案例分析最直接。口条:五维一起看:任务涨、通用不掉、换说法还行、人觉得有用、失败样本能讲清。
了解
什么是低秩特性?
口述:矩阵像大 Excel。秩 = 表里独立、没法互相拼出来的最少基本信息。秩越低,冗余越高,越好压。
- 高秩 — 行列花样多、没套路,一百万个数得全存。
- 低秩 — 行与行相关(如每行是第一行的倍数),存几行底料就能还原整表。
- 类比 — 全球气温不必存每城每分钟,纬度 / 季节等少数因子就能估。
LoRA 假设微调时的 ΔW 低秩,不是说底座 W 本身低秩。口条:秩低就能压;LoRA 压的是 ΔW。
什么是内在的低秩特性?
口述:LoRA 假设落在 ΔW 上,不是底座 W。学新任务时权重要动,调整量叫 ΔW;矩阵可以很大,有效改动却很集中。
对真实微调的 ΔW 做 SVD:奇异值衰减极快,绝大多数近 0,只有前几个大 → 有用信息在少数方向,其余可丢。这就是 LoRA 能用 BA(小秩 r)近似 ΔW 的核心假设。
口条:ΔW 看起来很大,有效方向很少;SVD 前几个奇异值扛事。
什么是矩阵分解?
口述:把一个大矩阵写成几个小矩阵的乘积,用来压缩、抓住主要方向。LoRA 的 ΔW ≈ BA 就是低秩分解。
- 参数怎么省 —
d×d直接存要d²;拆成B_(d×r)·A_(r×d)只要2·d·r。例:d=1000, r=8→ 100 万变 1.6 万。 - SVD(分析) —
M = UΣVᵀ,奇异值从大到小;只留前 r 个得秩-r 近似。用来验证 ΔW 内在低秩,不是训练每步都算。 - LoRA(训练) — 不现场做 SVD,直接把更新参数化成可学习的
BA,只训 A、B。
口条:大矩阵 = 小矩阵相乘;SVD 发现低秩,LoRA 用 BA 学低秩。 别和推荐系统里的 User×Item 分解搅成同一个项目故事。
矩阵分解的目标函数是什么?
口述:找小矩阵 B、A,让 BA 尽量贴近大矩阵 M,重建误差最小:
text
min ‖ M − BA ‖_F² (+ λ 正则)‖·‖_F² = 所有格子误差平方和;秩卡在 r ≪ d。
BA 对两边同时优一般非凸 → 工程迭代:
- ALS — 交替最小二乘:固定一边解另一边,来回交替。
- SGD — 随机梯度下降:对误差求梯度迈步(深度学习同款)。
M 完整时截断 SVD 可给最优秩-r 近似。LoRA 只借用 ΔW=BA 这种形式,真正优化的是任务 loss,不是去拟合一张现成的 ΔW 表。
口条:目标 = 低秩重建误差最小;ALS 交替,SGD 迈步。
ALS(交替最小二乘法)是什么?
口述:ALS = Alternating Least Squares。两个因子 X、Y(即前文 B、A)不能一起闭式最优,就一次只动一个。
- Step1 — 固定
Y,优化X(线性最小二乘)。 - Step2 — 固定
X,优化Y(同上)。 - 重复 直到
X、Y收敛。
每次固定一边,子问题都是最小二乘,好解、稳。经典协同过滤常用;LoRA 微调一般不用 ALS,而是 Adam 等 SGD 变体训 A、B。
口条:固定一边,最小二乘解另一边;两边交替到收敛。
奇异值分解 SVD 是什么?
口述:SVD 把任意矩阵拆成 M = U Σ Vᵀ。U、V 是正交方向,Σ 对角线上的奇异值从大到小,表示每个方向有多重要。
- 截断 — 只留前
r个:M ≈ U_r Σ_r V_rᵀ,Frobenius 意义下是最优秩-r 近似(Eckart–Young)。 - 低秩 — 奇异值衰减快 ⇒ 很小的
r就能还原大部分;对 ΔW 做 SVD 就是在验证「内在低秩」。 - 和 LoRA — SVD 是分析工具;LoRA 训练时不算 SVD,直接学
BA。M完整用截断 SVD;缺项 MF 用 ALS;神经网络用 SGD。
口条:M = UΣVᵀ;奇异值越大越重要,截断得最优低秩近似。
为什么需要数据质量评估?
口述:微调效果被数据质量直接卡住——垃圾进,垃圾出。数据到十几万、几十万条,没法靠人肉眼扫完,必须有一套可量化的指标,衡量整库「健不健康」,才能决定洗不洗、洗哪里、能不能开训。
- 质量定效果 — 答案错、格式乱,模型照学;后面换 r、加 epoch 救不回来。
- 规模使人检失效 — 抽几条能做抽样,不能代表全库分布。
- 要可量化 — 长度、语种、完整率、重复率等写成仪表盘 / 评分卡,团队才有共同语言。
口条:垃圾进垃圾出;量大必须量化体检,不能只靠抽查。
数据质量评估的核心维度有哪些?
口述:质量体检三块——统计看形、语义看义、综合打分定级。
- 统计维度 — 文本长度分布、语种一致性(如中文字符占比)、格式合规率、字段完整率。看「长什么样、缺不缺、规不规」。
- 语义维度 — 类别 / 场景分布是否多样;重复率检测(近重复、模板复读)。看「杂不杂、是不是同一句话抄一万遍」。
- 综合评分 — 0~100 评分卡,或 A/B/C/D 定级,把上面指标合成「能不能开训」的一句话结论。
和「微调数据准备」的准、杂对应:统计偏格式与完整,语义偏多样与去重,综合分给门禁。口条:统计看形,语义看义,评分卡一锤定级。
数据质量的自动化评估指标有哪些?
口述:这里说的是数据侧自动体检,不是 BLEU 那种模型输出指标。统计四件套可脚本跑全库,再合成 0~100 评分卡。阈值是课件经验(如中文医疗),业务可改,别背成宇宙真理。
统计维度(可自动化)
1. 文本长度分布
- 算问答的最短 / 最长 / 平均 / 中位数。
- 异常:过短(课件 <10 字)可能无意义;过长(课件 >1000 字)可能夹噪。
- 看整体形状用 P10、P90 分位数,别只看平均。
2. 语言一致性
- 逐条统计中文字符占比(中文医疗等场景期望以中文为主)。
- 课件分档:中文占比 >80% 判中文;<20% 判英文;中间判中英混合。
- 目标库整体中文字符占比常要求 >95%(中文任务)。
3. 格式合规率
- Alpaca:必须有
instruction、input、output。 - Chat:必须有
messages,且含user/assistant。 output/answer不能为空。
4. 字段完整性
- 逐字段统计空值率 / 填充率。
- 课件:填充率 >99% 算高完整;<95% 要重点排查。
语义侧自动化常见:重复率(唯一性)、类别覆盖(多样性)。开训前先过长度、语种、格式、完整四件套,别和 BLEU 混成同一套「评估」。
BLEU(Bilingual Evaluation Understudy)评估
口述:BLEU 最初评机器翻译,现也用于文本生成。输出和参考比 N-gram 重合度;分数越高越像参考。
句子例:我 最近 经常 头晕 → 1-gram 逐词;2-gram 相邻两词;一直到 4-gram。
BLEU 计算步骤
- 分词 — 中文 jieba;英文按空格。
- 各阶 N-gram 精度 — 1~4 gram 分别算精确率(相对参考)。
- 加权几何平均 — 权重通常均分,合成一个数。
- × 简短惩罚 BP — 生成过短扣分,防刷极短高精。
同测试集比基座 vs 微调才有意义;跨数据集别横比绝对分。
BLEU 能完全反映质量吗?局限性有哪些?
不能。 课件四点:
- 事实正确性 — 「吃感冒药」vs「吃毒药」,N-gram 可能很像,事实完全不同。
- 安全合规 — 医嘱有没有害,BLEU 看不出。
- 同义表达 — 「发烧」vs「体温升高」,意思同、字面不同,分可能很低。
- 语序不敏感 — 词序打乱、句子不通,分数未必掉。
口条:分词 → 各阶精度 → 几何平均 → ×BP。 BLEU 不看事实、安全、同义;定案加人工。
实际项目中如何结合自动评估和人工评估?
口述:按生命周期分三阶段——自动快跑、人工把关、上线后用真实反馈。
- 开发阶段 — 自动评估快速迭代:BLEU + 数据质量报告。
- 上线前 — 人工评估把关:抽样 100~200 条,多人交叉评事实 / 安全 / 有用。
- 上线后 — 用户反馈持续改进:点赞 / 点踩 → 收集真实偏好,回流下一轮训练与清洗。
口条:开发靠自动快跑,上线前人工把关,上线后点赞点踩回流。
模型评估的步骤是什么?
口述:评估分三阶段,和上一节五维对应——先划数据,训中用验证集,训完用测试集定案。
准备阶段
原始数据预先切成验证集 + 测试集;测试集从这一刻起封存,微调全程不参与。
训练中
用验证集盯曲线、防过拟合、选 best checkpoint。训练集指标还在涨、验证集开始掉 → 可能过拟合,该早停或调学习率 / 数据。验证集不能当最终报告。
训练后
- 跑测试集主指标 — 基座 vs 微调版同一测试集,记录任务主指标。
- 测通用与泛化 — 通用能力(常识、代码、闲聊)+ 换说法 / 复杂输入,看有没有遗忘、有没有背题。
- 人工抽检 + 个案分析 — 从测试集和通用 / 泛化集抽样,看流畅、相关、有用;挑变好 / 失败样例做定性。
- 综合判定 — 五维一起看:主指标明显涨,通用能力没有明显掉,才算微调成功。
口条:准备封存测试集,训练盯验证集,训完基座微调同卷比、再测通用泛化、人抽检定案。
对话大模型的训练过程是什么样的?关键是什么?
口述:垂直对话大模型 = 数据收集 + 训练流水线。关键:合适基座 + 高质量训练数据(先质后量;Textbooks Are All You Need 口径)。高质量靠对已有数据过滤筛选。
五步过程
- 基础大模型 — 开源基座选型。
- 数据加工 — 高质量对话、事实校验、安全合规过滤。
- 微调 + RLHF — 标注、按业务对齐。
- 提示工程 / 定制对齐 — 模板与提示打磨。
- 对话效果评估 — 客观 + 主观测试集。
数据侧 — 垂直对话通常攒:优质历史会话、业务文档、规则话术、必要的技术说明。筛:源头选优、敏感过滤、丢掉无意义轮次、保证完整逻辑闭环。更细演练见微调课件(仓库内课程练习,不对外发布)。
口条:选型 → 加工 → 微调对齐 → Prompt → 评估;关键是合适基座 + 筛过的高质量数据。
垂直大模型选型:预训练好的 / 基座 / 中英文怎么选?
这是什么问题? 垂直大模型的起点选型与训练路线,不是榜单选美。
总标题: 垂直大模型训练方案与起点选型策略
垂直三条路:重训 / 微调(局部 LoRA vs 全参)/ 应用(先 Prompt、RAG)。
| 条件 | 选什么 |
|---|---|
| 数据少 | 预训练好的起点,借知识迁移;常局部微调 |
| 数据大且质高 | 可从基座开训或全参;预训域不匹配时硬套旧向量可能掉点 |
| 强中文 | 优先中文 / 双语底座 |
| 只有英文强底座 | 扩词表(BPE)+ 全参微调(课件策略例) |
课件量级:约 32h/epoch,4~6 epoch,大约一周量级上线——说明全参贵,别说亲测。
结果: 小数据借预训练迁移;大数据质高可从基座全参;语种跟业务对齐;能应用先应用,要改能力再微调,要换骨再重训。
口条:小数据借预训练;大数据质高从基座;语种跟业务对齐。
Unsloth:LLM 高效微调是什么?
口述:开源 LLM 高效微调工具(unslothai/unsloth)。加速 LoRA / QLoRA,省显存;原理还是旁路低秩,它是工程加速层。
课件宣称(别说亲测):Llama / Mistral / Qwen;约 2~5× 更快、显存省 50%~80%;1.5B≈7GB、15B≈15GB;集成 GRPO;支持 LoRA/QLoRA;导出 GGUF / Ollama / vLLM;有免费 Colab;可量化到 BF16、Q4 等。
口条:Unsloth = 省显存加速的 LoRA/QLoRA 工具箱;可接 GRPO,导出进 Ollama/vLLM。
常见 LLM Benchmark 有哪些?
答题要点
- 综合:MMLU。数学:GSM8K、竞赛级 AIME。代码:HumanEval。难推理:GPQA。
- 多模态:MMMU、视频类评测。体验:LMSYS Arena Elo。
- 岗位评测仍要用自己的黄金集,榜不是业务。
微调 VLM 和纯文本有何不同?
答题要点
- 用视觉版加载器,不是纯文本 FastLanguageModel。
- LoRA 同时动视觉编码和语言解码。
- 数据是 message 列表,content 含 text + image。
- Collator 要用视觉专用的。