如何让大语言模型提速3倍

如何让大语言模型提速3倍

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

推测解码利用小型草稿模型生成候选token,再由大模型并行验证,借助GPU空闲算力实现2-3倍加速且不损失输出质量。其效果取决于接受率,结构化任务中接受率高,创意写作中较低,高并发时收益下降。草稿来源包括小模型、预测头、量化版本或文本搜索,需根据部署场景选择。

🔎

延伸解读

加速原理:把空闲算力变成输出

文章指出,大模型生成每个token时,需要从显存读取全部权重(如70B模型约140GB),但实际计算量很小,导致GPU算力利用率在生成阶段仅20%-40%。推测解码利用这一空闲算力,让小型草稿模型先预测多个候选token,再由大模型一次前向传播并行验证,从而将空闲算力转化为实际输出,实现2-3倍加速。

接受率决定加速效果

推测解码的加速效果取决于接受率,即草稿token被目标模型接受的比例。结构化任务(如代码生成、摘要)中接受率高,可达80%-90%;而创意写作等开放式任务中接受率低。当接受率低于约50%时,额外开销会超过收益。因此,同一配置在不同负载下效果差异显著,需根据实际场景评估。

草稿来源的四种选择

草稿token可来自四种途径:独立小模型(需同族同分词器)、目标模型的额外预测头(需训练)、量化或压缩版本(如QuantSpec)、以及基于已有文本的搜索。每种方案各有成本:小模型需额外部署和显存,预测头需训练,量化实现复杂,搜索仅适用于重复性输出。选择时需考虑部署场景和资源限制。

并发限制:高负载下收益下降

推测解码依赖空闲算力,当并发请求增多时,GPU算力趋于饱和,验证工作需与真实请求竞争,加速效果显著下降。例如,70B模型在batch size为1时加速1.96倍,但batch size为128时仅1.21倍,甚至可能低于基线。因此,生产环境需动态调整草稿长度或禁用推测,以平衡负载。

Q&A

什么是推测解码?

推测解码是一种加速大语言模型生成的技术,它使用一个小型草稿模型先生成多个候选token,然后由大模型(目标模型)在一次前向传播中并行验证这些候选token,从而利用GPU的空闲算力实现2-3倍的加速,且不损失输出质量。

为什么大语言模型生成token时速度慢?

因为生成是自回归的,每个token都需要一次前向传播,而每次前向传播需要从GPU内存中读取全部模型权重(例如70B模型需要读取约140GB),但实际计算量很小,导致GPU计算单元利用率低(20-40%),大部分时间花在数据传输上。

推测解码如何保证输出质量不损失?

通过接受规则保证。在贪婪解码下,候选token必须与目标模型的最高概率token匹配才被接受;在采样下,根据两个模型概率的比较决定接受或拒绝,拒绝时从调整后的概率分布中采样替换。这样保证最终输出的统计分布与目标模型单独运行一致。

推测解码的加速效果受哪些因素影响?

主要受接受率影响,接受率越高加速越明显。接受率取决于任务类型:结构化任务(如代码生成、摘要)接受率高,创意写作等开放任务接受率低。此外,采样温度越高接受率越低,并发请求增多时加速效果下降,甚至可能低于基线。

推测解码中草稿模型有哪些来源?

四种常见来源:1)独立的小模型(如1B为13B草稿);2)目标模型上的额外预测头(如DeepSeek-V3);3)目标模型的量化或压缩版本(如QuantSpec);4)基于文本搜索(从已有文本中找匹配序列)。选择取决于部署场景和tokenizer兼容性。

推测解码在高并发场景下效果如何?

高并发时加速效果下降,因为空闲算力减少,验证工作需与真实请求竞争。例如,70B模型在batch size为1时加速1.96倍,但batch size为128时降至1.21倍,甚至可能低于基线。vLLM等系统提供动态调整机制,在高并发时自动关闭推测解码。

🏷️

标签

➡️

继续阅读