跳到主内容

微调是怎么「只改一小部分」的?冻结与解冻

2026-10-18 发布 来源:我告诉你AI导航 阅读

大模型微调时并不改动全部参数,靠的是冻结与解冻的组合。冻结,是把大部分层的参数锁住,不让它们在训练中更新;解冻,是按计划放开其中一部分参与训练。两者配合,让微调把改动集中在少数层,既省算力,又避免把预训练学到的基本能力冲掉。

大模型微调时并不改动全部参数,靠的是冻结与解冻的组合。冻结,是把大部分层的参数锁住,不让它们在训练中更新;解冻,是按计划放开其中一部分参与训练。两者配合,让微调把改动集中在少数层,既省算力,又避免把预训练学到的基本能力冲掉。

冻结到底冻结了什么

按训练三步看。进来的是新任务的数据,一批批喂进模型。发生的是前向计算:所有层照常参与推理,冻结的层同样出结果,只是它们的参数不记录梯度。出去的是参数更新:只有解冻层的参数被调整,冻结层原样留在原地,进下一轮时贡献不变。

被冻结的部分通常是底层和中间层。这些层学的是语言的通用规律,词法、句法、常识性的搭配,换任务也用得上,锁住它们等于保护底座。解冻的常见是靠近输出的层和新增的适配层,它们和具体任务关系最直接,微调成本的下降主要来自少动参数。

冻不冻还有一档中间状态:部分冻结。比如只冻一个 Transformer 块里的注意力部分,放开前馈网络部分,这种细粒度控制能让改动更精准,当然配置成本也更高,需要实验记录支撑,不是入门场景的首选。多数团队从整层冻结起步就够用,等摸清各层敏感度再谈细粒度。

前向与反传的分工

理解冻结,关键是分清前向和反传。前向阶段,冻结层和正常层毫无区别,数据照样流过,特征照样提取。反传阶段,梯度流到冻结层就停下,不再往回传,这些层因此拿不到更新信号。整个机制相当于在计算图里设了路障:路能过,但货不下车。

这个设计还带来一个训练上的好处:不更新的层不需要存优化器状态,显存占用明显下降。对同一张卡来说,能开更大的批次,或者容纳更长的上下文,梯度消失风险高的超长链路也因链路变短而缓解。

哪些层适合先动

实操上通常从上层开始试。任务相关性强、改动直接生效,风险也最小。如果上层调完效果不够,再逐步往下放开中间层,每放开一批就评估一次,防止底层能力被带偏。底层一般最后考虑,它们的改动影响面最大,收益却常常有限。

新增的小型适配层是另一个常见选择。在原模型旁边挂一个小模块,原模型全冻结,只训这个新模块。这种做法改动面最小,回滚也最容易,适合验证期快速试错,RLHF 流程里的策略优化阶段也常用类似思路控制改动范围。

四种改法的动手顺序、影响面和回滚难度,差别在这几行。

动哪一部分动手顺序改动影响面适合的场景
靠近输出的上层第一步先试影响面小,风险最小任务相关性强、改动直接生效
中间层上层效果不够再逐步放开每放一批评估一次,防止底层能力被带偏涉及领域知识,只调上层常常不够
底层最后考虑改动影响面最大收益常常有限,非改不可时才动
新增小型适配层原模型全冻结,只训新模块改动面最小,回滚最容易验证期快速试错

解冻时机的判断

什么时候解冻更多层,看两个信号。一是当前解冻范围的效果是否见顶,补数据、调超参都摸到天花板,说明该动的层没动。二是评估任务是否触及底层能力,比如要改的是领域术语体系,只调上层往往治标不治本,需要往下开放。

解冻的过程要慢。每放开一批,用小学习率跑几轮,看验证集表现再决定下一步。一次性全解冻,等于放弃冻结的全部好处,还不如直接全量微调。日常使用中,扣子和腾讯元宝提供的定制能力,背后都遵循类似的渐进逻辑:先小改试水,见效果再放权。

速查表:冻结=前向照常、反传截断;通常冻底层保底座、冻中层省显存、动上层见效果;解冻要渐进,每放一批、评估一次。

关于冻结与解冻的三个常问问题

  • 冻结层真的完全不更新吗?对,反传在冻结层截断,优化器状态都不存,它们只是特征提取器。
  • 只冻最上层效果会好吗?任务偏格式和风格时够用,涉及领域知识时常常不够,需要往下放开中间层。
  • 冻结和加适配层冲突吗?不冲突,反而是常见组合:原模型全冻结,只训新增的小适配模块。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]