欢迎光临
我们一直在努力

很多人以为是在训练模型,其实你只是在“改它的行为”

最近接触了不少做微调的朋友,发现大家对"微调到底是什么"这个问题的理解差异很大。

有人觉得是炼丹,有人觉得是工程,也有人觉得两者都是。

写这篇的目的是把自己理解的微调脉络理清楚,也给刚开始接触的人一个参考。

微调解决的是什么问题

很多人以为微调是在教模型“新知识”,但实际情况完全不是。

预训练模型的能力很强,这是公认的。

但它有一个天然局限——它是通用的。

你让它写代码、做翻译、总结文章都没问题,但一旦涉及你公司内部的格式规范、业务流程、行业术语,它就开始自由发挥了。

这不是模型的错,是预训练阶段根本没接触过这些内容。

微调做的事情,就是在预训练模型已有的通用能力之上,注入特定领域的知识和规则。

模型还是那个模型,参数没变多少,但它开始按你的规矩办事了。

微调的标准流程

目前业界比较成熟的微调方案,大致包含三个阶段。

第一阶段:SFT

SFT 全称是 Supervised Fine-Tuning,有监督微调。做法很简单——准备一批高质量的问答对,让模型照着学。

比如你给模型看这样的数据:

输入:请帮我写一个请假条
期望输出:好的,以下是您的请假条模板……

模型在这个过程中学到的不是新知识,而是一种"行为模式":用户提出某个请求时,我应该用什么样的格式和语气来回应。

这个阶段数据质量是第一优先级。

十个劣质样本不如一个优质样本,因为模型在模仿你的数据分布,你喂给它什么风格,它就学会什么风格。

所以微调本质上不是教模型“会不会”,而是教它“怎么回答”。

第二阶段:奖励模型

SFT 解决的是"模型知道该怎么回答",但还没解决"模型知道什么叫答得好"。

奖励模型(Reward Model,简称 RM)就是用来解决这个问题的。

它的训练方式和普通大模型不同——它不生成文本,而是对两个回答做打分比较。

你给它一组数据:同一个问题下的两个回答,以及人类标注员认为更好的那个。反复训练之后,RM 就具备了评判回答质量的能力。

可以把它理解为一个裁判,专门负责给模型的输出打分。

第三阶段:对齐

有了裁判之后,下一步就是让模型根据裁判的反馈来调整自己。

这一步有两种主流做法:RLHF 和 DPO。

RLHF(基于人类反馈的强化学习)的流程相对复杂,模型生成回答 → 裁判打分 → 根据分数反向更新模型参数。

DPO(直接偏好优化)则简化了这个过程,把奖励模型的学习直接整合到了微调目标函数里,省去了单独的 RL 训练阶段。

两种方式效果接近,DPO 因为实现更简单,近年来使用越来越广泛。

不管选哪种,目的都一样:

让模型的回答更安全、更符合人类预期,减少胡说八道的情况。

参数微调的策略

全参数微调理论上效果最好,但代价也最大。

一个 70B 的模型全量微调,显存需求是普通显卡承受不了的。

而且全量更新还有一个副作用——模型可能在新任务上表现不错,但把预训练阶段的通用能力给覆盖了,这就是常说的灾难性遗忘。

为了解决这些问题,出现了不少高效微调方案。

LoRA

LoRA(Low-Rank Adaptation)的思路很简洁:

不在原始参数上做加法,而是并行加一小块。

具体来说,它在每一层网络旁边挂一个低秩矩阵,训练的时候只更新这两个小矩阵,原始参数完全冻结。

推理阶段,训练好的低秩矩阵可以直接叠加回原始参数,不增加任何延迟。

显存需求从几百 GB 降到十几 GB,这也是 LoRA 能快速普及的主要原因。

QLoRA

QLoRA 在 LoRA 的基础上又往前了一步——先把预训练模型量化到 4bit,再做 LoRA 微调。

4bit 意味着参数量只有原来的四分之一,显存压力大幅降低。

虽然精度有损失,但在大多数下游任务上,效果差别不大。

实践中容易遇到的问题

数据质量

这是最容易被低估的一环。

很多项目效果不理想,回头一看数据,质量参差不齐。

模型不会自动区分好坏数据,它只会忠实地拟合训练集中的每一个模式。

如果训练集里混杂了大量低质样本,模型学到的就是混乱的行为。

解决思路是用更强的模型先去清洗数据,过滤掉格式错误、内容不完整、标注不一致的样本。

这一步多花的时间,后面能省回来。

过拟合

过拟合的表现是:

训练集上效果很好,验证集上指标下滑。

缓解手段有两个:

早停(验证集指标不再提升时停止训练)和权重衰减(给损失函数加一个正则化项,限制参数更新幅度)。

这两个都是经典方法,不算新技术,但对控制过拟合确实有效。

显存不足

显存不够的时候,可以从几个方向入手:

用 QLoRA 降低基础开销,开启梯度检查点用计算换显存,设置梯度累加模拟更大的 batch size。

通常组合使用效果最好。

数据配比

做了微调之后发现模型在某些通用能力上退化了,这时候可以考虑在训练数据里混入一部分通用语料,保持模型的基础语言能力不被覆盖。

数据混合的比例需要根据具体任务调试,没有固定公式。

微调这件事,拆开了看其实并不神秘。

SFT 教格式,RM 立标准,对齐做收敛,LoRA 降门槛。

每个环节都有明确的分工,也有成熟的工具链支持。

真正难的是数据准备和超参调试,这部分没有捷径,只能一遍遍试。

但好消息是,随着 QLoRA 这类方案的普及,试错的边际成本已经低了很多。

赞(0)
未经允许不得转载:171主机测评 » 很多人以为是在训练模型,其实你只是在“改它的行为”
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址