SYSTEMS / ENGINEERING BRIDGE投机解码:先证明正确,再讨论加速
用双 token 例子推导接受概率与残差采样。
学习指南与本课目录
LEARNING CONTRACT理解 → 实现 → 研究
目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
- 理解层:写明假设、形状/单位和一个反例。
- 实现层:复算数值例子并检查边界。
- 研究层:在匹配预算下比较一个替代方法。
机制与假设
草稿分布 q 提议 token,目标分布 p 验证。以 min(1,p/q) 接受,拒绝后从归一化正残差 (p−q)+ 采样。省略校正通常会改变输出分布。真实加速取决于草稿成本、接受率、验证批处理与工作负载。
手算例子
令 ,0.3]、,0.6]。A 总接受,B 以 0.5 接受;接受质量为 [0.4,0.3],拒绝质量 0.3 重新分给 A,恢复 [0.7,0.3]。 时无拒绝,不应调用分母为零的残差分支。
实现练习
实现固定种子采样,比较输出频率与 p。测试某些 token 的 、 及严重不匹配提议。报告采样不确定性,再独立测运行时间。
交付代码、固定种子、原始结果与一个反例。这里是实验规范,不是已运行的 GPU benchmark。
分布相同是否意味着相同种子输出完全相同?
不是。算法消耗随机数的方式不同,分布正确与同种子序列一致是两个不同测试。
arXiv ↗ · PDF ↗原创教学例子,来源核对于 2026 年 10 月。这些是与工程相关的基础机制,并非覆盖所有最新模型。
MATHEMATICAL REVIEW · 2026-10-26假设、参考实现与验收
q(x)>0 时条件接受率为 min(1,p(x)/q(x));提出且接受 x 的联合质量为 min(p(x),q(x))。拒绝后采样归一化正残差;两分布相同无需残差采样。
已复核公式条件、单位及算例。实现隔离一个数值机制,不训练完整策略,也不控制真实硬件。
机制图:从上到下跟踪每次变换。运行前:预测一个边界情况
接受质量为 0.7,拒绝质量为 0.3;补回残差后必须精确恢复 p。
提示:隔离假设
固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。
最小可运行算例
将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node speculative-correctness.mjs. 无需第三方运行依赖。
const solve=()=>{
const p=[.6,.4],q=[.3,.7];
const accepted=p.map((v,i)=>Math.min(v,q[i]));
const residual=p.map((v,i)=>Math.max(0,v-q[i]));
return [accepted.reduce((a,b)=>a+b),...accepted.map((v,i)=>v+residual[i])];
};
const actual=solve();
const expected=[0.7,0.6,0.4];
if(JSON.stringify(actual)===JSON.stringify(expected)){console.log('PASS',actual)}else{
const a=[actual].flat(), b=[expected].flat();
if(a.length!==b.length||a.some((v,i)=>!Number.isFinite(v)||Math.abs(v-b[i])>1e-10))throw Error('Numerical mismatch');
console.log('PASS within 1e-10',actual);
}
参考输出——先预测再展开
[
0.7,
0.6,
0.4
]
测试与迁移
接受质量为 0.7,拒绝质量为 0.3;补回残差后必须精确恢复 p。
在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。
下载完整代码包(.tar.gz) · 完整参考代码与回归检查预测、检验与证据记录
展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。
打开记录/导出/清除 →数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围