text-generation-inference 文档

推测(Speculation)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

推测

推测解码、辅助生成、Medusa等都是同一个概念的不同名称。这个概念是在大型模型实际运行**之前**生成token,然后只**检查**这些token是否有效。

所以你会在LLM上进行**更多**的计算,但如果你预测正确,你可以在一次LLM运行中生成1、2、3或更多token。由于LLM通常受限于内存(而不是计算),只要你的预测足够准确,这可以带来2-3倍的推理速度提升(例如,对于代码相关的任务,甚至可以更高)。

你可以查看一篇更详细的解释

文本生成推理支持两种主要的推测方法:

  • Medusa
  • N-gram

Medusa

Medusa是一种简单的方法,可以在现有模型的基础上,通过额外微调的LM头部,在单次运行中生成多个token。

你可以查看一些针对流行模型的现有微调模型:

为了为你自己的微调模型创建Medusa头部,你应该查阅原始的Medusa仓库。更多信息请阅读训练Medusa

要在TGI中使用Medusa模型,只需指向一个已启用Medusa的模型,一切都将自动加载。

N-gram

如果你没有Medusa模型,或者没有资源进行微调,你可以尝试使用`n-gram`。N-gram的工作原理是在先前的序列中尝试查找匹配的token,并将其用作生成新token的推测。例如,如果token“np.mean”在序列中多次出现,模型可以推测“np.”的下一个延续很可能也是“mean”。

这是一种极其简单的方法,最适合代码或高度重复的文本。如果推测的错误率太高,这可能不会带来好处。

要启用n-gram推测,只需在你的标志中使用:

--speculate 2

有关该标志的详细信息

< > 在 GitHub 上更新