尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

第 13 篇:推理引擎一次猜几个字——草稿 + 验证(零门槛入门系列)

第 13 篇:推理引擎一次猜几个字——草稿 + 验证(零门槛入门系列) 上一篇第 12 篇《重启不丢记忆》 下一篇第 14 篇《一次服务很多人》一句话导读一次只生成一个词太慢那就先猜几个、再让大模型一次性核对——猜对的直接白赚猜错的无损丢弃。本篇讲清它的直觉与算术。关键词推理引擎入门、大模型推理、草稿draft、验证verify、接受长度、回退第 12 篇把记忆存到硬盘上解的是重启这一种等待。回到最日常的等待逐词生成一次只吐一个词。能不能一次多吐几个这一篇的草稿 验证就是这个思路——对结果无损但对速度不打包票。① 一句话概念先猜几个词再一次核验猜对就白赚。② 起点抢答游戏里的一次性交卷想象一个抢答游戏。主持人问完题你心里没底于是先把四个答案一口气写在答题板上。主持人不是一个一个判而是拿过去一次看完第一个对、第二个对、第三个错了。你答对几个就前进几格还能额外白拿一格——对了两个就站到第三格后面作废。所以值不值全看押得准不准押得准一次核验换好几格押不准那四个白写。还有个前提——主持人得能一次性看完这四个否则还不如一个一个答。③ 伪代码先猜 4 个再一次性核验函数 生成(提示词, 大模型, 草稿器) - 词序列: 输出 [提示词] 当 没有遇到结束符: 草稿 草稿器.猜(输出, 4) # 便宜先猜 4 个 判定 大模型.一次并行检查(输出, 草稿) # 一次前向不是四次 m 判定.接受前几个(草稿) # 遇到第一个不同就停 输出.追加(草稿[0 : m]) # 猜对的照单全收 输出.追加(判定.真实下一个词) # 断点处用大模型自己的结果 # 下一轮从第 m1 个之后继续 返回 输出 # 代价: 每轮 1 次大模型前向 ↔ 前进 1 ~ 5 个词逐行要点草稿器.猜(输出, 4)草稿器不必另配小模型——本引擎的办法是翻历史把上下文末尾几个词当窗口在更早的历史里找一模一样的片段跟在它后面的词就是候选。它便宜、不占参数猜错不花钱。大模型.一次并行检查(输出, 草稿)把这 4 个词当成一段 4 个词的输入一起送进去权重只读一遍同时得到每个位置模型会选的下一个词。这是省钱的根源——一次前向覆盖四个位置。m 判定.接受前几个(草稿)逐位比对草稿里第 i 个词是否正好等于模型在该位置会选的词一旦不同就停。这样结果与老老实实逐词生成逐位相同。输出.追加(...)那两行接受的前 m 个照单全收断点处第 m1 个换成模型自己的真实结果。所以即使猜错也绝不会输出错误内容——只损失速度不损失正确性。最后那行注释每轮固定花掉一次前向能前进 1m 个词m 平均偏小时比逐词生成更亏。注意这里省下的是前向次数它未必等于省下的时间——每次前向多贵还得另算。草稿、验证、接受与回退的关系如图 1 所示。图 1猜 4 个 → 一次验 4 个 → 接受前 m 个草稿器先产出 4 个词大模型一次并行判定前 m 个m 2打勾接受、第 m1 个打叉丢弃再沿回退箭头继续下一轮。④ 纸笔实验必做任务草稿器每轮猜 4 个词一次并行检查 4 个词记作 1 次前向。按本轮接受 0 个 / 2 个 / 4 个三种情况算这一轮花了几次前向、前进几个词再和逐词生成比一比省了几次。接受 0 个断点处那 1 个词要前进花 1 次前向和逐词生成 1 个词打平。接受 2 个前进 32 个接受 1 个断点花 1 次前向逐词生成 3 个词要 3 次 → 省 2 次。接受 4 个4 个全接受、再白赚断点处 1 个前进5个词花 1 次前向逐词生成 5 个词要 5 次 → 省4次。预期结果接受 0 个是1 次对 1 次接受 2 个是1 次对 3 次接受 4 个是1 次对 5 次。收益随平均接受长度上升接受 0 纯亏——真问题是什么场景下接受长度才够高。三种接受情况的对比如图 2 所示。图 2接受 0/2/4 个时省了几次大模型调用横轴是大模型前向次数上方是实心灰条逐个生成基准占满 4 格下面三条对应接受 0/2/4 个各占 1 格。可选 REPL 版# 每轮猜 4 个一次并行检查固定算 1 次大模型前向def总前向(每轮接受,轮数):前向0前进0formin每轮接受[:轮数]:前向1# 一次并行检查 1 次前向前进m1# 接受的 m 个 断点处 1 个return前向,前进# 例每轮接受 [0, 2, 4] → (3, 9)# 追问同样的 9 个词若逐词生成需要 9 次前向省下 6 次⑤ 进阶锚点进阶锚点本篇概念在《30 天手搓推理引擎》Day 13里被真正实现——13-1 decode 为什么慢逐词、带宽、不可并行/13-2 草稿 验证spec decode 的实现/13-3 回退与收益边界哪些场景 spec 才划算。入门版到这里就够了进阶版会多出草稿构造翻历史找重复片段、批量验证与无损回放的 KV 回滚逻辑以及板端开/关投机解码的逐字节一致性实测与收益边界引自进阶系列源码与文档口径。想动手 → 仓库https://gitee.com/pei-xiaoguang/kestrel-llm从 Day 1 开始。下篇预告这一篇我们优化的是一个请求。下一篇换个角度一次服务很多人——不是把一个人服务到底而是每一轮给每个在等的请求都各发一个词。
返回列表