文档
模型上下文协议 (MCP)
模型 (model.yaml)
高级
推测解码是一种可以显著提高大型语言模型 (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上获取