预训练范式决策树 — 在自训/微调/PEFT/提示四档里选最低成本的够用档
R — 原文 (Reading)
(转述)Devlin 等确立预训练-微调范式:先在大规模无标注语料上以掩码语言建模等目标预训练出通用语言表示,再在下游任务上以极小的架构改动(仅加输出层)微调,即可在十一项 NLP 任务上取得当时最优——"一次预训练、处处微调"取代了逐任务从零设计架构。
— Jacob Devlin 等《BERT》(NAACL 2019)
(转述)Brown 等展示大规模语言模型的上下文学习能力:GPT-3 无需任何梯度更新,仅在输入中给出若干任务示例即可完成多种任务,性能随示例数平滑提升;这把"适配任务"的成本从训练侧转移到了提示构造侧。
— Tom Brown 等《Language Models are Few-Shot Learners》(NeurIPS 2020)
I — 方法论骨架 (Interpretation)
西瓜书的世界观是"每个任务从零训练一个模型",而 BOOK_OVERVIEW 批判节已指出:这一路线在大模型时代被部分绕开。本 skill 补全的就是那条新路线的决策树。
核心原则:适配任务的手段有四个成本档位,永远先试低成本档,只有低档被证明不够才升档。
- 档位 0 · 提示工程: 零训练成本。给指令+少样本示例,利用基础模型的上下文学习能力。
- 档位 1 · 参数高效微调 (LoRA/Adapter/前缀): 冻结原权重、只训极小的新增参数。数据千级~数万级即可,显存门槛低,原模型能力基本保留(遗忘风险天然更小)。
- 档位 2 · 全参微调: 数据十万级以上或领域距离极大时才值得;容量最大但最贵,且最容易把预训练能力冲掉。
- 档位 3 · 从零预训练: 只有在领域语料与通用分布根本不同(生物序列、私有协议)且数据/算力都到位时才考虑,绝大多数团队终生不需要此档。
两条贯穿性纪律:①领域距离决定升档动机——任务离预训练分布越远,越需要可训练参数;②灾难性遗忘是微调的固有税:在小学习率、冻结底层、回放旧数据、PEFT 四种缓解中按代价排序选用,且必须留出通用能力回归测试集才能发现遗忘。
A1 — 文献中的经典应用 (Past Application)
(本批主题超出西瓜书覆盖范围,A1 改引奠基文献的经典案例,均为学界公认的原始实验叙述)
案例 1: BERT 用一次预训练横扫十一个任务
- 问题: 2018 年之前 NLP 每个任务都要单独设计架构并从零训练,深度模型的红利无法跨任务复用。
- 方法论的使用: 把问题重构为两段式——先用双向掩码目标在海量无标注文本上学通用表示(这一步与具体任务无关),再对每个下游任务只加一个输出层做微调。
- 结论: 下游任务需要的多数知识已在预训练中获得,微调只需轻推表示;任务特化的边际成本骤降。
- 结果: 十一项任务 SOTA;GLUE 基准随之饱和,"预训练+微调"成为 NLP 标准生产流程,也是本 skill 决策树的起点。
案例 2: GPT-3 把适配成本移到提示侧
- 问题: 即便 BERT 式微调,每个任务仍需标注数据+一轮训练工程;能否连训练都省掉?
- 方法论的使用: 作者系统改变提示中示例数量(zero/one/few-shot)并对照微调基线,发现性能随示例数平滑上升,某些任务上少样本已逼近微调。
- 结论: 足够大的模型具备"从上下文中临时学任务"的能力——任务适配的最便宜档位由此正式入场。
- 结果: 直接催生了提示工程学科与本 skill 档位 0 的存在;也定义了"什么时候还需要升级到微调"这条分界线的研究议程。
案例 3: LoRA 把微调门槛降两个数量级
- 问题: 全参微调大模型的显存与存储成本让中小团队望而却步;部署多个全量副本更是不可行。
- 方法论的使用: Hu 等假设微调引发的权重变化是低秩的,于是冻结原矩阵、只训练一对低秩分解矩阵,推理时可合并回原权重零额外延迟。
- 结论: 极小比例的可训练参数即能达到接近全参微调的效果,且为每任务只存几 MB 增量。
- 结果: LoRA 成为开源社区事实标准,本 skill 档位 1 的代表技术;其低秩假设的适用边界至今仍是活跃研究方向。
A2 — 触发场景 (Future Trigger) ★
用户会在什么情境下需要这个 skill?
- 用户拿到一个任务和几千条标注数据,问"我该微调哪个模型/自己训一个吗",不知道存在档位阶梯。
- 用户微调后发现基础能力崩了(通用对话变差、格式失忆),不知道这是灾难性遗忘及其缓解手段。
- 用户在 LoRA 和全参微调之间摇摆,或纠结"冻结底层还是全部解冻""学习率该多小"。
- 用户预算有限(单卡/租卡),想知道自己的数据量和算力到底支持哪一档。
语言信号 (用户的话里出现这些就应激活)
- "要不要自己训模型 / 从头训练" / "train from scratch 还是 fine-tune"
- "微调用什么数据 / 多少条数据能微调" / "LoRA 还是全参微调" / "adapter/QLoRA"
- "冻结哪些层 / unfreeze / 学习率设多少微调"
- "微调后模型变笨了 / 通用能力下降 / 灾难性遗忘 / catastrophic forgetting"
- "prompt 不行再微调吗 / 提示工程和微调怎么选"
与相邻 skill 的区分
- 与
ml-transformer-era的区别: 那边回答"如果要自己训骨架,训哪种";本 skill 先回答更高层的问题"要不要自己训"。那边结论常常是本 skill 决策树某档位的展开。 - 与
ml-prompting-methodology的区别: 那是档位 0 内部的方法论(怎么写好提示);本 skill 是档位间的升降级决策。本 skill 判停在档位 0 时,具体执行移交那边。 - 与
ml-overfitting-modern的区别: 微调场景的正则主力(低 LR/冻结/PEFT 秩)与传统正则工具箱不同源;但小数据微调的过拟合诊断仍可借用那边的甄别逻辑。
E — 可执行步骤 (Execution)
当 skill 被激活后, agent 应按以下步骤执行:
三轴画像
- 采集:标注数据量级、算力预算(含显存上限)、领域距离(任务输入输出与通用预训练分布的差异程度,如"中文情感分类=近"、"医疗报告结构化=中"、"蛋白序列=远")。
- 完成标准: 三轴画像表填写完整;领域距离判定须给出依据而非直觉断言。
档位判定
- 沿"提示 → PEFT → 全参 → 自训"检查各档位的充分条件是否满足,取满足需求的最低档。
- 完成标准: 输出所选档位及"为什么更低档不够"的具体论证。
- 判停条件: 数据 <1k 条 → 强制判停在本步:禁止进入任何微调档,移交
ml-prompting-methodology先做提示工程与少样本实验,待证明提示档确实不足(且数据可扩充)后再回来升档。 - 判停条件: 若任务可用通用 API 模型直接解决且无隐私/延迟/成本硬约束 → 判停,建议纯推理方案。
基线先行
- 无论选哪档,先跑通"零训练基线"(强提示下的通用模型表现)作为对照——它既是下限参照,也是遗忘检测的锚点。
- 完成标准: 基线数字入库;后续所有微调结果与其同尺子对比。
执行微调(若已过判停)
- 默认配方:PEFT 优先于全参;学习率比常规训练低 1-2 个数量级起步;冻结策略从"只训靠近输出的新增参数"开始,按需逐层解冻;记录 checkpoint 以便回滚。
- 完成标准: 训练配置卡齐全(秩/目标模块/LR/epoch/数据清洗说明);有中间 checkpoint。
- 判停条件: 训练 loss 下降但验证指标不升反降 → 疑似过拟合或遗忘加剧,暂停训练回诊断(借
ml-overfitting-modern的甄别 + 本 skill 步骤 5)。
遗忘检测
- 用步骤 3 的通用能力测试集 + 一组"未微调任务"做回归测试,对比微调前后。
- 完成标准: 给出"专业指标提升 X 的同时通用指标变化 Y"的双面结论。
- 判停条件: 通用能力显著塌方且不可接受 → 依次尝试:降 LR 减 epoch → 收紧 LoRA 秩/改冻结范围 → 混入通用数据回放,重训一轮。
交付纪律
- 报告注明:所选档位及理由、基线对照、遗忘检测结果、"换更大底座模型"的升级预案。
- 完成标准: 结论句式为"档位 X 已足够/不足,证据是……",而非"微调完了"。
B — 边界 (Boundary) ★
不要在以下情况使用此 skill
- 用户其实只需要选架构(明确要自训)→
ml-transformer-era。 - 用户的问题在提示怎么写好(已确定留在档位 0)→
ml-prompting-methodology。 - 传统迁移学习场景(ImageNet 预训练 CNN 特征提取等非 LLM 语境)→ 冻结特征+线性探针的判断可参考本 skill 思想,但工具细节不同,勿照搬配方。
文献反复警告的失败模式
- 上来就微调: 未试提示档就投入训练工程,事后发现一个好用的 few-shot 提示就能打平——最高频的资源浪费。
- 小数据全参微调: 千级数据全参微调大模型,几乎必然过拟合加遗忘双重塌方;数据量与可训练参数必须匹配。
- 只报专业指标: 微调后任务指标涨了就宣布成功,通用能力塌方无人知晓,直到线上用户投诉"模型变笨了"——没有回归测试集就没有资格宣布成功。
- 把 LoRA 当免费午餐: 低秩假设并非对所有任务成立;复杂行为改造(格式+推理+风格同时变)可能超出低秩容量,需实证确认而非信仰。
- 灾难性遗忘被误诊: 忘记旧能力的症状常被误认为"数据不够",继续加数据加轮次反而加重——先测遗忘再谈加码。
作者盲点 / 时代局限(本批为外推补全)
- 必须声明: 本 skill 主题超出西瓜书(2016)覆盖范围——BOOK_OVERVIEW 批判节明确指出预训练-微调/提示范式与 scaling law 在书中完全缺失,且"针对每个任务从头训练"正是被批判的时代局限本身;本 skill 是对该局限的直接补全,素材为 2018-2021 文献共识转述,方法论仍在快速演化(RLHF/蒸馏/新 PEFT 变体持续出现),执行时应核对当前最佳实践。
- "数据 <1k 别微调"的阈值是经验性的粗标定而非定理,随底座模型的上下文学习能力增强,该边界整体在向下移动;使用时应视为"默认先验证提示档"的提醒而非精确数字。
- i.i.d. 盲区在此尤为尖锐:微调分布与线上真实分布的偏差是微调项目失败的头号原因,而本 skill 的三轴画像不含部署分布轴——交付时应主动追问线上数据可得性。
- 成本核算盲点:文献通常不计标注成本与维护成本,实际决策中"千级标注数据的获取代价"可能远超"多买一个月 API"。
容易混淆的邻近方法论
- RAG 与微调之争: 二者解决不同问题——RAG 改善"知道什么"(知识注入),微调改善"怎么做"(行为/格式/风格);用微调解知识更新问题是范畴错误。
- 持续学习/在线学习: 与微调共享遗忘议题但目标不同——前者要求顺序吸收新任务而不忘旧任务,本 skill 是一次性适配;混用会导致策略错配。
- 集成/模型融合: 把多个微调副本合并不是正则手段,权重插值的有效性依赖任务间参数空间的线性连通性,不能套用
ml-ensemble-design的多样性逻辑。
相关 skills
- depends-on: ml-transformer-era(若最终选择自训骨架)
- contrasts-with: ml-transformer-era(要不要训 vs 训什么)
- composes-with: ml-prompting-methodology(档位 0 的执行方法), ml-overfitting-modern(微调过拟合甄别), ml-methodology-router
审计信息
- 来源性质: 扩充批B·深度学习与大模型时代——主题超出西瓜书(2016)覆盖范围,R 段为经典文献共识的转述表述(均已标注"(转述)")
- 验证通过: 待流水线三重验证复核
- 测试通过率: 待阶段 4 测试 (详见 test-prompts.json)
- skill_version: 0.0.1
- 蒸馏时间: 2026-08-24