一鱼两吃:为什么 SFT 和 GRPO 可以共用同一批数据

引言

在传统机器学习范式中,我们习惯将"训练集"与"测试集"严格分离,不同训练阶段使用不同数据集几乎是金科玉律。然而,DeepSeek R1 的训练流程(SFT + GRPO)却打破了这一惯例------在两个阶段使用同一批(或高度重叠的)数据,不仅可行,而且是一种极其高效的策略。

这背后的核心洞察是:两个阶段利用数据的"维度"不同,训练目标完全互补。

为了便于理解,我们用一个"学生解题"的比喻来拆解这个过程。


第一阶段:SFT------老师讲题,学生"抄写"

数据格式 :<Prompt, Thinking_Process, Final_Answer>

在监督微调(Supervised Fine-Tuning)阶段,模型扮演的是一个"认真听课的学生"。它看到题目后,会逐字逐句地学习老师提供的标准解题过程。

核心目标 :让模型掌握格式与套路 。例如学会使用 <think> 标签、学会分步骤推理、学会组织思维链的语言风格。

内在局限:模型可能只是在"死记硬背"老师的解法,并未真正理解每一步推导的内在逻辑。就像学生能复述老师的板书,却不一定能独立应对变式题。


第二阶段:GRPO------遮住答案,学生"刷题"

数据格式 :<Prompt, Final_Answer>(丢弃 Thinking_Process)

在强化学习(Group Relative Policy Optimization)阶段,我们依然使用同一批题目,但有意隐去老师的解题过程,只保留最终答案作为评判标准。

训练流程:

  1. 仅向模型展示题目 Prompt
  2. 让模型自主生成多条不同的解题路径(Group Sampling)
  3. 仅校验最终答案:与 Final_Answer 一致则奖励,否则惩罚

核心目标:

  • 泛化能力:模型可能发现比 SFT 示例更简洁、更巧妙的解题路径------殊途同归,条条大路通罗马
  • 鲁棒性:SFT 只能教会一条路,GRPO 则强迫模型无论选择哪条路径,都必须抵达正确终点

为什么"同数据复用"效果出奇地好?

这种"一鱼两吃"的策略,在 7B 级别的小模型上尤其有效,它精准解决了两个核心痛点:

痛点一:分布漂移(Distribution Shift)

脑子学会了,手却不会动

如果 SFT 阶段使用"高等数学"题目,而 GRPO 阶段切换到"小学算术",模型会陷入困惑:它在 SFT 中学到的微积分符号、极限推导等"招式",在简单算术场景中完全派不上用场。

同数据复用的优势 :确保模型在 SFT 阶段习得的思维链格式、推理语气等"招式",能在 GRPO 阶段立即投入实战。只不过这一次,它需要独立走完全程,以验证自己是否真正"内化"了这些能力。

痛点二:标注成本高昂(Ground Truth is All You Need)

数据标注的经济学:

  • SFT 数据昂贵:需要 DeepSeek R1 等顶级模型生成高质量的思维链(Chain-of-Thought),每条数据的生成成本不菲
  • GRPO 数据廉价:仅需题目与标准答案,无需中间过程

同数据复用的优势:既然为 SFT 已经采集了"题目 + 答案",直接将其复用为 GRPO 的奖励信号来源,是极其划算的选择。无需额外寻找新的带标准答案的题库。


两阶段的本质差异:一张表说清楚

维度 SFT 阶段 GRPO 阶段
数据视角 Prompt + Teacher's CoT Prompt + Ground Truth
学习目标 模仿老师的解题动作 无论什么动作,算对即可
核心能力 格式规范、推理框架 泛化能力、自主探索
类比 跟着老师抄笔记 独立完成课后作业

实操流程:三步走策略

复制代码
Step 1: 准备题库
        收集 1000 道数学题/代码题(含标准答案)
              │
              ▼
Step 2: SFT 阶段
        用 Teacher 模型生成详细解题步骤
        训练 Student 模型学习"怎么思考"
              │
              ▼
Step 3: GRPO 阶段
        仅使用题目 + 最终答案
        训练 Student 模型"自己思考并做对"

结语

DeepSeek R1 的训练范式揭示了一个深刻的洞察:数据的价值不在于数量,而在于如何从不同维度榨取信息。SFT 教会模型"形",GRPO 锤炼模型"神"。同一批数据,前者取其过程,后者验其结果------这正是"一鱼两吃"的精髓所在。

对于资源有限的小模型训练场景,这种策略在数据效率和训练效果之间取得了精妙的平衡,值得从业者借鉴。

相关推荐
淡海水7 小时前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
ClickHouseDB7 小时前
ClickHouse 大规模 OpenTelemetry 数据接入架构的可靠性演进
算法
Shaoshing7 小时前
BHU 润石工作室 251019自建赛题解
算法
玩AI的奶茶8 小时前
24GB 显存能跑多大的模型?参数量、精度与显存占用对照表
人工智能·python·算法·ai·aigc·gpu算力·算力租赁
java_nnnn8 小时前
LeetCode刷题双指针(有效三角形的个数+三数之和)Java
算法·leetcode·职场和发展
人工智能培训8 小时前
智能博弈背景下中国AI国防建设的战略价值
大数据·人工智能·算法·重构·生活
flinn_small8 小时前
三分算法:原理、实现与实战应用
数据结构·算法·三分
思茂信息8 小时前
CST软件UV Slice切片后可直接删除指定一侧实体
算法·uv·emc·emi·cst·仿真软件
INGNIGHT9 小时前
944 · 最大子矩阵(前缀和)
数据结构·c++·算法
All for pursuit.9 小时前
【动态规划-6】96.不同的二叉搜索树
数据结构·c++·算法·leetcode·动态规划