本文翻译自: https://medium.com/@florian\_algo/s1-explained-can-a-50-llm-rival-deepseek-r1-dc4b30c87837
自 2025 年 1 月以来,DeepSeek-R1模型一直备受关注。而李飞飞团队发布了名为s1的推理大模型,据说它只使用 1k 数据,与 OpenAI 的 o1 和 DeepSeek-R1 等顶级模型的性能相当,成本仅为 50 美元。
出于对它的功能的好奇,我深入研究了 s1 论文。以下是我以简单的 Q&A 形式找到的内容——以及一些想法和见解。
一、s1 真的匹配甚至超越 OpenAI o1 和 DeepSeek-R1 吗?
图 1: s1-32B 是一个开放且样本高效的推理模型。
如图 1 所示,s1 没有超过 o1 甚至 o1-mini。
至于 DeepSeek-R1,s1 达不到要求,尤其是与 DeepSeek-R1 从 800K 数据中蒸馏出来的 32B 模型相比,差距很大。
因此,说 s1 与这些顶级模型“竞争”并不完全公平。
二、那么 s1 在哪些方面表现良好呢?
如图 1 所示,s1 总体性能优于 o1-preview 和 Sky-T1。它在 AIME 和 MATH 上也超过了 QWQ-32B,在 GPQA 上优于 Bespoke-32B。
此外,预算强制方法被证明非常有效,将 AIME 上的 s1 性能提高了 6.7%,令人印象深刻。
三、s1 真的只用 1K 数据就实现了这一目标吗?
不完全是。
1K 数据集是从更大的 59K 数据集中精心挑选的,以节省训练时间。
图 2:1K 训练 (s1K) 与完整数据集 (59K-full) 性能相匹配。
事实上,对完整的 59K 示例(包括 1K 子集中的所有内容)进行训练,与仅使用选定的 1K 相比,提升不明显。
四、如何构建 59K 数据集
遵循三项指导原则:
-
质量: 通过删除格式错误和不相关的内容来确保高质量的数据。
-
难度:专注于更具挑战性的问题,以加强模型的推理能力。
-
多样性:包括来自数学、物理和生物学等各个领域的问题,以提高泛化能力。
该过程从从 16 个不同来源收集 59,029 个推理问题开始,包括数学竞赛问题、科学问题等......
为了提高推理能力,引入了两个新的数据集:s1-prob,以斯坦福大学的博士水平概率考试问题为特色,以及 s1-teasers,一系列具有挑战性的逻辑谜题。
每个问题都丰富了使用 Google Gemini Flash Thinking API 生成的推理跟踪和响应,形成了一个(问题、生成的推理跟踪和生成的解决方案)三元组。此外,还删除了重复项。
五、如何构建 1k 数据集?
该过程从清理 59K 数据集开始,删除格式错误和失败的 API 生成,留下 51581 个高质量样本。
为了过滤难度,使用 Qwen2.5-7B 和 Qwen2.5-32B 对数据集进行了评估。两个模型都可以轻松解决的任何问题都被丢弃,从而将问题集减少到 24,496 个更难的问题。
接下来,Claude 3.5 Sonnet 对问题进行了分类,以确保涵盖 50 个学科,包括数学、物理和计算机科学。
在每个主题中,问题是随机选择的,优先考虑那些需要更长推理链以提高复杂性和多样性的问题。这个过程一直持续到选择了 1,000 个代表性问题,形成了最终的 s1K 数据集。
该数据集的优势在于其小巧但高质量的设计 — 源自不同的数据集,经过严格过滤和优化,可有效训练强推理模型。
六、如何训练s1?
以下是 s1 的训练过程:
- 选择基本模型: 选择 Qwen2.5–32B-Instruct 作为基础,该模型已经具备了扎实的推理能力。
- 准备训练数据: 之前的 s1K 数据集用于微调。
- 监督微调 (SFT): 该模型在 s1K 数据集上进行训练,逐步学习遵循结构化推理路径。
- 训练设置: 使用 PyTorch FSDP 进行分布式训练,该过程在 16 个 NVIDIA H100 GPU 上运行,仅需 26 分钟即可完成。
七、s1 真的只需 50 美元吗?
如果我们只计算用于最终微调步骤的 GPU 时间,那么是的 — 甚至更少。s1–32B 只需要 7 个 H100 GPU 小时。
这个 50 USD 的数字不包括以下费用:
- Data collection 数据采集
- Testing and evaluation 测试和评估
- Human labor 人力
- Pre-training Qwen2.5–32B 训练前 Qwen2.5–32B
因此,虽然微调 s1 非常便宜,但开发 s1 的全部成本要高得多。
八、什么是预算强制?
在推理阶段,s1 引入了一种预算强制方法来控制推理时间和计算。这是一个简单的解码时间干预,控制思维标记的数量:
- 为了强制执行最大值,将附加 end-of-thinking token 和 “Final Answer:” 以强制提前退出并提示模型提供其最佳答案。
- 为了强制执行最小值,会抑制 end-of-thinking 标记,并且可以将 “Wait” 添加到推理路径中,从而鼓励进一步的思考。
图3.s1-32B 的预算强制。模型尝试在 “...是 2.“,但它抑制了思考结束标记分隔符,而是附加了 ”Wait“,导致 s1-32B 自行更正其答案。
以这个例子为例:“How many ‘r’s are in ‘raspberry’?”
初步推理: 模型逐个计算 'r':第 1 个 'r' → Count = 1, ...,第 7 个 'r' → Count = 2。
它停在第 8 步并给出错误答案:2(正确答案是 3)。
通常,假设模型的第一次尝试是正确的,模型将停止。但在这里,预算强制介入了:
-
系统阻止停止信号,并在推理路径的末尾添加 “Wait”,迫使模型重新思考。
-
该模型重新检查该单词,意识到它遗漏了一个 'r',并将自身更正为 3。
通过强制第二次查看,它可以自我校正并提高准确性。通过在每个思考过程结束时添加短语“Wait! Maybe I made some mistakes! I need to rethink from scratch.”进行反思。
九、讨论
看完整篇论文后,我发现 s1 与 DeepSeek-R1 的冷启动阶段有些相似。DeepSeek-R1 使用更长的推理链(数千个步骤),在基础模型获得基本推理能力后,它会进行强化学习。
还可以将s1 视为再现了将 DeepSeek-R1 671B 模型提炼为 32B 版本的蒸馏过程。
在我看来,s1 的关键贡献在于其训练数据的开源。也许 “小 SFT 数据 + 测试时间缩放 ”可以成为提高LLM推理能力的新范式。
此外,我还有一些担忧:
- 正如我们前面所讨论的,这种反射方法仍然过于简单,缺乏更精细的控制。此外,尚未对其进行全面测试,以确定重新生成的路径是否足够多样化,或者它们是否可以有效避免重复过去的错误。
- 没有与编程相关的测试,基准测试也不涵盖任何编程任务。
- 它没有完全解决监督微调 (SFT) 和预算强制 (BF) 之间哪种方法更有效。图 1 显示了没有 BF 的 SFT 的结果 (s1 w/o BF),但它不包括没有 SFT 的 Qwen2.5-32B 的结果,其中思维是通过 BF 直接扩展的。