text-generation-inference 文档
推测(Speculation)
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
推测
推测解码、辅助生成、Medusa等都是同一个概念的不同名称。这个概念是在大型模型实际运行**之前**生成token,然后只**检查**这些token是否有效。
所以你会在LLM上进行**更多**的计算,但如果你预测正确,你可以在一次LLM运行中生成1、2、3或更多token。由于LLM通常受限于内存(而不是计算),只要你的预测足够准确,这可以带来2-3倍的推理速度提升(例如,对于代码相关的任务,甚至可以更高)。
你可以查看一篇更详细的解释。
文本生成推理支持两种主要的推测方法:
- Medusa
- N-gram
Medusa
Medusa是一种简单的方法,可以在现有模型的基础上,通过额外微调的LM头部,在单次运行中生成多个token。
你可以查看一些针对流行模型的现有微调模型:
- text-generation-inference/gemma-7b-it-medusa
- text-generation-inference/Mixtral-8x7B-Instruct-v0.1-medusa
- text-generation-inference/Mistral-7B-Instruct-v0.2-medusa
为了为你自己的微调模型创建Medusa头部,你应该查阅原始的Medusa仓库。更多信息请阅读训练Medusa。
要在TGI中使用Medusa模型,只需指向一个已启用Medusa的模型,一切都将自动加载。
N-gram
如果你没有Medusa模型,或者没有资源进行微调,你可以尝试使用`n-gram`。N-gram的工作原理是在先前的序列中尝试查找匹配的token,并将其用作生成新token的推测。例如,如果token“np.mean”在序列中多次出现,模型可以推测“np.”的下一个延续很可能也是“mean”。
这是一种极其简单的方法,最适合代码或高度重复的文本。如果推测的错误率太高,这可能不会带来好处。
要启用n-gram推测,只需在你的标志中使用:
--speculate 2