DeepSeek-Math 7B 数学推理模型本地上手指南
【免费下载链接】DeepSeek-MathDeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Math
DeepSeek-Math 是 DeepSeek 开源的 7B 数学推理大语言模型,基于 DeepSeek-Coder-v1.5 7B 继续预训练而来。它在竞赛级 MATH 数据集上取得了 51.7% 的 Top@1 成绩(官方 README 数据,未使用外部工具),接近 Gemini-Ultra 和 GPT-4 的水平。如果你想在本地跑一个专门解数学题的开源模型,或想复现它的数学基准评测,这份指南会在 10 分钟内讲清楚它是什么、怎么跑、边界在哪。
项目定位:它能做什么,不能做什么
这一节回答:是否值得投入时间试用。
先说清楚仓库里有什么。仓库主体是模型发布说明、评测代码和结果数据,而不是一个应用工程:
replicate/提供基于 Cog 的推理服务入口,replicate/predict.py是单文件预测脚本;evaluation/是完整的基准评测套件,覆盖 few_shot_test_configs.json 和 zero_shot_test_configs.json 配置,包含 GSM8K、MATH、CMATH、Gaokao、SAT、OCW、MMLU-STEM 等数据,位于 evaluation/datasets/;- outputs.zip 是官方发布的全部模型输出,evaluation_results.json 是汇总后的评测结果。
它能做什么:
- 中英文数学解题:instruct 和 RL 版本支持思维链(Chain-of-Thought,即让模型先写出逐步推理过程再给答案)推理,对英文和中文问题分别有官方推荐的提示格式;
- 工具集成推理:base 模型继承自代码模型 DeepSeek-Coder,可以写 Python 程序辅助解题和验证,这是它区别于普通数学模型的路线;
- 复现评测:
evaluation/目录可以按论文设定重跑 zero-shot 与 few-shot 评测。
它不能做什么:
- 上下文长度固定为 4096 token,不适合长文档数学分析或多轮超长对话;
- 官方明确不建议在输入中携带 system prompt,该特性与当前版本模型不兼容;
- 模型权重不在本仓库内,需从 Hugging Face 下载(base / instruct / RL 三个版本);
- 它不是通用助手,非数学的自然语言与代码能力只是"可比的副产品",别拿它替代通用模型。
快速开始:最小可运行路径
这一节回答:本地试用配置怎么做,最少要执行哪几步。
环境准备
需要 Python + PyTorch + transformers,建议 GPU(bfloat16 推理)。最小安装:
pip install torch transformers accelerate模型权重在 Hugging Face 上,仓库 README 列出了三个可下载版本:deepseek-math-7b-base、deepseek-math-7b-instruct、deepseek-math-7b-rl。如果只在本仓库内工作,可先克隆评测与脚本部分:
git clone https://gitcode.com/GitHub_Trending/de/DeepSeek-Math第一次调用 base 模型
以下代码来自仓库 README 的 Quick Start,适用于有 CUDA GPU 的环境,7B 模型 bfloat16 推理约需 15GB 显存,显存不足时建议加量化参数:
import torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig model_name = "deepseek-ai/deepseek-math-7b-base" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="auto" ) model.generation_config = GenerationConfig.from_pretrained(model_name) model.generation_config.pad_token_id = model.generation_config.eos_token_id text = "The integral of x^2 from 0 to 2 is" inputs = tokenizer(text, return_tensors="pt") outputs = model.generate(**inputs.to(model.device), max_new_tokens=100) print(tokenizer.decode(outputs[0], skip_special_tokens=True))跑通这段代码,就验证了"下载—加载—生成"整条链路。
按任务拆解能力:base 补全、instruct 对话、工具推理
这一节回答:不同任务该选哪个模型版本、输入输出长什么样、常见坑在哪。
任务一:用 instruct 模型做对话式解题
- 适用场景:把数学题交给模型,希望得到带推理步骤的完整解答。
- 输入输出:输入是带思维链指令的对话消息,输出是推理过程加
\boxed{}里的最终答案。 - 使用建议:官方要求对 instruct 和 RL 版本使用思维链提示,英文问题追加
Please reason step by step, and put your final answer within \boxed{}.,中文问题追加请通过逐步推理来解答问题,并把最终答案放置于\boxed{}中。。这是硬性要求,不用该格式分数会明显下降。 - 常见坑:
messages = [ {"role": "user", "content": "what is the integral of x^2 from 0 to 2?\nPlease reason step by step, and put your final answer within \\boxed{}."} ] input_tensor = tokenizer.apply_chat_template( messages, add_generation_prompt=True, return_tensors="pt" ) outputs = model.generate(input_tensor.to(model.device), max_new_tokens=100) print(tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True))- 用
apply_chat_template会自动处理bos_token(tokenizer 默认加<|begin▁of▁sentence|>),不要自己手动拼模板时再加一遍; - 不要塞 system prompt,官方明确说该版本不兼容;
- 截取输出时从
input_tensor.shape[1]:开始,否则会把问题本身解码出来。
任务二:用 base 模型做纯文本补全
- 适用场景:研究基座模型行为、做继续预训练前的能力摸底。
- 输入输出:输入是未完成的数学语句(如 "The integral of x^2 from 0 to 2 is"),输出是接着写出的答案,没有对话格式。
- 使用建议:base 模型不理解"用户/助手"角色,别套 chat 模板;想要结构化输出就改用 instruct 版本。
任务三:工具集成推理(写代码解题)
- 适用场景:需要数值验证的题目,比如求多项式在区间上的最值、复杂表达式求值。
- 输入输出:输入是题目加"结合自然语言和 Python 程序解答"的指令,输出是推理加可执行代码块;英文提示为
Please integrate natural language reasoning with programs to solve the problem above, and put your final answer within \boxed{}.,见 evaluation/README.md。 - 使用建议:这条路线的收益在 base_results_2.png 对应的官方评测表中有体现——base 模型借助写程序的能力,在解题和形式化证明任务上都有提升。注意模型生成的代码不保证正确,执行前需要沙箱隔离。
跑评测:从零到一份结果文件
这一节回答:如何安装评测环境并生成自己的评测结果。
如果你只想看分数不跑实验,直接读 evaluation_results.json 和 outputs.zip 即可,官方输出已经全量给出。
要复现的话,evaluation/的入口是:
# 1. 先修改 environment.yml 中的 prefix 字段,再创建环境 conda env create -f environment.yml # 2. 提交评测任务(示例为 DeepSeekMath-Base 7B,8 GPU) python submit_eval_jobs.py --n-gpus 8 # 3. 汇总各进程结果,生成 evaluation_results.json python summarize_results.py要点:
- 换模型或换数据集,改 submit_eval_jobs.py 与 evaluation/configs/ 下的 JSON 配置;
- few-shot 提示模板在 evaluation/few_shot_prompts/,COT 和 PAL(Program-Aided Learning)两套都有;
summarize_results.py --eval-atp会调用 unsafe_score_minif2f_isabelle.py 评测形式化证明结果,需要预先搭好 PISA/Isabelle 服务,没搭的话不要加该参数;- 单卡环境别照抄 8 GPU 示例,
--n-gpus按实际卡数改,显存不够就减小批处理或分数据集跑。
适合与不适合:明确边界
这一节回答:什么人该用、什么场景别用。
适合:
- 研究方向是数学推理、工具调用(TIR)、强化学习后训练(仓库的 RL 模型用了 GRPO 算法)的团队,仓库同时放出 base / instruct / RL 三个 checkpoint,方便对照实验;
- 需要在本地或私有云部署数学解题服务、且数据不能出域的开发者;代码是 MIT 协议,模型按 LICENSE-MODEL 使用,允许商用(模型使用需遵守该协议条款);
- 想用现成数据集和脚本快速做 baseline 的评测研究者,evaluation/datasets/ 下 GSM8K、MATH、CMATH 等数据已就位。
不适合:
- 追求低延迟、高并发线上推理的场景:7B 模型用 transformers 原生
generate吞吐有限,生产环境应换 vLLM 之类的推理引擎,本仓库未内置该部分; - 需要 system prompt 精细控制、超长上下文的对话产品;
- 期待开箱即用的 Web UI 或 SDK:仓库定位是模型发布 + 评测,服务化入口只有
replicate/这一个参考实现。
一个客观预期:官方口径是 base 模型"不依赖工具时接近 GPT-4 水平、超过 Minerva 540B",RL 模型在 MATH 上使用工具后接近 60% 准确率。具体数字以仓库 README 和评测表为准,不同提示策略下波动不小。
进阶路径:从本地试用到服务化
这一节回答:跑通最小示例之后,往哪走。
- 本地调优:先固定思维链提示格式,再调
max_new_tokens和采样参数(temperature、top_k、top_p,replicate/predict.py 里给了完整参数集:默认temperature=1、top_k=50、top_p=0.9)。数学题建议降低随机性,用低温度采样并多次生成取一致答案。 - 服务化:
replicate/目录是现成参考,predict.py 用 Cog 框架实现了流式输出(TextIteratorStreamer)和模型缓存加载,cog.yaml 是部署配置。想自建 API 服务,可以照它的"setup 加载一次 + predict 多次调用"结构改造成任意 Web 框架。 - 批量评测与对比:改 evaluation/configs/ 下的 JSON,把候选模型都指到同一批数据集上,用
summarize_results.py出统一报告;中文能力重点看 CMATH、Gaokao 两组,英文看 GSM8K、MATH。 - 训练侧延伸:如果你要继续预训练,可以顺着 Data Collection 一节的流程理解数据构造——以 OpenWebMath 为种子训练 FastText 分类器,从去重后的 Common Crawl 中召回数学网页,经域名发现与人工标注迭代四轮,最终得到 35.5M 页面、120B token 的数学语料。这套方法本身比数据更有复用价值。
下一步
按这个顺序做,一天内能完成第一轮评估:
- 准备一张 16GB 以上显存的 GPU,执行前文的安装和 base 模型补全示例,确认链路跑通;
- 换成 instruct 模型,用中文思维链提示测 3~5 道你业务里真实的数学题,记录答案是否落在
\boxed{}中、推理步骤是否自洽; - 如果满足需求,再看 replicate/predict.py 搭一个最小 API 服务;如果要做严肃对比,进 evaluation/ 按上文流程复现一次评测。
【免费下载链接】DeepSeek-MathDeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Math
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考