📍前言

如何将一个7B参数的"裸模型"训练成具备70B参数模型能力的「ChatGPT」级AI助手?
这个看似复杂的转化过程,实际上可以分解为四个关键微调步骤加一套完善的奖励系统
今天,我们将用5分钟的时间,系统性地解析SFT(监督微调)、IFT(指令微调)、EFT(评估微调)和RLHF(基于人类反馈的强化学习)这四大技术环节的具体作用、实施方法以及每个阶段的预期效果。


1️⃣ SFT:Supervised Fine-Tuning(监督微调)

核心目标:确保模型掌握基础的知识准确性
训练数据格式:标准问答对(prompt, gold_answer)
损失函数:采用标准的语言建模交叉熵损失
训练效果:模型能够给出正确答案,但回答格式可能不够规范

实战案例:
输入prompt = “《红楼梦》的作者是谁?”
标准答案gold = “曹雪芹”
经过训练后,模型能够准确回答"曹雪芹",但可能直接输出答案而缺乏礼貌用语或完整句式。


2️⃣ IFT:Instruction Fine-Tuning(指令微调)

核心目标:提升模型对复杂指令的理解和执行能力
训练数据格式:结构化指令(instruction + input, answer)
损失函数:同样使用交叉熵损失
显著提升:模型的格式规范性、风格适应性和多任务泛化能力

典型示例:
指令instruction = “请用正式商务信函的格式回复以下内容”
输入input = “感谢您的来信”
期望输出answer = “尊敬的先生/女士:衷心感谢您近日的来信…”


3️⃣ EFT:Evaluation Fine-Tuning(评估微调)

核心目标:赋予模型自我评估和打分的能力
训练数据格式:带评分的数据(prompt, answer, score)
损失函数:采用均方误差(MSE)或二元交叉熵(BCE)
关键改进:模型额外训练出的reward head可以输出0-1的评分,为后续RLHF提供基础

评估示例:
prompt = “为新产品撰写宣传标语”
answer = “创新科技,智享未来”
score = 0.92(由人工标注或专家评估得出)


4️⃣ RLHF:Reinforcement Learning from Human Feedback(基于人类反馈的强化学习)

终极目标:使模型输出完全符合人类偏好
训练数据格式:对比数据(prompt, chosen, rejected)
主流算法:PPO/DPO/GRPO/SPIN/Self-Rewarding等
全面提升:在保证正确性的基础上,优化风格、安全性、创造力和用户体验

对比案例:
prompt = “用幽默的方式解释相对论”
chosen(优选回答)= “想象你坐在美女旁边一小时就像一分钟…”
rejected(劣质回答)= “相对论是爱因斯坦提出的物理理论…”


🔁 完整训练流程图示

预训练基础模型
SFT基础能力建设
IFT指令理解强化
EFT评估系统构建
RLHF人类偏好对齐
可部署的生产模型

📊 技术参数对比表

阶段 数据特征 新增组件 核心目标 典型训练时长
SFT 标准问答对 知识准确性 24-48 GPU小时
IFT 结构化指令 指令遵循性 48-72 GPU小时
EFT 带评分数据 Reward Head 质量评估能力 24-36 GPU小时
RLHF 对比数据 Actor-Critic架构 人类偏好对齐 72+ GPU小时

🚀 实战代码示例(PyTorch Lightning版)

# 1. SFT阶段
sft_trainer = pl.Trainer(
    accelerator="gpu",
    strategy="deepspeed_stage_3",
    plugins=[PrecisionPlugin(precision="bf16")]
)
sft_trainer.fit(SFTModel(), datamodule=SFTDataModule())

# 2. IFT阶段
ift_trainer = pl.Trainer(...)
ift_trainer.fit(IFTModel(), datamodule=IFTDataModule())

# 3. EFT阶段
eft_trainer = pl.Trainer(...)
eft_trainer.fit(RewardModel(), datamodule=EFTDataModule())

# 4. RLHF阶段
rlhf_trainer = DPOtrainer(
    model=ift_model,
    ref_model=sft_model,
    beta=0.1,
    loss_type="sigmoid"
)
rlhf_trainer.train(rlhf_dataset)

🧠 关键结论

  • SFT构建知识基础,IFT培养指令理解,EFT建立评估标准,RLHF实现偏好对齐
  • 通过这四步系统性训练,即使是7B参数的"小模型"也能展现出媲美70B参数的"大模型"的用户体验
  • 当前最前沿的模型(如GPT-4、Claude 3等)都遵循类似的技术演进路径### 📍前言
    把 7B 的“裸模型”变成 70B 的「ChatGPT」到底要几步?
    答案是:四步微调 + 一套奖励系统
    今天带你用 5 分钟搞清楚 SFT、IFT、EFT、RLHF 分别干什么、怎么干、干到什么程度。

1️⃣ SFT:Supervised Fine-Tuning

目的:让模型「答对题」
数据(prompt, gold_answer)
损失:语言建模交叉熵
效果:知识正确,但格式不一定听话

示例:
prompt = “中国的首都是?”
gold = “北京”
训练后模型能答“北京”。


2️⃣ IFT:Instruction Fine-Tuning

目的:让模型「听指令」
数据(instruction + input, answer)
损失:同样是交叉熵
效果:格式、风格、任务泛化大幅提升

示例:
instruction = “把这句话翻译成英文”
input = “你好”
answer = “Hello”


3️⃣ EFT:Evaluation Fine-Tuning

目的:让模型「当裁判」
数据(prompt, answer, score)
损失:MSE / BCE 回归
效果:额外 reward head 输出 0-1 标量,用于自打分或 RLHF

示例:
prompt = “写一段广告文案”
answer = “买它!”
score = 0.85


4️⃣ RLHF:人类反馈强化学习

目的:让模型「更懂人类偏好」
数据(prompt, chosen, rejected)
算法:PPO / DPO / GRPO / SPIN / Self-Rewarding
效果:在正确 + 格式好基础上,风格、安全、创造力全面提升

示例:
prompt = “写一首关于春天的诗”
chosen = “春风又绿江南岸…”
rejected = “春天来了,草绿了…”


🔁 训练顺序流水线

Pre-train
SFT
IFT
EFT
RLHF
生产模型

📊 对比速查表

阶段 数据格式 新增模块 目标
SFT (prompt, answer) 正确性
IFT (instruction, input, answer) 指令遵循
EFT (prompt, answer, score) reward head 打分能力
RLHF (prompt, chosen, rejected) actor + critic / DPO 人类偏好

🚀 实战代码 1 行跑通

# 1. SFT
trainer = SFTTrainer(model, dataset_sft)
trainer.train()

# 2. IFT
trainer = SFTTrainer(model, dataset_ift)

# 3. EFT
trainer = RewardTrainer(model, dataset_eft)

# 4. RLHF
trainer = GRPOTrainer(model, reward_func, dataset_rlhf)
trainer.train()

🧠 结语

  • SFT 打底,IFT 教指令,EFT 造裁判,RLHF 做精修。
  • 四步走完,7B 也能有 70B 的“人情味儿”。
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐