Set Block Decoding:让大语言模型推理速度提升3-5倍的新方法
一、背景:语言模型推理为什么需要加速?
大家在用大语言模型聊天或写代码时,有没有遇到过这样的尴尬:
-
输出一长段代码时卡顿明显 -
复杂数学题解答到一半突然变慢 -
长文本生成时等待时间随长度增加而暴增
这些现象背后其实反映了当前大语言模型面临的推理效率困境。根据论文数据,传统自回归模型在解码阶段存在三大痛点:
-
计算密集:每个新生成的token都要重新计算整个模型 -
内存压力大:需要反复读取全部模型参数和缓存数据 -
线性延迟:生成1000个token就要做1000次完整模型计算
就像接力赛跑,传统方法需要每个选手(token)都完成全部赛程(模型计算),而Set Block Decoding(SBD)就像给接力队配备了更聪明的战术。
二、核心突破:SBD的「并行解码」魔法
2.1 传统方法 vs SBD
传统NTP模式:
生成过程:token1 → token2 → token3 → ... → token1000
计算次数:1000次完整模型前向传播
SBD模式:
生成过程:block1(预测4个token)→ block2(预测4个token)→ ...
计算次数:约200次(假设每个block生成5个token)
2.2 关键创新点
-
混合预测模式:
-
保留传统因果注意力(保证生成连贯性) -
新增双向注意力区域(实现并行预测)
-
-
动态mask机制:
# 训练时随机生成mask if random() < η: 隐藏当前token else: 显示当前token
通过概率控制让模型学习不同mask模式下的预测能力
-
熵值控制策略:
-
计算每个待预测token的熵值(不确定性) -
优先预测低熵值token(高确定性的部分) -
动态调整并行预测的token数量
-
三、架构解析:SBD如何改造模型?
3.1 模型结构变化

图示说明:
-
白色区域:标准因果注意力(处理历史信息) -
蓝色区域:双向注意力(允许未来token互相”看见”) -
粉色区域:已解码的KV缓存
3.2 训练过程
# 训练损失计算示例
loss = 交叉熵(真实token, NTP预测)
+ 交叉熵(被mask的token, MATP预测)
3.3 推理过程
-
Prefill阶段:处理初始prompt并缓存KV -
解码阶段: -
初始化k个mask位置 -
重复直到完成: -
模型前向传播预测block -
根据熵值选择可解码的token -
更新KV缓存
-
-
四、实测效果:3-5倍速度提升
4.1 主要benchmark结果
数据解读:括号内为速度提升倍数,负数表示性能损失
4.2 关键发现
-
精度保持:低γ设置下,数学推理任务准确率几乎不变 -
速度突破: -
代码生成(HumanEval+)达到5.36倍加速 -
数学问题(AIME25)最高5.06倍加速
-
-
灵活性优势: -
可通过γ参数在速度/精度间灵活调节 -
不需要修改模型架构
-
五、原理揭秘:为什么SBD能加速?
5.1 Roofline模型分析

横轴:计算密度(FLOPs/Byte)
纵轴:实际性能(FLOPs/sec)
关键结论:
-
当block size=16时,理论计算密度接近NTP -
大batch场景下加速效果更明显
5.2 内存带宽优化
假设生成1000个token,k=16时内存访问量减少16倍
六、实用建议:如何应用SBD?
6.1 适用场景
✅ 推荐使用:
-
长文本生成(故事、代码、报告) -
复杂数学问题求解 -
多轮对话系统 -
代码补全/生成任务
❌ 慎用场景:
-
超短文本(<10 token) -
对实时性要求不高的应用 -
需要逐token精确控制的场景
6.2 部署建议
# 伪代码示例:推理流程
model = load_sbd_model("llama-3.1-8b-sbd")
prompt = "请计算:"
block_size = 16 # 可根据任务调整
gamma = 0.35 # 精度优先选低值,速度优先选高值
output = []
current = prompt
while len(output) < max_length:
block = sample_block(model, current, block_size, gamma)
output.extend(block)
current = update_context(current, block)
6.3 调参指南
七、常见问题解答(FAQ)
Q:SBD需要重新训练模型吗?
A:不需要重新从零训练。论文显示在预训练基础上微调100B tokens即可获得效果。
Q:支持哪些模型架构?
A:论文测试了Llama-3.1 8B和Qwen-3 8B,理论上适用于任何Transformer架构。
Q:和扩散模型相比如何?
A:在代码生成任务(HumanEval+)上准确率领先扩散模型(68.3% vs 76.0%),且推理更快。
Q:硬件要求是否特殊?
A:可在标准GPU运行,H100实测效果最佳,需要支持FP8精度。
Q:是否支持中文?
A:论文未特别说明中文测试,但方法本身与语言无关。
八、未来展望
-
更大模型验证:目前最大测试到8B参数 -
硬件优化:开发针对SBD的定制化GPU内核 -
动态block调整:根据上下文复杂度自动调整block size -
多模态扩展:结合视觉-语言模型的加速方案
本文基于Meta FAIR团队论文《Set Block Decoding is a Language Model Inference Accelerator》,实验数据来自原论文Table 1。实际部署时建议参考最新代码实现。