LLM概念学习记录-Day01-大模型训练与微调
SFT
SFT (Supervised Fine-Trainning,有监督微调) 指在预训练模型基础上,用人工标注的输入输出数据继续训练模型,让它更好地完成特定任务并遵循指令。预训练主要学习通用知识和语言能力,SFT 则更关注任务适配和行为对齐。很多大模型都会先经过 SFT,再结合 RLHF 等方法进一步优化回答质量和用户体验。
SFT 目的
- 让模型更好地遵循指令
- 提升某类任务的效果
- 让输出风格更稳定、更符合业务需求
- 降低模型“会但不按要求答”的问题
SFT 训练数据形式
- 指令 / 问题
- 期望输出 / 标准答案
SFT 流程
流程总结
- 明确任务目标:确定希望模型提升哪些能力以及输入输出格式;
- 收集和构造高质量的监督数据,通常是 prompt-response 或 instruction-answer 形式;
- 对数据进行清洗、去重和格式统一,并转换成适合模型训练的模板;
- 用 tokenizer 将文本编码成 token,同时构造 attention mask 和 labels;
- 在预训练模型基础上进行监督微调,通常使用交叉熵损失让模型学习生成期望输出;
- 通过自动评估和人工评估检查效果,再根据结果持续做数据和训练策略迭代优化。
收集和构造训练数据
数据来源通常有几种:
- 人工标注
- 业务历史数据清洗
- 规则生成
- 用更强模型生成后再人工筛选
- 公共指令微调数据集
通常是这种形式:
- Prompt / Instruction:用户输入、问题或任务描述
- Response / Output:理想回答
数据清洗与格式化
- 去重
- 去掉低质量、错误、冲突样本
- 统一格式
- 过滤脏数据和异常字符
- 控制回答长度和风格一致性
- 检查是否有安全风险或隐私信息
之后把数据组织成模型可训练的格式。如单轮格式或指令模板形式。
单轮形式
用户:什么是机器学习?
助手:机器学习是让计算机通过数据学习规律并进行预测或决策的方法。
指令模板形式
[INST] 请解释什么是过拟合 [/INST]
过拟合是指模型在训练集上表现很好,但在测试集或新数据上泛化能力较差。
如果是聊天模型,还会进一步套成 chat template。
分词与样本编码
把文本转成模型可以处理的 token 序列。通常包括:
- tokenizer 编码
- 截断或拼接长文本
- 设置最大长度
- 构造 attention mask
- 构造 labels
在 SFT 中,通常只对 assistant 输出部分计算 loss,而用户输入部分更多是作为条件输入,不参与或弱参与损失计算。
监督微调训练
步骤
- 从预训练模型加载参数
- 用构造好的输入输出样本做 next-token prediction
- 通过交叉熵损失训练模型
- 更新参数,让模型更倾向生成期望答案
常见训练方式
- Full Fine-tuning:全参数微调
- LoRA / QLoRA:参数高效微调
- PEFT:只训练少量附加参数
训练时关注的超参数
- learning rate
- batch size
- epoch
- warmup
- max length
- gradient accumulation
- mixed precision
评估与迭代
自动评估
- Rouge / BLEU
- Accuracy / F1
- Perplexity
- Exact Match
- Pass@k(代码任务)
人工评估
- 是否符合指令
- 是否表达自然
- 是否有事实错误
- 是否安全
- 是否符合业务风格
继续迭代方式
- 补充数据
- 修正坏样本
- 调整超参数
- 改模板
- 重新训练
SFT vs 预训练
- 预训练:让模型从海量通用语料里学语言规律和世界知识
- SFT:让模型学会更具体地执行任务、遵守格式和对话规则
SFT vs RLHF
- SFT:直接学习人工给的标准答案
- RLHF:在 SFT 基础上,再利用人类偏好反馈做强化学习优化
SFT 优点和局限
优点:
- 实现相对直接
- 数据格式清晰
- 能明显提升任务表现和可控性
局限:
- 依赖标注数据质量
- 容易把数据中的偏差也学进去
- 对复杂偏好和开放式质量优化,往往不如后续的偏好对齐方法
RLHF
RLHF (Reinforcement Learning from Human Feedback),是大模型对齐的经典方法。它通常包含三个阶段:第一步是 SFT,用监督数据让模型具备基本的指令跟随能力;第二步是基于人类偏好数据训练奖励模型,让模型学会区分哪些回答更好;第三步是通过强化学习,比如 PPO,让语言模型朝着更高奖励的方向优化。RLHF 的核心价值在于,它不仅让模型会回答问题,还让回答更符合人类对帮助性、安全性和自然性的要求。
RLHF 目的
只靠预训练和 SFT,模型虽然能回答,但常见问题是:
- 回答不够符合用户真实偏好
- 容易啰嗦、跑题
- 可能生成不安全或不稳妥的内容
- 对开放式问题,难以只靠“标准答案”定义质量
RLHF 的优势就在于,它不是只学标准答案,而是学人类更喜欢哪种回答。
RLHF 训练流程
1. 准备预训练模型
进行 RLHF 前,通常需要准备一个已经进行过大规模预训练的语言模型。这个阶段模型已经具备基本语言理解和生成能力、一定的知识记忆以及通用推理和表达能力,但是还存在某些问题,如不一定擅长遵循指令、回答风格不稳定、对开放式问题不一定符合人类偏好、可能生成不符合规范内容等。
需要通过 SFT 和 RLHF 做进一步对齐。
2. 通过SFT进行监督微调
如果直接做强化学习,模型连基本的回答格式都不稳定,训练会很难收敛。
所以通常先用人工标注的高质量问答数据做监督微调,让模型先具备基础指令跟随能力、稳定的回答风格以及初步的任务完成能力。
通过这一步,会产出一个 SFT model,也叫初始策略模型。该模型已经能回答问题,能大致遵循指令,但不一定答得好。
3. 训练奖励模型
收集人类偏好数据
很多开放式任务并没有唯一标准答案,比起“唯一正确答案”,更常见的是 ”回答 A 和回答 B,哪个更好“ 的问题。
偏好数据集构造流程通常如下:首先,给定一个 prompt,让当前模型生成多个候选答案,让人工标注员比较这些回答,选出更好的那个,或者做排序。
偏好数据形式常见是如下三元组:
- prompt
- chosen response
- rejected response
或更复杂的排序数据:
- prompt
- response1 > response2 > response3
标注员通常会从多个维度判断回答,如:
- helpfulness(有帮助)
- correctness(正确性)
- harmlessness / safety(安全性)
- clarity(清晰度)
- conciseness(简洁性)
- instruction following(是否遵循指令)
训练模型
通过训练奖励模型,把人类偏好数据变成模型可以优化的数值信号。其本质上是一个打分器,输入 prompt + response,输出一个标量分数,表示这个回答有多符合人类喜好。奖励模型的质量非常关键,因为它决定了后续强化学习优化的方向;如果奖励模型有偏差,策略模型可能会朝错误方向优化。
奖励模型的训练数据来自于人类偏好数据,如果一条数据中 chosen response 比 rejected response 更好,那训练目标就是让奖励模型满足 score(chosen) > score(rejected)。通常会用 pairwise ranking loss 来训练。
奖励模型训练完毕后,可以对新生成的回答自动打分,这个分数就是后面强化学习的 reward。
问题
奖励模型可能存在 reward hacking 风险,如:
- 学到标注偏差
- 过度偏好某种风格
- 只会奖励表面特征
- 被策略模型“投机取巧”利用
4. 通过强化学习优化模型
策略模型
在强化学习视角下:
- 状态(state):用户输入 prompt,以及已经生成的上下文;
- 动作(action):生成下一个 token;
- 策略(policy):把语言模型看作策略模型,策略模型为语言模型本身;
- 奖励(reward):奖励模型对完整回答给出的分数。
约束条件
如果只让模型疯狂追求高奖励,容易出现:
- 回答风格畸形
- 偏离原始语言分布
- 语言质量下降
因此 RLHF 一般会加入一个约束,使最终模型不能离 SFT 模型太远。这通常通过 KL penalty(KL 散度惩罚)来实现。
策略优化算法
在经典 RLHF 里,通常使用 PPO 这样的策略优化算法。模型先生成回答,再由奖励模型给出分数,并结合 KL 约束形成最终优化目标,PPO 则负责稳定地更新模型参数。
强化阶段流程
- 采样:从一批 prompt 出发,当前策略模型生成回答。
- 打分:用奖励模型给每个回答打分。
- 约束:结合参考模型或 SFT 模型,计算 KL penalty。
- 计算优势或回报:将 reward 处理为 PPO 需要的优化信号。
- 更新参数:根据 PPO 目标函数更新策略模型。
- 循环,直到达到预期。
5. 评估模型
训练完成后,不只看 reward 分数,还要做多维评估。
自动评估
- 胜率比较(win rate)
- 安全性分类器指标
- 事实性指标
- benchmark 表现
- 对比不同模型的偏好胜率
人工评估
- helpfulness
- safety
- factuality
- coherence
- instruction following
在线评估
- 用户满意度
- 点击率
- 对话完成率
- 投诉率
- 风险内容触发率
RLHF vs SFT
SFT 主要依赖“输入-标准输出”数据,目标是让模型学会完成任务;RLHF 则是在此基础上进一步利用人类偏好信号做优化,目标是让模型输出更符合人类期望。
RLHF 优点与局限
优点
- 能显著提升回答质量和用户体验
- 可以更好地做安全性、帮助性、风格对齐
- 适合开放式任务,不要求唯一标准答案
- 是 ChatGPT 类模型对齐中的关键方法之一
局限
- 流程复杂,训练成本高
- 需要高质量人工偏好数据
- 奖励模型可能有偏差
- 强化学习阶段训练不稳定,调参难度较大
DPO
DPO (Direct Preference Optimization,直接偏好优化),是一种基于人类偏好数据的大模型对齐方法。它不需要像传统 RLHF 那样先训练奖励模型,再用强化学习优化,而是直接利用“同一个问题下,哪个回答更好”的成对偏好数据进行训练。其目标是提升模型生成优选答案的概率,降低劣选答案的概率。相比 RLHF,DPO 流程更简单、训练更稳定、工程成本更低,因此现在在大模型对齐中非常常见。
DPO 要解决什么问题
在大模型训练里,SFT 能让模型学会基本的指令跟随,但它有一个问题:
- 很多开放式问题并没有唯一标准答案
- 更现实的情况是:回答 A 和回答 B 哪个更好
- 这个“更好”往往体现在帮助性、安全性、清晰度、风格等方面
DPO 就是专门利用这种偏好比较数据来做优化。
DPO 训练数据
通常是一条样本包含:
- 一个 prompt
- 一个 chosen answer(人类更喜欢的回答)
- 一个 rejected answer(相对没那么好的回答)
DPO 的训练目标就是让模型更倾向生成 chosen,而不是 rejected。
DPO 和 RLHF 的区别
传统 RLHF 一般分三步:
- 先做 SFT
- 再训练一个奖励模型(Reward Model)
- 用强化学习方法,比如 PPO,让模型朝高奖励方向优化
而 DPO 的特点是:
- 不单独训练奖励模型
- 不需要复杂强化学习
- 直接从偏好数据出发优化策略模型
DPO 的优点和局限
优点:
- 训练流程更简单
- 不需要奖励模型
- 比 PPO 这类 RLHF 方法更稳定、实现成本更低
- 很适合做大模型对齐和偏好优化
局限:
- 依赖高质量偏好数据
- 学到的是“相对偏好”,不是完整的长期交互策略
- 在特别复杂的多轮决策场景里,未必能完全替代强化学习方法
PPO
PPO ( Proximal Policy Optimization,近端策略优化 ) 是一种经典的强化学习策略优化算法,其核心思想是在提升策略效果的同时,限制每次策略更新的幅度,避免新旧策略差异过大导致训练不稳定。
在 RLHF 中,通常把语言模型看作策略模型,把生成回答看作动作序列,再利用奖励模型提供的分数作为反馈,通过 PPO 持续优化模型,使其输出更符合人类偏好。
PPO 的优点是训练相对稳定、实现较成熟,因此在早期大模型对齐中被广泛使用。
为什么需要 PPO
在强化学习里,策略模型会根据奖励不断更新。但如果每次更新幅度太大,容易出现:
- 训练不稳定
- 性能崩掉
- 新策略和旧策略差别太大
- 模型学偏,甚至“作弊”去拿高分
PPO 的核心思想就是 每次都优化,但只做受约束的小步更新。
PPO 在 RLHF 里是干什么的
在 RLHF 中,语言模型 = 策略模型,生成 token = 动作,奖励模型打分 = reward,PPO = 用 reward 来更新语言模型参数的方法。
流程:
- 给模型一个 prompt
- 模型生成回答
- 奖励模型给这个回答打分
- PPO 根据这个分数更新模型
- 让模型以后更倾向生成高分回答
但更新时不会让模型无限追求高奖励,而是会限制它不要偏离原始模型太远。
PPO 核心思想
PPO 通过限制新旧策略的变化幅度,避免策略更新过大,从而提升训练稳定性。
PPO 最重要的特点是通过 裁剪或约束策略变化,防止更新过头。如果某次更新方向是对的,那就鼓励更新,但如果更新得太猛,就把它“裁掉”。这样可以让训练更稳定
与传统策略梯度方法区别
传统策略梯度方法往往直接按照奖励方向更新,容易出现:
- 方差大
- 不稳定
- 训练容易崩
PPO 相比它们的优势是:
- 更稳定
- 更容易实现
- 更容易调参
- 实际效果好
所以它在强化学习里非常常见,也被大量用于 RLHF。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)