Meta这次在奥赛数学题上拿下五枚金牌、两项满分,最值得琢磨的关键词不是“金牌”,而是“纯推理”。所谓纯推理,就是模型在解题时不能调用外部计算器、不能执行代码、不能去库里检索,只能靠模型自己内部生成推理链条,一步步把题目推导出来。这让它和那些“会调工具、会搜索”的智能体方案形成了本质区别。
这个成绩之所以值得关注,是因为它反映的是模型自身的逻辑能力,而不是工具链的组装能力。对做大模型应用、做算法评估、或者只是想搞懂“AI数学能力强到底强在哪”的人来说,这个事件是一个很好的切入窗口。下面我会先从“纯推理”这个概念拆起,然后讲怎么理解这类评测背后的机制,再给一条可以亲手验证的最小实验流程,最后把容易误判的坑点说清楚。
1. 先拆“纯推理”:为什么这个定语比奖牌数更重要
1.1 带工具解题和纯推理解题是两种完全不同的逻辑
现在很多AI解题方案其实是“带工具解题”。模型可以写一段Python代码去计算,可以调用符号计算库,可以反复试错,最后把运行结果整理成答案。这个过程里,模型更像一个“调度的脑子”,真正算对的人是工具。
纯推理不一样。模型不能把“2的10次方”交给外部程序算,也不能用代码验证某个等式是否成立。它必须在自己生成的token里,把每一步推出来,然后给出最终答案。这个过程如果中间某一步符号错了、条件丢了、公式记混了,后面就会越错越远。
所以同样是奥赛题,带工具拿到高分和纯推理拿到高分,难度完全不同。这也是“纯推理”这个定语值得单独拿出来说的原因。
1.2 纯推理成绩的含金量在哪里
纯推理拿奥赛金牌,至少说明几件事。
第一,模型的多步推理能力已经能稳定覆盖几十步的推导链条。奥赛题不是“3+5等于几”那种单步问题,它需要把条件拆开、组合、变换,往往要写满一页纸。模型能一路推到底,说明它在长时间推理过程中没有丢掉关键条件。
第二,模型对数学符号、公式变换、逻辑约束的把握比大部分人预想的要好。数学推理是最容易被“一本正经胡说八道”毁掉的场景。只要有一个步骤不合法,结果就很难救回来。能拿满分,说明模型生成的推理链在自动判分标准下是正确的。
第三,这个成绩可以反推训练数据里大概率包含大量高质量数学题和完整解答过程。模型不是天生会做奥赛题,它是从数据里学到的。这也能解释为什么有些模型在题库类任务上表现好,换到开放问题时却不稳定。
1.3 泼点冷水:奖牌不是万能钥匙
单次竞赛成绩能说明推理能力的一部分,但不能说明通用能力。
竞赛题有明确答案,自动判分很容易做。现实中的问题往往没有标准答案,哪怕人类专家也不一定能达成一致。竞赛题通常条件完备,不会出现信息缺失。现实问题经常要自己判断哪些信息有用,哪些信息要额外获取。
另外,一次成绩容易受到评测集选取和采样策略影响。如果每道题让模型生成很多次,取最优答案算通过,得到的就是“上限成绩”,不是“稳定成绩”。所以看到“五枚金牌”的时候,也要问一句:这个成绩是在什么采样次数、什么温度设置、什么判定规则下得到的。这些细节公开材料里没给全,后续等评测协议放出来,才适合做更严谨的对比。
2. 这次成绩验证了数学推理模型的哪些核心能力
2.1 长链路推理:几十步推导不丢条件
数学奥赛题最典型的特征是步骤多、条件多。一道题从审题到证明,经常需要二三十步以上。模型必须不断地把之前的信息带入后面的步骤,这本质上是一种“状态维护”能力。
很多模型在短对话里表现聪明,但一旦进入长推理,就出现“前面说A,后面变成B”的问题。这次能拿满分,说明模型在长文本生成过程中,对内部状态的维护已经比较稳定。这个问题在日常代码生成、报告生成、复杂数据分析里也一样关键。你让模型写一个上百行的函数,它如果写着写着把变量名改了,或者把前文条件忘了,整个输出就废了。
2.2 多步一致性与自校验能力
另一个值得注意的点是自校验。数学推理的每一行都建立在前一行基础上。模型如果“自我感觉良好”地乱写,每一步都能糊弄过去,但连起来就是错的。能在奥赛题上拿高分,说明模型在生成推理链时,内部已经开始做一种隐式的校验:判断当前步骤是否与前面结论一致,是否存在矛盾符号,是否满足题设约束。
这种能力在长文档生成、代码审查、逻辑分析类任务里同样重要。它不一定是模型主动调用了什么校验机制,更可能是训练数据中大量“正确推理”和“错误推理”的对比,让模型学到了“哪些话能接,哪些话不能接”。
2.3 题型覆盖和答案格式的挑战
奥赛不是只有代数,还有几何、组合、数论。不同题型的解题路径差异很大。几何题需要空间想象,组合题需要枚举和归纳,数论题需要模运算和整除性质。一个模型能在五枚金牌的跨度下覆盖多种题型,说明它不是只背了某一类题,而是具备了一定的泛化能力。
不过也要注意,答案格式对自动判分影响很大。有的题答案是数字,有的是一段证明,有的是“存在/不存在”的判断。判分系统怎么处理不同格式,直接关系到最终正确率。这也是后面做个人评测时最容易踩坑的地方。
3. 想亲手验证?先搭一条最小评测链路
3.1 先选模型:API优先,本地跑先确认硬件
很多人看到这类新闻,第一反应是“我也要跑一下”。如果你只是想验证“纯推理模型到底能不能做奥赛题”,最省事的方式是直接用支持推理能力的API,比如带reasoning能力的模型接口,或者开源社区里明确标注了数学推理能力的模型。这样环境问题最少,可以先把评测思路跑通。
如果你要在本地跑开源模型,先确认两件事:显存够不够、推理框架支不支持。常见环境下,7B到14B级别的模型,用INT8量化可能需要10GB以上显存;如果跑14B以上的模型,显存需求会明显上涨。低显存机器也能试,但要把并发数降下来,单条任务跑,别开并行。
注意:这里不要一上来就买大机器。先把小模型或API跑通,确认输入输出格式没问题,再决定要不要换更大模型。
3.2 准备题目集和标准答案
评测数学推理,题目集是地基。建议从公开竞赛题库里挑30到50道题,覆盖代数、几何、组合、数论四类。每道题要包含三个字段:题目ID、题干文本、标准答案。
标准答案一定要清晰。如果一道题有多个合法答案,判分逻辑就会复杂很多。初期做评测,优先选答案唯一或答案格式固定的题目,这样自动判分才可靠。
还要注意数据的时间窗口。如果模型训练数据里已经包含了近年竞赛题,评测出来就是“训练集得分”,参考价值会打折扣。最好选有一定年份、公开但不太可能被大规模爬虫收录的题目,或者干脆自己改编条件,测试模型的迁移能力。
3.3 写一个统一的提示词模板
提示词必须统一。不要第一题用“请解答”,第二题用“你是数学高手,请写过程”。风格差异会让结果失去可比性。我给一个适合数学评测的基础模板:
你是一个数学竞赛选手。请根据下面这道题,按步骤给出推理过程,并在最后一行输出答案。 题目: {question} 要求: 1. 使用准确符号和文字表达每一步推导。 2. 最后一行必须以“答案:”开头。 3. 不要输出与解题无关的内容。这个模板里的“最后一行必须以‘答案:’开头”很关键。它不是为了限制模型,而是为了后面自动抽取答案时能稳定定位。
3.4 跑起来之后,第一件事是看日志
很多人在评测时直接看最后正确率,这是不对的。第一轮测试的目标是“把流程跑通”,不是“拿到一个高分”。
每道题的输出要单独存成文件,内容包括:题目ID、输入提示词、模型原始输出、抽取出的答案、标准答案、是否正确。这样一旦发现判分异常,可以回溯到原始输出,而不是看到一个“0.6”的成功率干瞪眼。
import json questions = [ { "id": "p001", "question": "题目文本", "answer": "标准答案", }, # 继续添加题目 ] results = [] for item in questions: prompt = build_prompt(item["question"]) output = model_generate( prompt, temperature=0.6, top_p=0.9, max_tokens=2048, ) predicted = extract_answer(output) results.append({ "id": item["id"], "expected": item["answer"], "predicted": predicted, "correct": is_correct(predicted, item["answer"]) }) with open("results.json", "w", encoding="utf-8") as f: json.dump(results, f, ensure_ascii=False, indent=2)这段逻辑不复杂,但已经把评测最关键的三件事固定住了:输入一致、输出留档、可回溯。
4. 评测数学推理模型,参数和判断标准要提前定好
4.1 温度、top_p、max_tokens 怎么取初值
温度影响随机性。数学推理通常不希望模型“太发散”,所以温度不建议太高。0.6左右是一个比较稳的起点;如果目标是看模型的创造力,再往上调;如果目标是稳定复现,可以往下降到0.3。
top_p控制低概率词的截断范围。它与temperature是配合关系,不是越大越好。数值越高,采样范围越大,输出越多样;数值越低,输出越集中。对于答案必须确定的数学题,建议先用0.9或0.95,别直接拉到1.0。
max_tokens要留足。一道奥赛题完整推理可能需要一千到两千token。如果设置太小,推理还没写完就被截断,模型只能给出残缺答案。起步建议1024或者2048,跑完一批看平均输出长度,再决定加不加。
| 参数 | 推荐初值 | 作用 | 调高后 | 调低后 |
|---|---|---|---|---|
| temperature | 0.6 | 控制随机性 | 更发散,容易乱编 | 更保守,可能缺少思路 |
| top_p | 0.9 | 截断低概率词 | 多样性增加 | 输出更集中 |
| max_tokens | 2048 | 控制最大输出长度 | 支持更长推理 | 推理可能被截断 |
| 采样次数 | 5到10 | 评估稳定性 | 稳定性更好,成本高 | 偶然性增大 |
4.2 采样次数:单次结果不等于真实水平
一次跑对和十次跑对九次,含义完全不同。
单次通过率反映的是模型在真实使用中的默认表现。你发一条消息,模型只回答一次,它对了就是对了,错了就是错了。多次通过率反映的是模型的推理上限。如果一道题采样20次,有一次对了就算通过,那得到的就是“上限成绩”。
评测报告里这两者要分开写。可以这样做:
- 每道题先采样1次,算“单次通过率”。
- 每道题再采样5次,只要任一次答案正确,记为“多次通过”。
- 如果采样5次全部正确,记为“稳定通过”。
这样能区分“模型偶尔能想出来”和“模型稳定能想出来”。
4.3 答案抽取和判分不能只靠字符串匹配
自动判分看起来简单,实际坑很多。
比如答案是“2”,模型输出“答案:x = 2”,字符串直接比较两者不相等,但实际判分应该算通过。因此抽取答案时,要定义好规则:只取“答案:”后面的核心内容,做标准化之后再比较。
答案标准化至少包括:
- 去掉空格、换行、句号。
- 去除前后缀,比如“答案是”“x =”这类修饰。
- 对分数、小数、根号形式做统一。
- 对字母大小写做归一化。
如果答案是命题判断,比如“存在”或“不存在”,要单独处理。不要试图用一条正则解决所有情况。建议先让模型规范化输出格式,再做规则抽取。
4.4 通过率、满分率怎么算才是稳健的
一组30道题,采样5次,最终指标可以这样算:
- 单次通过率:所有题目第一次采样的正确率。
- 多次通过率:每道题5次采样中至少1次正确的比例。
- 稳定通过率:每道题5次采样全部正确的比例。
- 满分率:所有题目都稳定通过的比例。
这四项指标分开看,能帮助判断模型是“上限高但不稳定”还是“又高又稳”。很多新闻标题只报最好指标,实际产品落地时,更应该参考单次通过率和稳定通过率。
5. 最容易误判的五种情况
5.1 数据集泄漏:看似强大,其实在背答案
这是最隐蔽的坑。如果评测题目恰好出现在模型训练数据里,模型可能已经“见过”标答。这时候评测得到的分数,只能说明它记住了题目,不能说明它具备推理能力。
所以公开竞赛题要谨慎使用。尤其是那些被反复转载、进入通用开源数据集的题目,泄漏风险很高。个人评测时,建议混入一部分自己改编的题,或者保留一部分“新题”作为对照组。如果模型在新题上掉链子,在旧题上却接近满分,就不要把功劳算在推理能力上。
5.2 提示词不一致:评测结果全是垃圾输入
有些同学今天用中文提示词,明天换成英文提示词,后天在提示词里加一句“请仔细思考”。这样跑出来的结果没法横向比较。
更严重的是,有些提示词会“泄漏答案”。比如你在问题里写了“这个方程有两个整数解”,模型可能直接顺着“整数解”猜答案,而不是通过推理得出。评测用提示词要尽量减少这类额外信息。
5.3 只看最终答案,忽略推理过程
最终答案对,不代表推理过程对。有的模型可能蒙对了,或者用了一组不严谨的步骤。在纯推理评测里,推理过程本身就是产物,值得单独检查。
批量评测时可以让人工抽查10%到20%的推理链,看是否存在关键步骤跳跃。如果出现“这步怎么推出来的不知道,但答案对了”的情况,要注意模型可能生成了一些隐性推理,也可能只是运气好。
5.4 把奥赛能力当成产品能力
数学竞赛能力是“领域高处”的能力,不等于产品里需要的通用能力。一个能拿奥赛金牌的模型,照样可能在长文本摘要里丢失主题,在代码生成里写出坏味道很重的函数。
做业务选型时,要看它在你自己的数据集上的表现,而不是看新闻标题。奥赛成绩说明它的推理基础不弱,但还是要用实际任务验收。
5.5 批量跑的时候,并发和失败重试没规划
批量评测最怕的不是模型笨,而是任务跑了一半卡住。网络超时、显存不足、请求限流,都可能导致某道题没跑完。
建议在评测脚本里加上失败重试逻辑,并把每次请求的输入输出都写入日志。不要漏掉哪道题就默默跳过,要有明确的“未完成清单”。我自己一般会在每50道题之后做一次进度检查,确认没有静默失败。
6. 这类评测对普通开发者有什么参考价值
6.1 哪些业务真的适合“纯推理”模型
纯推理模型适合的是“逻辑链条长、答案可校验、条件封闭”的任务。典型场景包括:
- 自动解题类产品,比如数学学习助手。
- 代码逻辑推断,不运行代码,只做静态分析。
- 复杂规则问答,比如政策条文拆解、合同条款推导。
- 报告生成里的定量分析部分,让模型自己推导而不是乱编数字。
反过来,如果需要外部实时信息,比如搜索天气、查询库存、拉取数据库,那就别把纯推理模型顶在最前面,还是要配合工具链路。
6.2 设计符合业务逻辑的验收指标
竞赛评测用“正确率”就够了,但业务评测不行。业务上你必须想清楚:用户能接受模型错几次?答错之后有没有兜底?输出延迟是否可接受?突发流量时并发扛不扛得住?
这些指标和纯推理能力同等重要。我见过不少项目,模型推理能力没问题,最后却死在“没有超时控制”“没有重试机制”“结果格式不稳定”。
6.3 从竞赛评测到工程落地还有几步
竞赛评测只是第一步。真正常用的方式是:
- 第一步,用竞赛题或人工编写的逻辑题验证模型推理下限。
- 第二步,拿业务数据构造一批小样本,先人工标注标准答案。
- 第三步,写提示词和答案抽取脚本,跑出第一批初测结果。
- 第四步,从错误样本里归纳失败模式,优化提示词或选择更合适的模型。
- 第五步,做并发和稳定性测试,看真实负载下会不会超时。
这一步走完,才能判断一个数学推理模型是不是真的适合你的业务。
这次Meta的成绩,最值得学习的不是“AI已经很强”这个结论,而是“如何科学地评估一个模型的推理能力”。工具会迭代,模型会更新,但评测思路是长期有用的。等后续公开更多评测协议,或者开源模型放出正式版本,我建议再把这套链路跑一遍,对比一下新模型和旧模型在纯推理任务上的差异。那时候得到的数据,比单纯看新闻标题有价值得多。