
这次发布值得关注的不是“又一个开源模型”而是“数学推理能力真的下放到权重里了”。按发布信息口径小红书开源的 dots3-note 属于 IMO 42 分满分同系列。也就是说它并不是一个偏闲聊的通用模型重点是对齐数学解题、公式推理和竞赛题这类强逻辑任务。对开发者来说这类项目最大的价值在于你不需要每次都在网页端手敲题目而是可以把数学 Agent、错题分析、题目批量批改接到自己的服务里。不过开源权重到手是一件事能不能顺利部署并复现效果是另一件事。实际门槛通常集中在三处权重从哪拿、显存能不能装下、API 能不能批量跑。下面按“能力速览 - 环境准备 - 部署启动 - IMO 风格题目测试 - API 批量调用 - 性能排查”的顺序拆开。由于我手头没有 dots3-note 官方仓库的完整 README 和性能测试数据凡是无法确认的参数不会硬填数字。部署时请以你实际拿到的权重格式和仓库说明为准。1. 核心能力速览在展开操作之前先用一张表把大家最关心的问题列出来。表中标注“需按实际版本确认”的项不建议直接套用别人的结论。能力项说明项目定位小红书开源的数学推理模型官方口径属于 IMO 42 分满分同系列主要场景数学题求解、竞赛题解析、公式推理、数学 Agent 后端权重获取以官方发布渠道为准可优先看 GitHub、ModelScope、HuggingFace显存需求未确认需看模型版本、量化格式和上下文长度支持平台常见 Linux/Windows 均可尝试macOS 可优先试量化版启动方式大概率是命令行或脚本启动具体以仓库 README 为准API 服务常见的是 OpenAI 兼容接口但需按实际项目确认批量任务数学题批量评测和结果导出适合做成离线任务上手难度中等需要会装依赖、下载权重、看启动日志这里最需要强调的是“同系列不代表同一个模型”。如果官方评测里有一个模型在 IMO 题型上拿到 42 分满分说明该模型在代数、数论、几何、组合这几条线上都达到了很强的数学推理水平这是一个很硬的结果。但开源出来的 dots3-note 是何种规格、评测是否完整可复现都要以官方仓库为准。正确姿势是把它和演示结果分开看先跑通本地推理再跑自己的题目集。2. 适用场景与使用边界数学开源模型能做的事情比想象中多但也容易被过度期待。先聊清楚适合干什么再决定要不要部署。2.1 适合的使用场景数学课程和题库系统可以用模型做题目解析、相似题推荐、答案要点抽取。竞赛生日常练习给出一个高难度题目让模型输出完整推理过程用来对照自己的步骤。数学知识库后端把模型接入 RAG解析教材、讲义、历史真题回答数学概念问题。自动化评估流水线批量跑几百道数学题统计正确率用于效果回归。2.2 不适合直接上生产的情况高 stakes 考试评分如果模型在真实考试里直接替学生作答需要非常谨慎。开源模型的推理不稳定出现“过程像样、答案错误”的概率并不低。需要绝对可解释性的场景模型只能输出推理链无法保证每一步都符合形式化规范用于生产前必须有规则校验。有版权或隐私风险的材料竞赛题库、未公开试卷、内部讲义是否允许导入开源模型需要先确认授权。合规方面要单独提一句不要拿这类模型在正式考试场合作弊也不要为绕过防作弊系统编写工具。做教学工具、题目分析、内容生成时如果涉及人脸、声音、私人数据或受版权保护的题目集需要先获得授权。批量生成的内容也要标注“AI 辅助生成”并对最终质量做人工复核。3. 环境准备与前置条件部署一个大模型之前先花十分钟检查环境能省掉后面大量的坑。很多启动失败并不是模型代码有问题而是 Python 版本、CUDA 驱动和依赖库不对齐。3.1 检查显卡驱动与 CUDA如果你准备用 GPU 推理需要在终端确认四件事显卡是否被系统识别、驱动版本、CUDA 是否可用、显存剩余多少。Linux 下执行nvidia-smi正常输出会包含 GPU 型号、驱动版本、显存总量和当前占用。如果执行后提示command not found说明驱动没装好或者没有把 CUDA 路径加入环境变量。Windows 下可以在命令行执行同样的命令也可以打开任务管理器看 GPU 型号。建议都先确认驱动版本较新再把 PyTorch 的 CUDA 版本和驱动对齐。不要盲目安装最新版 CUDA先看项目 requirements.txt 和官方 README 写了什么。如果暂时没有 NVIDIA 显卡也可以考虑 CPU 推理但速度会明显下降。数学推理模型输出思维链通常很长CPU 跑长文本的体验会比较煎熬建议先用小参数或量化权重测试再决定是否升级硬件。3.2 准备 Python 运行环境大多数开源 LLM 项目的依赖管理方式相近用 Python 3.10 或 3.11 创建虚拟环境然后安装 requirement 依赖。mkdir dots3-note-lab cd dots3-note-lab python -m venv .venv source .venv/bin/activateWindows 下激活命令是.venv\Scripts\activate接着按官方仓库安装依赖。如果仓库没有给 requirements.txt但模型是基于 Transformers 架构的可以通用安装pip install -U torch transformers accelerate safetensors如果打算用 vLLM 做高并发 API 服务再单独安装 vLLM。这里不写具体版本号因为不同模型对库版本的要求不同安装前先看官方 requirements.txt 更稳妥。3.3 磁盘和模型文件规划模型权重文件通常很大从几个 GB 到几十个 GB 都有可能。建议规划好目录结构不要让权重、代码和输出混在一起。dots3-note-lab/ ├── models/ # 存放权重文件 ├── tests/ # 存放评测题目 ├── outputs/ # 推理结果输出 ├── scripts/ # 自己的调用脚本 └── configs/ # 推理参数配置权重下载渠道优先选择官方 README 给出的链接避免从不明途径获取来源不明的格式化权重。4. 安装部署与启动方式部署方式取决于 dots3-note 最终发布的是“safetensors 原始权重”还是“量化后 GGUF 文件”。主流开源模型一般有三种启动路径Ollama、llama.cpp、vLLM。下面给的是通用流程具体命令里的路径、模型名和端口都需要替换成实际值。4.1 从官方仓库下载权重先 clone 代码仓库或下载发布资产git clone dots3-note 官方仓库地址 cd 仓库目录权重文件如果托管在 ModelScope 或 HuggingFace可以使用官方提供的下载命令也可以直接用浏览器下载。下载完务必检查文件目录里是否包含config.json和权重文件只有这些文件齐全Transformers 或 vLLM 才能正确加载。如果你用的是 Ollama 或 llama.cpp还需要把权重转换为 GGUF 格式或直接下载社区做好的量化版。量化格式和原始精度会有一定质量差异数学题需要较高精确度时先用高精度权重验证再考虑压缩。4.2 通过 Ollama 快速体验如果官方已经给出了对应的 Ollama 支持最简单的方式是直接运行ollama run 模型名称也可以写一个 Modelfile 本地加载 GGUF 文件FROM ./models/dots3-note-q4_K_M.gguf TEMPLATE {{ .Prompt }} PARAMETER temperature 0.4 PARAMETER num_ctx 8192然后用下面的命令构建并运行ollama create dots3-note -f Modelfile ollama run dots3-noteOllama 的优势是安装简单适合个人快速测试。它的缺点是并发能力和参数控制不如 vLLM 细致做正式批量评测时一般还是选择服务化方案。4.3 通过 llama.cpp 启动 API如果要模拟一个本地服务并且想更精细地控制上下文长度和线程数可以用 llama.cpp 的 server 模式。llama-server \ -m ./models/dots3-note-Q4_K_M.gguf \ --host 127.0.0.1 \ --port 8080 \ -c 8192-c 8192表示上下文长度设为 8192。数学题的思维链可能很长如果题目复杂建议保留足够的上下文余量。如果显存不够可以把-c调小比如 4096避免加载阶段就 OOM。4.4 通过 vLLM 启动高并发接口在批量评测和 API 集成的场景vLLM 的吞吐量明显优于直接反复调用 Python 推理脚本。启动命令类似vllm serve ./models/dots3-note \ --task chat \ --dtype auto \ --max-model-len 8192 \ --gpu-memory-utilization 0.85 \ --port 8000这里./models/dots3-note是权重目录路径需要根据实际布局替换。--gpu-memory-utilization 0.85表示最多占用 85% 显存避免因临时缓存导致显存耗尽。启动成功后终端会显示服务地址和模型名称。默认情况下vLLM 会提供一个 OpenAI 兼容的聊天接口这对接下来的批量调用很有帮助。5. 数学能力测试与效果验证部署完成不等于效果好。数学模型的验证不能只看“能不能生成一段看起来很合理的解答”还要看关键步骤是否准确。下面给出一套不依赖官方测试集的验证方案。5.1 测试题选取建议准备三组题入门组2 到 3 道代数题用来确认模型推理链路正常。进阶组2 道数论或组合题检查模型是否能处理较长的思维链。回归组10 到 20 道不同难度题目用来批量统计答对率。这里给出一个代数题作为演示这种题目很适合检查模型的分式变换能力。题目设 a、b、c 都是正实数且有 abc1。证明a/(aba1) b/(bcb1) c/(cac1) 15.2 单题测试 Prompt数学模型的输出质量对 prompt 格式比较敏感。建议让模型先思考再写最终过程并强制它给出结论。示例 prompt你是一个数学竞赛解题助手。请用中文给出完整的推理过程并在每一步说明使用了什么条件。 题目 设 a、b、c 都是正实数且有 abc1。 证明 a/(aba1) b/(bcb1) c/(cac1) 1第一次测试时建议使用 API 服务方便记录返回结果和延迟。下面是一个通用请求from openai import OpenAI client OpenAI( base_urlhttp://127.0.0.1:8000/v1, api_keyEMPTY, ) response client.chat.completions.create( modeldots3-note, messages[ {role: user, content: 设 a,b,c0 且 abc1证明a/(aba1)b/(bcb1)c/(cac1)1} ], temperature0.3, max_tokens4096, ) print(response.choices[0].message.content)5.3 判断模型是否真正“会做题”判断标准不要只看最终答案对不对应该分三步观察推理过程是否完整。有没有跳步是否使用 abc1 这个条件。中间变换是否正确。比如分母变形、通分、利用对称性消项。最终结论是否收敛到目标。如果过程漂亮但结论错误说明模型可能存在“伪推理”现象。如果模型给出类似“两边同时乘 abc”这种不严谨操作需要特别小心。数学不是单纯的文本生成开源模型仍然可能输出看似合理但实际错误的步骤。实际部署时建议为模型开启较低的 temperature比如 0.2 到 0.4。高温会增加随机性数学题场景希望输出更确定不要把 temperature 拉高。这里也需要提醒如果一次输出正确不要立刻下结论。要换几道相近题型在不同参数下多跑几轮才能判断稳定性。5.4 多题回归跑通单题后不要把时间浪费在反复手动输入上。准备一个题目文件每一行一个题目然后用脚本批量调用 API并记录结果。{id: 1, problem: 设 a,b,c0 且 abc1证明 ..., answer: 参考证明...} {id: 2, problem: 求 12...100 的值, answer: 5050}回归测试至少跑一次。记录每个题目的输出长度、是否超时、最终答案是否正确。这样可以快速发现模型在哪些题型上偏弱也能对比量化版本和原始精度版本的差距。6. 接口 API 与批量评测真正要把模型用到项目里一定绕不开接口。如果 dots3-note 兼容 OpenAI 的/v1/chat/completions接口整个对接成本会低很多。6.1 验证 API 服务启动服务后先做一次最简单的接口连通性测试curl http://127.0.0.1:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: dots3-note, messages: [{role: user, content: 11?}], temperature: 0.2, max_tokens: 512 }预期返回结果会包含一个choices数组里面是模型生成的文本。如果 curl 返回Connection refused说明服务没起来或端口不对。如果返回 404则需要检查服务路径是否是/v1/chat/completions。下面的 JSON 是常见的请求载荷结构具体参数名要以实际接口文档为准{ model: dots3-note, messages: [ {role: user, content: 设 a,b,c0 且 abc1证明...} ], temperature: 0.4, max_tokens: 4096 }6.2 批量调用脚本示例批量评测的常见做法是读取一个 JSONL 文件为每一道题生成推理结果再把结果写入另一个 JSONL 文件。下面是一个并发数较低的 Python 调用模板适合个人电脑或单卡环境import json import time from concurrent.futures import ThreadPoolExecutor from openai import OpenAI client OpenAI( base_urlhttp://127.0.0.1:8000/v1, api_keyEMPTY, ) def solve(item): problem item[problem] start time.time() try: resp client.chat.completions.create( modeldots3-note, messages[{role: user, content: problem}], temperature0.2, max_tokens4096, ) answer resp.choices[0].message.content return { id: item[id], answer: answer, used_time: round(time.time() - start, 2), } except Exception as exc: return { id: item[id], error: str(exc), } with open(tests/problems.jsonl, r, encodingutf-8) as f: items [json.loads(line) for line in f] results [] with ThreadPoolExecutor(max_workers2) as pool: for result in pool.map(solve, items): results.append(result) with open(outputs/results.jsonl, w, encodingutf-8) as f: for result in results: f.write(json.dumps(result, ensure_asciiFalse) \n)需要注意这个脚本里max_workers2是保守设置。并发过高会直接拉满显存导致服务端 OOM。批量任务建议先试 1 并发再逐步调高。6.3 批量任务设计要点批量调用最容易出现的问题有三个超时时间不足。数学题的思维链可能非常长建议把 timeout 设置在 180 秒或更高。单条失败导致整批中断。循环里要做好异常捕获把失败的题目单独记录。重复输出浪费 token。如果模型反复生成同样内容需要检查 prompt 是否清楚、temperature 是否过高。最佳实践是在项目目录下增加一个logs目录保存每次批量任务的请求和返回摘要。这样出现问题后可以定位到具体题目而不是重新跑一整批。7. 资源占用与性能观察在部署 DeepSeek 或其他开源模型时大家最担心的往往是“我的显卡能不能跑”“推理速度够不够”。对数学推理模型这个问题尤其重要因为数学题需要生成很长的思维链token 数量会比普通问答多很多。7.1 显存占用如何观察GPU 部署推荐实时监控显存nvidia-smi -l 2-l 2表示每两秒刷新一次。启动服务后可以看到进程占用的显存。如果显存接近 100%而显卡利用率很低很可能是因为上下文设置太长或 KV cache 占用了大量空间。关于显存占用我给一个通用估算思路模型权重加载大约等于权重文件的体积上下文越长KV cache 的额外占用越高。比如一份 4GB 左右权重的模型光加载权重就需要至少 4GB 显存如果上下文加到 16K 或 32K额外占用会继续增加。具体数字请以nvidia-smi实测为准不要用网上其他模型的“7G 够用”来直接推断 dots3-note。7.2 影响推理速度的核心因素观察性能时重点看四个方面输入题目的长度。模型一段思考过程能生成多长。并发请求数量。显卡算力也就是 FLOPs 有多大。数学题模型经常会输出“我再验证一下”“另一种解法是”这类反思性内容使实际 token 数远高于预估。因此做性能压测时不要只拿“你好”这类短文本测试要拿一道信息量较大的竞赛题测试。如果想降低显存和加速推理最直接的手段是量化例如把半精度权重转成 GGUF 或 AWQ 量化格式。量化会带来一定的精度损失具体损失需要用数学题回归测试来衡量。8. 常见问题与排查方法下面列一组常见问题的排查清单几乎覆盖大部分开源模型部署会遇到的场景。问题现象可能原因排查方式解决方案启动后页面或 API 打不开端口被占用或服务启动失败查看终端日志检查端口监听状态换端口并重启服务下载权重后加载报错权重文件不完整或缺少对应配置检查权重目录文件和校验值重新下载并核对文件列表提示 CUDA out of memory上下文过长或并发过大检查 nvidia-smi 显存占用降低 max-model-len、并发和 batch size报错CUDA driver version is insufficient驱动版本和 PyTorch CUDA 版本不匹配查看驱动版本与 PyTorch 版本升级驱动或重装对应 CUDA 版 PyTorchAPI 返回 404接口路径不对查看服务文档和路由改用正确路径如/v1/chat/completions模型输出重复严重temperature 过高或未加停止条件查看生成参数调低 temperature设置 max_tokens 限制批量任务中途卡住某道题生成了超长内容或网络超时查看输出日志和任务进度添加超时重试机制单独记录失败题目模型解题步骤混乱未添加合适的 prompt 指令对比不同 prompt 的输出使用明确的“请逐步推理并检查”指令在实际运维时日志就是最好的老师。不要只在界面看输出要保留每次启动的日志。很多问题在第一次出现时只是一条 warning不处理的话会在批量任务里放大。9. 最佳实践与合规提醒一套稳妥的使用方案往往比单纯追求“高分答案”更重要。这里给几条偏工程化的建议。9.1 先小参数验证再上大任务首次部署不要直接跑几百道题。先跑两三轮单题测试确认模型可以稳定输出再把批量并发提升。这样既能节省时间也能避免把服务搞崩。9.2 保存一套最小可运行配置把端口、模型路径、上下文长度、temperature、max_tokens 写进配置文件方便在多个环境复现。比如{ model_path: ./models/dots3-note, host: 127.0.0.1, port: 8000, max_model_len: 8192, temperature: 0.3, max_tokens: 4096 }这套配置最好和权重文件放在一起便于后续回滚。9.3 对“AI 生成结果”做人工抽检即便 dots3-note 表现再强也不要完全信任模型答案。尤其是在教育、竞赛、论文辅助等场景必须安排人工复核。可以设计一个“先自动批改再人工抽检”的流程自动提取最终答案和关键推理节点再由人看随机抽样结果。9.4 合规与授权提醒不要用任何 AI 模型在正式考试中代替个人作答。如果导入真实竞赛题、教材、内部试卷先确认版权是否允许。不要绕过平台规则、隐私限制或内容审核机制。涉及大规模输出时建议在页面或服务中标注“由 AI 生成仅供参考”。10. 总结与下一步dots3-note 这类数学向开源模型真正值得尝试的点是可以把 IMO 级别的推理能力从一个静态演示变成可调用的本地 API。最先要验证的不是让它解一道特别难的压轴题而是先确认权重是否能正常加载、显存是否够用、模型在 5 到 10 道中等难度题上的稳定率。最容易踩的坑有两个一是用过高的并发直接跑批量任务结果显存溢出二是不检查输出把模型“看起来合理”的过程当成正确答案。更稳妥的路线是先准备一组回归题记录每次版本的输出再逐渐把模型接入自己的数学题库或 Agent 服务。如果后续 dots3-note 更新了更多评测细节、推理技巧或官方 API建议直接用同样一组题目做横向对比。把自己的题目集固定下来开源模型的真实能力变化就能一目了然。