返回关卡地图
闯关题:0 / 2 XP 0 / 200

Level 23 | 零基础导学关卡

Speculative Decoding

先用小例子把必要知识学会,再用 2 道闯关题检查理解,最后回到 notebook 写真正的 PyTorch 作业。

23_Speculative_Decoding.ipynb Draft ModelVerificationAcceptance
概念输入
闯关检查
Notebook 作业
acceptance α(x)=min(1,p_target(x)/p_draft(x))
Mission 1 整体流程

Speculative Decoding:小模型先起草,大模型来验收

先补的知识

  • draft model 生成快但不够准。
  • target model 生成慢但质量高。
  • 本 notebook 只练接受/拒绝前缀;完整算法还会处理拒绝后的修正采样。

图解原理

像先写草稿再让老师批改:草稿正确的部分直接采用,错误处再由老师接管。

draft: A B Ctarget 验证接受 A B,拒绝 C

语法热身:逐个检查候选 token

accepted = []
for token, p, q in zip(draft_tokens, target_probs, draft_probs):
    if should_accept(p, q):
        accepted.append(token)
    else:
        break

闯关题

在本 notebook 的验证函数里,接受概率 p/q 中的 p 来自哪里?

回到 notebook 的作业

这里不直接写答案。你已经拿到足够输入,最后用 notebook 的 TODO 做举一反三。

Mission 2 TODO 1 / TODO 2

接受规则:p >= q 时全收,否则按 p/q 抽签

先补的知识

  • p 是 target model 对草稿 token 的概率。
  • q 是 draft model 对同一 token 的概率。
  • 当 draft 过于乐观时,需要降低接受概率。

图解原理

如果大模型比小模型还认可这个 token,就直接通过;如果小模型太自信,就按比例抽签。

p=.20, q=.50accept prob=.40随机数小于 .40 才接受

语法热身:条件判断和随机数

if p >= q:
    accept = True
else:
    accept_prob = p / q
    accept = torch.rand(()) < accept_prob

闯关题

p=0.3,q=0.6 时,接受概率是多少?

回到 notebook 的作业

这里不直接写答案。你已经拿到足够输入,最后用 notebook 的 TODO 做举一反三。

完成 2 道闯关题后,本关即算完成;作业 checklist 用来辅助你回 notebook 练习。
进度只保存在当前浏览器 localStorage,分享 HTML 不会带走你的记录。
上一关:L22 下一关:L24