并行思维链采样这两年在推理模型上被用得很碎。很多团队的做法是在 prompt 里加一句“生成 5 条思路再投票”,跑完发现账单涨了四倍、准确率只涨了两个点,回头就把这条链路砍掉了。问题不在方法本身,而在采样策略和能力边界没对上。翁荔(Lilian Weng)在《Why We Think》里把这块拆得比较清楚:并行采样属于测试时计算里的一条路径,本质是用额外算力去调整模型的输出分布,代价是真金白银的推理成本。想清楚在什么场景下这笔钱值得花,比选哪种解码方式更重要。
先理解并行采样到底在做什么
普通解码是模型每生成一个 token 做一次前向,浮点计算量大致是参数量的两倍。如果在 MoE 结构下,真正参与计算的只有激活的那部分专家,计算量会再除以稀疏度。思维链把这个等式改写了:模型在给出最终答案之前,多生成几十到几千个中间 token,每个 token 都在消耗一次前向计算。所以 CoT 的一大价值不是“让模型学会推理”,而是让它能按题目难度自行决定花多少计算量。难题多写几步,简单题少写几步。
并行采样是在这个基础上再乘以 N。同一条 prompt 独立跑 N 遍,得到 N 条 CoT 轨迹,再用某个评分函数挑一条。评分函数有两种来源:一种是有标准答案或可验证的评测,比如数学题的最终数值、编程题的单元测试;另一种是没有标准答案,只能靠模型在这些轨迹里做多数投票,也就是自洽性(self-consistency)。论文里常见的表述是把这 N 条路径当作从潜变量后验 P(z|x,y) 里采样,本质上和“多生成几个候选再挑”没区别,只是名字更学术。
采样预算该给并行还是给串联
Snell 等人的实验结论值得记住:简单问题单靠延长单条推理链效果最好,高难度问题才需要在并行采样和序列修订之间找比例。换句话说,把预算平均分摊到所有请求上是最浪费的做法。
工程上可以按任务分层。分类、抽取、格式转换这类,CoT 本身都未必需要,更别提并行采样。多步算术、复杂逻辑、需要枚举约束的排期问题,并行采样的收益明显,尤其是当你有可验证的答案来源。代码生成是并行采样性价比最高的场景之一:单元测试给了天然验证器,生成 8 个候选、跑测试、挑第一个通过的,成本可控且效果稳定。反过来,开放式写作或者主观问答用自洽性投票,投出来的“多数答案”很多时候只是模型最偏好的那一种说法,并不是更正确的那个。
并行采样的效果上限,取决于单条轨迹“一次命中”的概率。如果模型几乎从不会在单次采样中答对,N 再大也只是把错误答案采样更多遍。
best-of-N、束搜索和过程奖励
最简单的是 best-of-N:独立采样 N 条完整轨迹,用评分函数选最高分。实现上就是并发请求加一个排序,几乎不需要额外训练。
束搜索更复杂一些。它在每个中间步骤维护一批候选前缀,交替做扩展和剪枝,把计算优先分给看起来有希望的分支。在解码阶段剪枝需要过程奖励模型(PRM)来判断“当前这一步推理是否合理”。相关研究里有一类做法是把模型自己的每一步推理改写成选择题,让它自查下一步,再据此决定保留哪些分支。这类方法在 GSM8k、AQuA、StrategyQA 等少样本任务上配合 Codex 级别的模型,报告过 5% 到 6% 的提升,代价是每步都要额外推理一次。
还有一种不太占资源的技巧:只在第一个采样 token 处做分支。保留置信度最高的 top-k 个 token(置信度用 top-1 和 top-2 候选的概率差衡量),然后各自走贪婪解码。一个有意思的发现是,其中相当一部分轨迹会自然长出完整的思维链。它的启发是早期分支比后期分支更能拉开路径多样性,而后面的 token 已经被前面的上下文锁死。如果只是想要几条差异明显的轨迹、又不想摊满 N 倍的生成成本,这个办法比朴素并行采样更省。
序列修订的坑:模型自己改不对
另一个常被混进预算方案的是序列修订:让模型看自己上一轮答案,指出错误再改。Huang 等人的实验结论不太乐观:不加外部反馈、纯靠模型内生的自我修正,性能甚至会下降。失败模式很具体。第一种是把原本对的答案改错,理由还编得头头是道。第二种是行为坍缩,模型只做表面措辞调整,不正视错误。第三种是分布外泛化失败,训练时在某类题上能自改,换一类就失灵。
要让修订有用,得有外部信号:与真实标签比对、单元测试、编译报错、任务相关的评估指标,或是一个更强的模型做裁判。自我修正学习的做法是构造“价值提升对”:同一题的两个输出如果评测指标有高低之分,就把它们组成训练样本,按分差和相似度加权,让修正器学会把差答案映射到好答案。SCoRe 用强化学习分两阶段:第一阶段只优化第二次尝试的成功率,同时对第一次尝试加 KL 惩罚防止跑偏;第二阶段同时优化两次尝试。这些都不是凭空能做的,需要成套的训练数据和评估链路。
落地时的一组取舍
- 先确认评分函数是否可信。没有单元测试、没有可比对的 ground truth,多数投票只能算弱信号。
- 按难度分级决定 N。简单题取 1,难题取 4 到 16,极端情况再叠加串联修订。
- 并发别一次性打满。N=16 的并行采样对 KV cache 和请求排队的影响很容易被低估,线上定时任务和走高优 SLA 的请求应该分池调度。
- 记录每条轨迹的分数,而不只是最终答案。样本级分数分布本身可以当作特征,用来判断这个问题值不值得二次求解。
- 评估环节多半对不齐预期:常见做法是先设置合理基线。同一预算下对比单链 CoT,看增益是否随 N 递减并回到零。
并行思维链采样不是“打开就变聪明”。它真正回答的问题只有一个:在这个具体任务上,额外的测试时计算是否换到了更高正确率?所以选模式之前先想清楚,模型答错的错误模式是采样少没覆盖到,还是推理路径整个跑偏。前者增加 N 有效,后者只能借助有外部信号的约束,比如 PRM、单元测试或可验证的评测模块,否则并行采样只会把一堆笃定的错误答案放大成多数。
转载请注明出处: 皮哈皮阿
本文的链接地址: https://blog.phpat.com/ai-dev/624.html
微信或手机浏览器扫一扫,随时随地随心阅读与分享
-
上下文工程:从 Prompt 到 Context 的工程化实践
客服 Agent 答错时,团队第一反应是换模型。把那次请求的上下文打印出来才发现,模型看到的是一份过期政策、两份互相矛盾的条款,还有一长串无关日志。上下文工程要解决的,就是这类问题。
2026/10/06
-
RAG 的下一站:Agentic Retrieval
用户问“我们去年买的套餐现在还能退吗”,经典 RAG 检索出一段通用退款政策就结束了。可这个问题至少要拆成订单时间、地区、套餐版本三件事。Agentic Retrieval 要解决的,就是这种“一次检索不够用”的场景。
2026/10/12
-
约束解码让 JSON 不再崩,但它会改坏推理
约束解码让 JSON 解析失败率归零,工程师可以删掉一堆重试和修复代码。但它会挤占模型的推理预算:强制格式在部分任务上带来10%以上的准确率下降。文章梳理 OpenAI、Anthropic、Gemini 和其他自托管引擎的现状,以及 schema 设计、两阶段模式与编译缓存几个实操要点。
3天前
-
Agent 上下文压缩:四层策略与失败代价
把 Claude Code 的四段分层与 Hermes Agent 的双阈值压缩系统并排看重:200K 窗口下的 50%/85%、legacy 与 lean 尾部的实测差池、未处理到的摘要模型窗口溢出,以及工具对配对边界为什么是能不能跑的问题。
2天前
-
推理模型输出被截断后怎么接回去
推理模型遇到输出截断,重试整条请求代价高;续写也有隐藏门槛。从识别边界、提示回灌到 prefill 与成本判断,聊聊工程上怎么做才不算亏。
1天前
-
推理模型的并行思维链采样怎么用才不亏
并行思维链采样的成本不是白花的。结合推理模型测试时计算的几条实证结论,梳理best-of-N、束搜索、自洽性投票和自我修订在什么场景下划算、什么场景下只是在烧钱。
1小时前
京公网安备11011402053654 
@muffin:链接已更新,分类图像功能...
AI网址导航模版图标库更换指南
作者大大,图标库邀请链接失效了,麻烦更新...
AI网址导航模版图标库更换指南
太好看了,快点更新!
友情链接
@戴墨镜的刘备:哈喽,路过点赞。
vue.js组件之手写签名板vue-signature-simple
太好看了,快点更新!太棒了!👍真的很赞!
vue.js组件之手写签名板vue-signature-simple
你写得非常清晰明了,让我很容易理解你的观...
Emlog插件RSS订阅器发布