DeepSeekMath的理解2——监督式微调

📅 2026/6/26 8:18:58
DeepSeekMath的理解2——监督式微调
文章目录一、前言二、DeepSeekMath3. 监督式微调Supervised Fine-Tuning3.1. SFT数据整理SFT Data Curation3.2. DeepSeekMath-Instruct 7B 的训练与评估问题1总结一下3.1 SFT 数据整理3.2 DeepSeekMath-Instruct 7B 的训练与评估问题2多格式指令微调三种格式具体是什么SFT 阶段具体怎么做的补充SFT 和 RL 阶段的格式差异问题3更直观的解释一、三种格式长什么样看具体数据格式 1CoT思维链—— 像写小作文格式 2PoT程序思维—— 像写代码格式 3Tool-Integrated工具集成—— 像边想边查计算器二、SFT 训练时到底在干什么三、模型学完之后的效果四、为什么叫多格式为什么这样混合有效五、补充SFT 和 RL 的区别问题4拼接成每段 4K tokens 的长文本不会被截断吗第一个问题随机拼接会不会截断在问题中间做法 A打包Packing 掩码隔离做法 B即使真的截断了也没那么严重但有个更关键的问题Loss 计算第二个问题为什么 RL 只练纯文字CoT不继续练代码和工具1. Reward 信号越简单RL 越稳定2. 论文的核心目标是数学推理不是工具使用3. 统一范式实验的需要4. 代码/工具能力在 SFT 后已经够用了总结成一句话一、前言仅供参考未经实验验证。二、DeepSeekMath论文标题DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsDeepSeekMath推动开放语言模型中数学推理的极限作者Zhihong Shao, Peiyi Wang, Qihao Zhu, Runxin Xu, Junxiao Song, Mingchuan Zhang, Y.K. Li, Y. Wu, Daya Guo机构DeepSeek-AI主导、清华大学、北京大学发表时间2024年2月6日arXiv:2402.03300GitHubhttps://github.com/deepseek-ai/DeepSeek-Math3. 监督式微调Supervised Fine-Tuning3.1. SFT数据整理SFT Data CurationWe construct a mathematical instruction-tuning dataset covering English and Chinese problems from different mathematical fields and of varying complexity levels: problems are paired with solutions in chain-of-thought (CoT) (Wei et al., 2022), program-of-thought (PoT) (Chen et al., 2022; Gao et al., 2023), and tool-integrated reasoning format (Gou et al., 2023). The total number of training examples is 776K.我们构建了一个涵盖不同数学领域、不同复杂程度的英语和中文问题的数学指令调优数据集问题与链式思考CoTWei et al., 2022)、程序思考PoTChen et al., 2022; Gao et al., 2023)和工具集成推理格式Gou et al., 2023的解决方案配对。训练样本总数为776K。English mathematical datasets:We annotate GSM8K and MATH problems with toolintegrated solutions, and adopt a subset of MathInstruct (Yue et al., 2023) along with the training set of Lila-OOD (Mishra et al., 2022) where problems are solved with CoT or PoT. Our English collection covers diverse fields of mathematics, e.g., algebra, probability, number theory, calculus, and geometry.英文数学数据集我们使用工具集成解决方案标注 GSM8K 和 MATH 问题并采用 MathInstruct (Yue et al., 2023) 的一个子集以及 Lila-OOD (Mishra et al., 2022) 的训练集其中问题通过 CoT 或 PoT 解决。我们的英文集合涵盖了数学的各个领域例如代数、概率、数论、微积分和几何。Chinese mathematical datasets:We collect Chinese K-12 mathematical problems spanning 76 sub-topics such as linear equations, with solutions annotated in both CoT and toolintegrated reasoning format.中文数学数据集我们收集了中文K-12数学问题涵盖76个子主题如线性方程并以CoT和工具集成推理格式注释了解决方案。3.2. DeepSeekMath-Instruct 7B 的训练与评估In this section, we introduce DeepSeekMath-Instruct 7B which undergoes mathematical instruction tuning based on DeepSeekMath-Base. Training examples are randomly concatenated until reaching a maximum context length of 4K tokens. We train the model for 500 steps with a batch size of 256 and a constant learning rate of 5e-5.在本节中我们将介绍 DeepSeekMath-Instruct 7B它是在 DeepSeekMath-Base 的基础上进行数学指令微调得到的。训练样本被随机连接直到达到 4K tokens 的最大上下文长度。我们以 256 的批量大小和 5e-5 的恒定学习率训练模型 500 步。We evaluate models’ mathematical performance both without and with tool use, on 4 quantitative reasoning benchmarks in English and Chinese. We benchmark our model against the leading models of the time:我们评估了模型在英语和中文的4个定量推理基准上的数学性能包括不使用工具和使用工具两种情况。我们将我们的模型与当时的领先模型进行了基准测试Closed-source modelsinclude: (1) the GPT family among which GPT-4 (OpenAI, 2023) and GPT-4 Code Interpreter2are the most capable ones, (2) Gemini Ultra and Pro (Anil et al., 2023), (3) Inflection-2 (Inflection AI, 2023), (4) Grok-13, as well as models recently released by Chinese companies including (5) Baichuan-34, (6) the latest GLM-45from the GLM family (Du et al., 2022). These models are for general purposes, most of which have undergone a series of alignment procedures.闭源模型包括1GPT系列其中GPT-4 (OpenAI, 2023) 和 GPT-4 Code Interpreter 2 是能力最强的模型2Gemini Ultra 和 Pro (Anil et al., 2023)3Inflection-2 (Inflection AI, 2023)4Grok-1 3以及最近中国公司发布的模型包括5Baichuan-3 46来自GLM系列的最新GLM-4 5 (Du et al., 2022)。这些模型都是通用的其中大多数都经过了一系列对齐程序。Open-source modelsinclude: general models like (1) DeepSeek-LLM-Chat 67B (DeepSeek-AI, 2024), (2) Qwen 72B (Bai et al., 2023), (3) SeaLLM-v2 7B (Nguyen et al., 2023), and (4)开源模型包括通用模型如1DeepSeek-LLM-Chat 67B (DeepSeekAI, 2024)2Qwen 72B (Bai et al., 2023)3SeaLLM-v2 7B (Nguyen et al., 2023)以及42https://openai.com/blog/chatgpt-plugins#code-interpreter3https://x.ai/model-card4https://www.baichuan-ai.com5https://open.bigmodel.cn/dev/api#glm-4ChatGLM3 6B (ChatGLM3 Team, 2023), as well as models with enhancements in mathematics including (5) InternLM2-Math 20B 6 which builds on InternLM2 and underwent math training followed by instruction tuning, (6) Math-Shepherd-Mistral 7B which applys PPO training (Schulman et al., 2017) to Mistral 7B (Jiang et al., 2023) with a process-supervised reward model, (7) the WizardMath series (Luo et al., 2023) which improves mathematical reasoning in Mistral 7B and Llama-2 70B (Touvron et al., 2023) using evolve-instruct (i.e., a version of instruction tuning that uses AI-evolved instructions) and PPO training with training problems primarily sourced from GSM8K and MATH, (8) MetaMath 70B (Yu et al., 2023) which is Llama-2 70B fine-tuned on an augmented version of GSM8K and MATH, (9) ToRA 34B Gou et al. (2023) which is CodeLlama 34B fine-tuned to do tool-integrated mathematical reasoning, (10) MAmmoTH 70B (Yue et al., 2023) which is Llama-2 70B instruction-tuned on MathInstruct.ChatGLM3 6B [NT0](ChatGLM3 团队2023)以及在数学方面有所增强的模型包括 (5) InternLM2-Math 20B 6它基于 InternLM2 构建并经过数学训练和指令调整(6) Math-Shepherd-Mistral 7B它将 PPO 训练Schulman 等人2017应用于 Mistral 7BJiang 等人2023并采用过程监督奖励模型(7) WizardMath 系列Luo 等人2023它使用 evolve-instruct即使用 AI 进化的指令的指令调整版本和 PPO 训练来改进 Mistral 7B 和 Llama-2 70BTouvron 等人2023中的数学推理训练问题主要来自 GSM8K 和 MATH(8) MetaMath 70BYu 等人2023它是 Llama-2 70B 在 GSM8K 和 MATH 的增强版本上进行微调的模型(9) ToRA 34B Gou 等人 (2023)它是 CodeLlama 34B 经过微调以进行工具集成数学推理的模型(10) MAmmoTH 70BYue 等人2023它是 Llama-2 70B 在 MathInstruct 上进行指令调整的模型。As shown in Table 5, under the evaluation setting where tool use is disallowed, DeepSeekMathInstruct 7B demonstrates strong performance of step-by-step reasoning. Notably, on the competition-level MATH dataset, our model surpasses all open-source models and the majority of proprietary models (e.g., Inflection-2 and Gemini Pro) by at least 9% absolute.如表5所示在禁止使用工具的评估设置下DeepSeekMathInstruct 7B 在逐步推理方面表现出色。值得注意的是在竞赛级别的MATH数据集上我们的模型在至少9%的绝对值上超越了所有开源模型以及大多数专有模型例如Inflection-2和Gemini Pro。Table 5 | Performance of Open- and Closed-Source models with both Chain-of-Thought and Tool-Integrated Reasoning on English and Chinese Benchmarks. Scores in gray denote majority votes with 32 candidates; The others are Top1 scores. DeepSeekMath-RL 7B beats all open-source models from 7B to 70B, as well as the majority of closed-source models. Although DeepSeekMath-RL 7B is only further trained on chain-of-thought-format instruction tuning data of GSM8K and MATH, it improves over DeepSeekMath-Instruct 7B on all benchmarks.表5 开源与闭源模型在英文和中文基准测试上的性能表现测试方式同时包含思维链Chain-of-Thought和工具集成推理Tool-Integrated Reasoning。灰色分数表示使用32个候选结果进行多数投票majority vote的得分其余分数为Top1得分即单次输出的准确率。DeepSeekMath-RL 7B 击败了所有参数规模从7B到70B的开源模型以及大多数闭源模型。尽管 DeepSeekMath-RL 7B 仅使用 GSM8K 和 MATH 的思维链格式指令微调数据进行了进一步训练但它在所有基准测试上均优于 DeepSeekMath-Instruct 7B。This is true even for models that are substantially larger (e.g., Qwen 72B) or have been specifically enhanced through math-focused reinforcement learning (e.g., WizardMath-v1.1 7B). While DeepSeekMath-Instruct rivals the Chinese proprietary models GLM-4 and Baichuan-3 on MATH, it still underperforms GPT-4 and Gemini Ultra.即使对于模型规模大得多例如 Qwen 72B或通过以数学为中心的强化学习例如 WizardMath-v1.1 7B进行了专门增强的模型这也是成立的。尽管 DeepSeekMath-Instruct 在 MATH 基准测试上可以与中国的专有模型 GLM-4 和 Baichuan-3 相媲美但其性能仍逊于 GPT-4 和 Gemini Ultra。Under the evaluation setting where models are allowed to integrate natural language reasoning and program-based tool use for problem solving, DeepSeekMath-Instruct 7B approaches an accuracy of 60% on MATH, surpassing all existing open-source models. On the other benchmarks, our model is competitive with DeepSeek-LLM-Chat 67B, the prior state-of-the-art that is 10 times larger.在允许模型整合自然语言推理和基于程序的工具使用进行问题求解的评估设置下DeepSeekMath-Instruct 7B 在 MATH 数据集上达到了 60% 的准确率超越了所有现有的开源模型。在其他基准测试中我们的模型与之前的最先进模型 DeepSeek-LLM-Chat 67B 具有竞争力而后者规模是我们的 10 倍。问题1总结一下3.1 SFT 数据整理数据规模共776K条训练样本覆盖范围英语和中文涵盖不同数学领域代数、概率、数论、微积分、几何等和不同难度级别三种推理格式CoT思维链逐步文字推导PoT程序思维用代码解决问题工具集成推理结合自然语言和外部工具如 Python英文数据来源GSM8K、MATH带工具集成标注、MathInstruct 子集、Lila-OOD中文数据来源K-12 数学问题覆盖 76 个子主题如线性方程3.2 DeepSeekMath-Instruct 7B 的训练与评估训练设置基于 DeepSeekMath-Base 7B 继续训练样本随机拼接至 4K tokens 上下文训练 500 步batch size 256学习率 5e-5评估结果测试设置核心结论禁用工具纯 CoT 推理• MATH 竞赛级基准上超越所有开源模型7B~70B和大多数闭源模型如 Gemini Pro、Inflection-2领先幅度 ≥ 9%• 与国产闭源 GLM-4、Baichuan-3 相当但仍略低于 GPT-4 和 Gemini Ultra允许工具使用CoT Python• MATH 准确率接近60%再次超越所有开源模型• 其他基准与DeepSeek-LLM-Chat 67B参数量大 10 倍表现相当关键亮点一个仅 7B 参数的模型通过高质量的数学预训练 多格式指令微调在无工具推理场景下击败了参数量大 10 倍甚至数十倍的通用模型以及专门做过数学强化学习的模型如 WizardMath。问题2多格式指令微调多格式指令微调 指的就是这个SFT监督微调吗具体是怎么做的是的多格式指令微调指的就是这里的 SFTSupervised Fine-Tuning监督微调阶段。具体来说就是在 SFT 阶段训练数据中的答案部分不是单一格式而是混合了三种不同的推理格式让模型学会根据问题类型或提示要求用不同方式输出解题过程。三种格式具体是什么论文中明确提到的三种格式格式全称输出形式适用场景CoTChain-of-Thought纯自然语言逐步推导不需要复杂计算靠逻辑推理即可PoTProgram-of-Thought写 Python 代码来解题需要精确计算、方程求解、迭代等Tool-IntegratedTool-Integrated Reasoning自然语言 代码/工具调用交替需要结合推理和外部工具如计算器、Python示例对比解一道数学题CoT 格式设 x 为苹果的数量… 根据题意列出方程… 解得 x 12… 所以答案是 12。PoT 格式apples24orangesapples/2totalapplesorangesprint(total)Tool-Integrated 格式首先我们需要计算橙子的数量调用 Python 执行24 / 2 12然后计算总数24 12 36。所以答案是 36。SFT 阶段具体怎么做的1. 数据来源与格式分配论文把不同来源的数据预先标注成不同格式然后混合在一起GSM8K 和 MATH标注了Tool-Integrated格式即带工具调用的解法MathInstruct 子集 Lila-OOD包含CoT或PoT解法中文 K-12 数据同时标注了CoT和Tool-Integrated两种格式总共776K 条样本。2. 训练方式论文 3.2 节的描述非常简洁Training examples are randomly concatenated until reaching a maximum context length of 4K tokens. We train the model for 500 steps with a batch size of 256 and a constant learning rate of 5e-5.具体解读随机拼接把多条样本可能是 CoT、可能是 PoT、可能是 Tool-Integrated随机组合拼满 4K tokens 作为一个训练序列统一训练模型不区分格式类型统一做 next-token prediction。它看到 CoT 样本就学习写文字推导看到 PoT 样本就学习写代码看到 Tool-Integrated 就学习交替使用文字和工具训练量很小只有 500 步 × 256 batch 约 128K 个训练样本远小于 776K说明可能只遍历了部分数据或者 776K 是拼接前的数量3. 为什么叫多格式关键就在于这776K 条数据不是同一种答案风格。模型在 SFT 阶段同时学会了像人一样逐步思考CoT像程序员一样写代码解题PoT像使用工具一样在推理过程中调用 PythonTool-Integrated这使得模型在后续评估时可以根据提示词选择不同模式提示逐步解释 → 输出 CoT提示写 Python 解决 → 输出 PoT提示你可以使用工具 → 输出 Tool-Integrated补充SFT 和 RL 阶段的格式差异值得注意的是论文后面提到Although DeepSeekMath-RL 7B is only further trained onchain-of-thought-formatinstruction tuning data of GSM8K and MATH…这说明SFT 阶段用了三种格式混合的数据CoT PoT Tool-IntegratedRL 阶段GRPO只用了CoT 格式的 GSM8K 和 MATH 数据也就是说多格式是 SFT 阶段特有的设计RL 阶段为了简化只保留了纯文字推理CoT进行强化学习。问题3更直观的解释好我用最直观的方式给你拆解。想象你正在训练一个学生解题但这个学生要同时学会三种不同的答题风格。一、三种格式长什么样看具体数据假设题目是小明有 24 个苹果橙子是苹果的一半一共有多少个水果格式 1CoT思维链—— 像写小作文训练样本[问题] 小明有 24 个苹果橙子是苹果的一半一共有多少个水果 [要求] 请逐步推理 [答案] 已知苹果有 24 个。 橙子是苹果的一半所以橙子有 24 ÷ 2 12 个。 水果总数 苹果 橙子 24 12 36 个。 因此答案是 36。模型学到的是看到逐步推理就输出一段纯文字推导。格式 2PoT程序思维—— 像写代码训练样本[问题] 小明有 24 个苹果橙子是苹果的一半一共有多少个水果 [要求] 请写 Python 程序解决 [答案] python apples 24 oranges apples // 2 total apples oranges print(total) # 输出36模型学到的是看到写 Python就输出一段可执行代码。格式 3Tool-Integrated工具集成—— 像边想边查计算器训练样本[问题] 小明有 24 个苹果橙子是苹果的一半一共有多少个水果 [要求] 你可以使用 Python 工具辅助计算 [答案] 首先苹果数量是 24 个。 我需要计算橙子数量调用 Python 执行 24 / 2 12。 然后计算总数调用 Python 执行 24 12 36。 所以一共有 36 个水果。模型学到的是看到可以使用工具就在文字推理中穿插代码调用。二、SFT 训练时到底在干什么论文说把776K 条这样的样本混合在一起然后样本 1一道 CoT 数学题纯文字推导 样本 2一道 PoT 数学题写代码 样本 3一道 Tool-Integrated 数学题文字代码 样本 4又是一道 CoT 题 样本 5又是一道 PoT 题 ...打乱顺序随机拼接成每段 4K tokens 的长文本然后让模型做**“预测下一个词”**的训练。你可以想象成给学生发了一本“混合练习题册”第 1 题用文字写步骤第 2 题写 Python 代码第 3 题边想边用计算器第 4 题又是文字步骤…学生模型做多了就发现规律“哦原来题目开头的’要求’决定了我要用什么格式回答”三、模型学完之后的效果训练完成后模型变成了一个**“多面手”**。你给它同样的数学题但换不同的提示词它就能切换模式你问它它回答“请逐步推理”输出纯文字步骤CoT 模式“请写 Python 解决”输出代码PoT 模式“你可以使用 Python 工具”输出文字代码混合Tool 模式关键就在于模型在 SFT 阶段同时见过这三种标准答案所以学会了看提示词选格式。四、为什么叫多格式为什么这样混合有效如果不混合只训练 CoT模型只会写小作文你让它写代码它可能乱写文字。如果只训练 PoT模型只会写代码你让它解释思路它可能给你输出一段 Python。混合训练的好处就像让厨师同时学中餐、西餐、日料看到客人点牛排 → 做西餐看到客人点寿司 → 做日料看到客人点炒饭 → 做中餐模型学会了**“看指令选风格”**而不是只会一种固定写法。五、补充SFT 和 RL 的区别论文后面提到 RL 阶段GRPO只用了CoT 格式的数据。这意味着SFT 阶段学基础三种格式都学让模型什么都会RL 阶段强化提升只拿 CoT 格式做强化学习专门打磨纯文字推理的能力就像先让学生同时学语文、数学、英语SFT然后专门找语文老师给他开小灶只练作文RL这样最终模型在纯文字推理上被强化到了极致但因为它 SFT 阶段学过其他格式所以基础能力还在只是 RL 阶段没有继续练代码和工具而已。问题4拼接成每段 4K tokens 的长文本不会被截断吗随机拼接成每段 4K tokens 的长文本然后让模型做**“预测下一个词”**的训练。这样会不会刚好这4K tokens的长文本是被截断的比如最后是一个不完整的问题。而且为什么RL只练纯文字推理不继续练代码和工具是后者比较简单不用再练了吗你这两个问题都问到关键细节了我逐个解释。第一个问题随机拼接会不会截断在问题中间实际操作中通常不会硬截断破坏样本。论文里说的randomly concatenated在工程实现上一般有两种做法做法 A打包Packing 掩码隔离把多个完整样本用EOS结束符分隔然后首尾相接拼进 4K tokens。比如[问题1]...[答案1]EOS[问题2]...[答案2]EOS[问题3]...[答案3]...如果拼到某个样本时刚好快满 4K那就把这个完整样本放到下一个序列里而不是从中间砍断。同时训练时会用Attention Mask或Position IDs让模型知道“虽然这些文本物理上连在一起但EOS前面和后面是两个互不相关的题目前面题目的答案不能影响后面题目的推理。”做法 B即使真的截断了也没那么严重如果确实因为工程简化在 4K 边界处把一个样本切成了两半对 Decoder-only 模型如 GPT、Llama来说模型预训练时本来就见过无数不完整的网页片段一个网页被切成多段最后一段没头没尾。模型会学到“这段文本到这里突然结束说明这是一个片段的边界。”只要截断是随机的、不是系统性地总在某个位置截断模型依然能学到稳定的模式。但有个更关键的问题Loss 计算SFT 训练通常只计算答案部分的 Loss问题部分是不算 Loss 的或者权重很低。如果多个样本硬拼在一起必须确保模型知道哪里是问题 A 的答案哪里是问题 B 的答案否则 Loss 会算乱。所以工程上一定会用样本边界标记如 EOS 或特殊分隔符来处理不会真的无脑乱拼。第二个问题为什么 RL 只练纯文字CoT不继续练代码和工具不是因为代码/工具简单不用练恰恰相反——是因为 RL 阶段练代码和工具太麻烦了而且论文想集中火力突破最难的部分。具体原因有几个1. Reward 信号越简单RL 越稳定RL 需要一个明确的分数来告诉模型这个答案好那个答案坏。格式Reward 怎么算难度CoT纯文字提取最终数字跟标准答案比对 → 对就是 1错就是 0极简PoT写代码需要把代码送进 Python 执行器运行 → 捕获输出 → 再比对需要沙箱环境Tool-Integrated工具调用需要模拟或真实执行多次工具调用中间步骤还要判断对错pipeline 极复杂GRPO 本身每次要采样一组group答案比如 8~16 个候选如果每个候选都要执行 Python那训练速度会慢几十倍而且需要搭建安全的代码执行环境防止模型生成rm -rf /这种危险代码。2. 论文的核心目标是数学推理不是工具使用看论文的标题和核心卖点“Pushing the Limits ofMathematical Reasoning”竞赛级数学 benchmark如 MATH的最高难度题目恰恰是纯逻辑推导不是靠写代码暴力计算就能解决的。SFT 阶段已经让模型学会了用工具RL 阶段想把有限的算力用在提升思维链质量上——比如怎么更好地分解问题、怎么避免计算错误、怎么检查中间步骤。换句话说SFT广撒网学会三种生存技能写作文、写代码、用工具RL集中资源把最难的写作文推理练到顶尖水平3. 统一范式实验的需要论文后面用 GRPO 做了一大堆对比实验在线 vs 离线、结果监督 vs 过程监督、单轮 vs 迭代。如果同时引入代码和工具变量太多很难 cleanly 地证明是 RL 算法本身带来的提升。只保留 CoT 这种最干净的形式才能让实验结论更 solid。4. 代码/工具能力在 SFT 后已经够用了从表 5 的评估结果看SFT 之后的 DeepSeekMath-Instruct 在允许使用工具的设置下已经很强了MATH 接近 60%。论文认为这部分能力已经满足需求而纯 CoT 的 51.7% 还有提升空间所以 RL 只追这个缺口。总结成一句话SFT 阶段是通识教育让模型多才多艺RL 阶段是高考冲刺只练最容易出分、最需要突破、且最容易打分的科目纯文字推理。