Skip to content

微调 · 技术问答

微调 · 技术问答

必会

重点 做AI应用需要的微调和基座模型公司做的微调,一般都是什么区别?

口述:名字都叫微调,目标、规模、技术、交付两档。基座公司训通用大脑;应用侧在现成基座上训岗位技能。

基座模型公司(OpenAI、Google、Meta、阿里、DeepSeek、月之暗面)

  1. 目标 — 通用语言能力,100B+ 参数量级。
  2. 数据 — 通用语料,万亿 token 级。
  3. 成本 — 千卡 × 月级。
  4. 技术 — 继续预训练 → 指令微调 → RLHF / PPO / DPO 对齐。
  5. 交付 — 公开权重或 API。

AI 应用侧

  1. 目标 — 垂直任务:固定格式、领域口径、指令遵循、风格。
  2. 数据 — 高质量指令 / 标注,千~百万条;不是灌万亿 token。
  3. 成本 — 单卡~数卡,小时~天;LoRA 消费级可摸 7B。
  4. 技术 — SFT + LoRA / QLoRA 为主;很少继续预训练;知识更新仍靠 RAG。
  5. 交付 — 私有 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
  1. W — 冻结;A 降维高斯初始化;B 升维零初始化,起步等于原模型。
  2. 只训 A、B — 参数约 2·d·r
  3. 优点 — ① 一份底座 + 多任务小 adapter,省存储;② 推理可并回 W'=W+BA,无额外开销;③ 训练相对稳,小数据比全参少带偏。

口条:冻结 W,旁路 BA;一份底座多任务 adapter;小样本别全参硬刚。

重点 提示词工程 VS RAG VS 微调,什么时候使用?

口述:海量知识预训练 → LLM → 具备各种能力的 AI。用户拿到错误回复时,先诊断错因,再选型——三者不互斥,常组合。

错因(课件)手段什么时候
没问清楚提示工程意图模糊、格式/口吻不稳、约束没写清;改 prompt、加 few-shot、加 schema 往往就够
缺乏背景知识RAG缺私有文档、新事实、要可引用;知识常更新,不该写死进权重
能力不足微调指令清楚、上下文也给了,仍不会:固定格式、垂直推理、风格/口径要「长在模型里」

选型顺序(工程习惯)

  1. 先 Prompt —— 成本最低、可立刻试。
  2. 仍缺事实 → RAG —— 知识外置,好更新、好引用。
  3. 格式 / 风格 / 固定能力仍不够 → 微调(常 LoRA)—— 最贵,最后上。

口条:问不清改 Prompt;没知识上 RAG;真不会再微调。 知识用 RAG,风格用微调;别用微调当知识库。

如何选择微调方法?

口述:按任务要什么选。有标准答案走 SFT;要推理走 GRPO;项目里常先 SFT 再 GRPO。

任务例子方法
有标准答案客服、医疗问答SFT — 学格式和知识映射
要推理能力数学、编程GRPO — 组内比路径,学推理策略

组合:① 先 SFT 定格式和知识;② 再 GRPO 练推理。格式乱时别先上 GRPO。文风 / 偏好对齐另看 RLHF、DPO。

口条:有标准答案上 SFT;要推理上 GRPO;先 SFT 再 GRPO。

进阶

微调显存估算的逻辑是什么?

口述:别只盯参数量。总显存 ≈ 四块相加

text
总显存 ≈ 模型权重 + 优化器状态 + 梯度 + 前向激活
  1. 模型权重 — 通常 FP16 / BF16 加载,占大头。参数量(B) × 2 字节。例:7B → 7×10⁹×2 ≈ 14 GB(量级口算)。
  2. 优化器状态AdamW 给每个可训参数存动量 m、方差 v 两份。全参 fp32 粗估 8 字节/参数;LoRA 可训参数量 LL × 4 × 2(课件公式,按 fp32 状态算)。
  3. 梯度 — 反向存一份,通常 FP16,只跟可训参数走:L × 2 字节
  4. 前向激活 — 前向中间量,反向还要用,跟 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):

算式
权重 FP167×10⁹ × 214 GB
优化器L × 4 × 20.56 GB
梯度L × 20.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 ~26G32G+ 或 QLoRA
7B QLoRA权重 B×0.5 字节 + 旁路约 6~8 GB,消费级可跑
70BQLoRA + 多卡

口条:7B LoRA 口算约 19G,24G 卡够;卡紧上 QLoRA 6~8G。

微调数据怎么准备?

口述:先质量、再数量。质量盯两件事:

  1. 准确性 — 答案必须对;错模式也会被学走(垃圾进垃圾出)。
  2. 多样性 — 口径一致下覆盖多种场景 / 问法,抬泛化。
  3. 做法 — 约 80% 时间清洗、统一格式、核对答案;1000 条完美远胜 10 万条垃圾。数量按模型与难度定,先约 1000 条试跑,欠拟合再加。

课件量级(经验区间,别说亲测):7B 简单任务 1k~5k(LoRA 偏校准);7B 复杂 5k~5万+;13B~70B 约 1万~10万+;>70B 继续预训练是 GB 级原文,不是指令条数。黄金起点常说 1k~6k 高质量指令

口条:先准再杂,先质再量;千条干净胜过十万脏。

如何证明微调后的模型变好了?

口述:靠数据集划分 + 独立测试,不能拿训练集自嗨。投入时间、数据、算力,最后要在从未参与训练的数据上,和基座比指标 / 人工评测。

  1. 训练集 — 喂给 LoRA / SFT 更新权重的那部分。
  2. 验证集 — 训的过程中看 loss / 指标,调学习率、选 best checkpoint;不能当最终成绩单。
  3. 测试集 — 全程封存,微调全程不参与;训完只评一次,模拟线上新数据。

流程:基座和微调版在同一测试集上比(任务指标 + 抽样人工看);验证集只用来早停 / 选 epoch。测试集是模型的期末考试,题不能提前泄露。口条:验证调参,测试定案;测试集封存,和基座同卷比。

模型评估有哪些维度?

口述:封存测试集定案之后,从五维看微调值不值,别只盯任务分。

维度测什么例子
任务主指标目标任务涨多少分类 Acc/F1;生成 BLEU/ROUGE;QA 的 EM/F1
通用能力保持有没有灾难性遗忘常识、简单代码、闲聊——微调后别变傻
泛化能力真学会还是背题换说法、复杂输入、带干扰的指令
人工评估生成质量金标准流畅、相关、有用;对话创意类数字指标不够
输出质量分析个案定性变好典型 + 仍失败 / 退步样例,指导下轮迭代

任务指标是硬杠;通用能力防「专了但蠢了」;泛化防过拟合训练口径;人工补指标盲区;失败案例分析最直接。口条:五维一起看:任务涨、通用不掉、换说法还行、人觉得有用、失败样本能讲清。

了解

什么是低秩特性?

口述:矩阵像大 Excel。 = 表里独立、没法互相拼出来的最少基本信息。秩越低,冗余越高,越好压。

  1. 高秩 — 行列花样多、没套路,一百万个数得全存。
  2. 低秩 — 行与行相关(如每行是第一行的倍数),存几行底料就能还原整表。
  3. 类比 — 全球气温不必存每城每分钟,纬度 / 季节等少数因子就能估。

LoRA 假设微调时的 ΔW 低秩,不是说底座 W 本身低秩。口条:秩低就能压;LoRA 压的是 ΔW。

什么是内在的低秩特性?

口述:LoRA 假设落在 ΔW 上,不是底座 W。学新任务时权重要动,调整量叫 ΔW;矩阵可以很大,有效改动却很集中。

对真实微调的 ΔW 做 SVD:奇异值衰减极快,绝大多数近 0,只有前几个大 → 有用信息在少数方向,其余可丢。这就是 LoRA 能用 BA(小秩 r)近似 ΔW 的核心假设。

口条:ΔW 看起来很大,有效方向很少;SVD 前几个奇异值扛事。

什么是矩阵分解?

口述:把一个大矩阵写成几个小矩阵的乘积,用来压缩、抓住主要方向。LoRA 的 ΔW ≈ BA 就是低秩分解。

  1. 参数怎么省d×d 直接存要 ;拆成 B_(d×r)·A_(r×d) 只要 2·d·r。例:d=1000, r=8 → 100 万变 1.6 万。
  2. SVD(分析)M = UΣVᵀ,奇异值从大到小;只留前 r 个得秩-r 近似。用来验证 ΔW 内在低秩,不是训练每步都算。
  3. LoRA(训练) — 不现场做 SVD,直接把更新参数化成可学习的 BA,只训 A、B。

口条:大矩阵 = 小矩阵相乘;SVD 发现低秩,LoRA 用 BA 学低秩。 别和推荐系统里的 User×Item 分解搅成同一个项目故事。

矩阵分解的目标函数是什么?

口述:找小矩阵 B、A,让 BA 尽量贴近大矩阵 M,重建误差最小:

text
min  ‖ M − BA ‖_F²  (+ λ 正则)

‖·‖_F² = 所有格子误差平方和;秩卡在 r ≪ d

BA 对两边同时优一般非凸 → 工程迭代:

  1. ALS — 交替最小二乘:固定一边解另一边,来回交替。
  2. SGD — 随机梯度下降:对误差求梯度迈步(深度学习同款)。

M 完整时截断 SVD 可给最优秩-r 近似。LoRA 只借用 ΔW=BA 这种形式,真正优化的是任务 loss,不是去拟合一张现成的 ΔW 表。

口条:目标 = 低秩重建误差最小;ALS 交替,SGD 迈步。

ALS(交替最小二乘法)是什么?

口述:ALS = Alternating Least Squares。两个因子 XY(即前文 BA)不能一起闭式最优,就一次只动一个

  1. Step1 — 固定 Y,优化 X(线性最小二乘)。
  2. Step2 — 固定 X,优化 Y(同上)。
  3. 重复 直到 XY 收敛。

每次固定一边,子问题都是最小二乘,好解、稳。经典协同过滤常用;LoRA 微调一般不用 ALS,而是 Adam 等 SGD 变体训 AB

口条:固定一边,最小二乘解另一边;两边交替到收敛。

奇异值分解 SVD 是什么?

口述:SVD 把任意矩阵拆成 M = U Σ VᵀUV 是正交方向,Σ 对角线上的奇异值从大到小,表示每个方向有多重要。

  1. 截断 — 只留前 r 个:M ≈ U_r Σ_r V_rᵀ,Frobenius 意义下是最优秩-r 近似(Eckart–Young)。
  2. 低秩 — 奇异值衰减快 ⇒ 很小的 r 就能还原大部分;对 ΔW 做 SVD 就是在验证「内在低秩」。
  3. 和 LoRA — SVD 是分析工具;LoRA 训练时不算 SVD,直接学 BAM 完整用截断 SVD;缺项 MF 用 ALS;神经网络用 SGD。

口条:M = UΣVᵀ;奇异值越大越重要,截断得最优低秩近似。

为什么需要数据质量评估?

口述:微调效果被数据质量直接卡住——垃圾进,垃圾出。数据到十几万、几十万条,没法靠人肉眼扫完,必须有一套可量化的指标,衡量整库「健不健康」,才能决定洗不洗、洗哪里、能不能开训。

  1. 质量定效果 — 答案错、格式乱,模型照学;后面换 r、加 epoch 救不回来。
  2. 规模使人检失效 — 抽几条能做抽样,不能代表全库分布。
  3. 要可量化 — 长度、语种、完整率、重复率等写成仪表盘 / 评分卡,团队才有共同语言。

口条:垃圾进垃圾出;量大必须量化体检,不能只靠抽查。

数据质量评估的核心维度有哪些?

口述:质量体检三块——统计看形、语义看义、综合打分定级

  1. 统计维度 — 文本长度分布、语种一致性(如中文字符占比)、格式合规率、字段完整率。看「长什么样、缺不缺、规不规」。
  2. 语义维度 — 类别 / 场景分布是否多样;重复率检测(近重复、模板复读)。看「杂不杂、是不是同一句话抄一万遍」。
  3. 综合评分 — 0~100 评分卡,或 A/B/C/D 定级,把上面指标合成「能不能开训」的一句话结论。

和「微调数据准备」的准、杂对应:统计偏格式与完整,语义偏多样与去重,综合分给门禁。口条:统计看形,语义看义,评分卡一锤定级。

数据质量的自动化评估指标有哪些?

口述:这里说的是数据侧自动体检,不是 BLEU 那种模型输出指标。统计四件套可脚本跑全库,再合成 0~100 评分卡。阈值是课件经验(如中文医疗),业务可改,别背成宇宙真理。

统计维度(可自动化)

1. 文本长度分布

  • 算问答的最短 / 最长 / 平均 / 中位数。
  • 异常:过短(课件 <10 字)可能无意义;过长(课件 >1000 字)可能夹噪。
  • 看整体形状用 P10、P90 分位数,别只看平均。

2. 语言一致性

  • 逐条统计中文字符占比(中文医疗等场景期望以中文为主)。
  • 课件分档:中文占比 >80% 判中文;<20% 判英文;中间判中英混合。
  • 目标库整体中文字符占比常要求 >95%(中文任务)。

3. 格式合规率

  • Alpaca:必须有 instructioninputoutput
  • Chat:必须有 messages,且含 user / assistant
  • output / answer 不能为空

4. 字段完整性

  • 逐字段统计空值率 / 填充率。
  • 课件:填充率 >99% 算高完整;<95% 要重点排查。

语义侧自动化常见:重复率(唯一性)、类别覆盖(多样性)。开训前先过长度、语种、格式、完整四件套,别和 BLEU 混成同一套「评估」。

BLEU(Bilingual Evaluation Understudy)评估

口述:BLEU 最初评机器翻译,现也用于文本生成。输出和参考比 N-gram 重合度;分数越高越像参考。

句子例:我 最近 经常 头晕 → 1-gram 逐词;2-gram 相邻两词;一直到 4-gram。

BLEU 计算步骤

  1. 分词 — 中文 jieba;英文按空格。
  2. 各阶 N-gram 精度 — 1~4 gram 分别算精确率(相对参考)。
  3. 加权几何平均 — 权重通常均分,合成一个数。
  4. × 简短惩罚 BP — 生成过短扣分,防刷极短高精。

同测试集比基座 vs 微调才有意义;跨数据集别横比绝对分。

BLEU 能完全反映质量吗?局限性有哪些?

不能。 课件四点:

  1. 事实正确性 — 「吃感冒药」vs「吃毒药」,N-gram 可能很像,事实完全不同。
  2. 安全合规 — 医嘱有没有害,BLEU 看不出。
  3. 同义表达 — 「发烧」vs「体温升高」,意思同、字面不同,分可能很低。
  4. 语序不敏感 — 词序打乱、句子不通,分数未必掉。

口条:分词 → 各阶精度 → 几何平均 → ×BP。 BLEU 不看事实、安全、同义;定案加人工。

实际项目中如何结合自动评估和人工评估?

口述:按生命周期分三阶段——自动快跑、人工把关、上线后用真实反馈。

  1. 开发阶段自动评估快速迭代:BLEU + 数据质量报告
  2. 上线前人工评估把关:抽样 100~200 条多人交叉评事实 / 安全 / 有用。
  3. 上线后用户反馈持续改进:点赞 / 点踩 → 收集真实偏好,回流下一轮训练与清洗。

口条:开发靠自动快跑,上线前人工把关,上线后点赞点踩回流。

模型评估的步骤是什么?

口述:评估分三阶段,和上一节五维对应——先划数据,训中用验证集,训完用测试集定案

准备阶段

原始数据预先切成验证集 + 测试集;测试集从这一刻起封存,微调全程不参与。

训练中

验证集盯曲线、防过拟合、选 best checkpoint。训练集指标还在涨、验证集开始掉 → 可能过拟合,该早停或调学习率 / 数据。验证集不能当最终报告。

训练后

  1. 跑测试集主指标 — 基座 vs 微调版同一测试集,记录任务主指标。
  2. 测通用与泛化 — 通用能力(常识、代码、闲聊)+ 换说法 / 复杂输入,看有没有遗忘、有没有背题。
  3. 人工抽检 + 个案分析 — 从测试集和通用 / 泛化集抽样,看流畅、相关、有用;挑变好 / 失败样例做定性。
  4. 综合判定 — 五维一起看:主指标明显涨,通用能力没有明显掉,才算微调成功。

口条:准备封存测试集,训练盯验证集,训完基座微调同卷比、再测通用泛化、人抽检定案。

对话大模型的训练过程是什么样的?关键是什么?

口述:垂直对话大模型 = 数据收集 + 训练流水线。关键:合适基座 + 高质量训练数据(先质后量;Textbooks Are All You Need 口径)。高质量靠对已有数据过滤筛选

五步过程

  1. 基础大模型 — 开源基座选型。
  2. 数据加工 — 高质量对话、事实校验、安全合规过滤。
  3. 微调 + RLHF — 标注、按业务对齐。
  4. 提示工程 / 定制对齐 — 模板与提示打磨。
  5. 对话效果评估 — 客观 + 主观测试集。

数据侧 — 垂直对话通常攒:优质历史会话、业务文档、规则话术、必要的技术说明。筛:源头选优、敏感过滤、丢掉无意义轮次、保证完整逻辑闭环。更细演练见微调课件(仓库内课程练习,不对外发布)。

口条:选型 → 加工 → 微调对齐 → 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 要用视觉专用的。