文档
高级
推测解码
使用草稿模型加速生成
高级
推测解码是一种可以显著提高大型语言模型(LLM)生成速度,同时不降低响应质量的技术。
推测解码依赖于两个模型的协作:
在生成过程中,草稿模型快速提出潜在的词元(子词),主模型验证这些词元的速度比从头开始生成它们要快。为了保持质量,主模型只接受与其自身生成结果相匹配的词元。在接受最后一个草稿词元后,主模型总是会额外生成一个词元。
要用作草稿模型,它必须与主模型具有相同的“词汇表”。
在 高级用户
模式或更高版本中,加载一个模型,然后在聊天侧边栏的 推测解码
部分选择一个 草稿模型
。
聊天侧边栏的推测解码部分
当你打开下拉菜单时,可能会看到以下内容:
没有兼容的草稿模型
尝试下载已加载模型的参数更低的变体(如果存在)。如果你的模型没有更小的版本,则寻找一个合适的配对。
例如:
主模型 | 草稿模型 |
---|---|
Llama 3.1 8B Instruct | Llama 3.2 1B Instruct |
Qwen 2.5 14B Instruct | Qwen 2.5 0.5B Instruct |
DeepSeek R1 Distill Qwen 32B | DeepSeek R1 Distill Qwen 1.5B |
加载主模型和草稿模型后,只需开始聊天即可启用推测解码。
推测解码的加速效果通常取决于两件事:
简单来说,您需要选择一个比主模型小得多的草稿模型。而且有些提示词会比其他提示词效果更好。
与单独运行主模型相比,同时运行草稿模型和主模型以启用推测解码需要更多的计算和资源。
主模型加速生成的关键在于选择一个既小巧又足够强大的草稿模型。
以下是根据主模型大小(以参数为单位)选择最大草稿模型大小的通用指南:
主模型大小 | 预计可加速的最大草稿模型大小 |
---|---|
3B | - |
7B | 1B |
14B | 3B |
32B | 7B |
通常,主模型和草稿模型之间的尺寸差异越大,加速效果越显著。
注意:如果草稿模型不够快或在向主模型提出“好”建议方面不够有效,则生成速度不会增加,甚至可能下降。
使用推测解码时,您可能会注意到生成速度并非在所有提示词中都保持一致。
加速效果在所有提示词中不一致的原因是,对于某些提示词,草稿模型向主模型提出“好”建议的可能性较小。
以下是一些说明此概念的极端示例:
提示词:“一元二次方程公式是什么?”
在这种情况下,70B 模型和 0.5B 模型都极有可能给出标准公式 x = (-b ± √(b² - 4ac))/(2a)
。因此,如果草稿模型将此公式作为下一个词元提出,目标模型很可能会接受它,这使得它成为推测解码高效工作的理想情况。
提示词:“写一个故事,开头是:‘门吱呀一声开了……’”
在这种情况下,较小模型的草稿词元很可能更经常被较大模型拒绝,因为每个下一个词都可能分支成无数种有效的可能性。
虽然“4”是“2+2”唯一合理的答案,但这个故事可以继续为“露出了一个怪物”、“随着风的呼啸”、“萨拉僵住了”或数百种其他完全有效的延续,使得较小模型特定词语的预测与较大模型的选择匹配的可能性大大降低。
此页面的源代码可在 GitHub 上获取