Speculative decoding¶
由小模型(draft model)猜测几个token一起送入大模型(target model),大模型进行一次性forward验证.
普通decode: \(X_{1 \times d} W_{d \times d}\),小batch时接近gemv, GPU利用率低,且需要反复从HBM读取巨大权重
speculative decoding: \(X_{n \times d} W_{d \times d}\), n为小模型预测长度
为什么speculative decoding 数学上与target model直接采样等价(lossless)¶
对于任意一个token x, 最终生成有两个途径:
- draft 提出x并接受
- draft 被拒绝后residual 采到x
设target model 概率分布p, draft 概率分布q.
draft 提出x并接受概率:
\[
P1(x) = q(x) min(1, \frac{p(x)}{q(x)})
\]
拒绝后residual采样概率:
\[
P2(x) = p(x) - min(q(x), p(x))
\]
二者和为p(x).