单 Token 平均延迟公式
L = (T_draft + T_verify) / τ
三个变量的含义与控制方:
- T_draft — Draft 模块猜一段候选 token 的耗时,由 Draft 架构设计决定
- T_verify — 主模型一次并行验证的耗时,由调度策略决定
- τ — 这一轮平均被接受的 token 数,由 Draft 准确率决定
完整计算流程 + 维度变化
假设条件:
- hidden_dim(drafter)= 4096
- 提取目标模型 5 层
- γ = 5(生成 5 个 draft token)
步骤 1:目标模型生成 anchor
- 输出 anchor token ID(维度 D)
- 保存选定层的 hidden states,取最后一个位置
- 得到 5 个向量,每个维度为
[batch, 1, 4096]
步骤 2:特征融合(Fusion)
- 将 5 个
[batch, 1, 4096]向量 concat,得到[batch, 1, 20480] - 经过 Linear(20480 → 4096) + RMSNorm
- 输出
fused_context,维度[batch, 1, 4096](或广播为[batch, γ, 4096])
步骤 3:Drafter 输入 Embeddings
- 输入 tokens 序列:
[anchor, mask, mask, mask, mask] - 经过 Embedding 查找,得到
block_embeddings,维度[batch, 5, 4096]
步骤 4:Parallel Backbone 前向传播
Drafter 的 Transformer layers 逐层计算,每一层的注意力机制:
- Q =
block_embeddings(或上一层输出)经过 Q projection →[batch, 5, 4096] - K/V =
block_embeddings + fused_context(注入上下文)经过 K/V projection →[batch, 5, 4096] - 多层计算后,得到
final_hidden_states,维度[batch, 5, 4096]
步骤 5:输出 base logits
final_hidden_states经过 LM_Head(线性层)- 输出
base_logits,维度[batch, 5, vocab_size](vocab_size ≈ 128k)
步骤 6:Markov Head 逐位置修正(串行)
对每个位置 k = 0 ~ 4 依次执行:
- 用
prev_token查询markov_w1,计算 bias =markov_w1[prev] @ markov_w2→ 维度[vocab_size] adjusted_logits[k] = base_logits[k] + bias- softmax + sample,得到
token_k,作为下一个prev_token