投机解码
投机解码
投机解码是现代人工智能中最巧妙的优化技术之一。它使用一个快速的小模型来帮助大模型更快地生成文本。基本思想很简单:让小模型猜测大模型会说什么,然后让大模型一次性验证这些猜测。
通常,大模型一次生成一个标记,每个标记都需要从内存中加载所有模型权重。由于我们之前讨论的内存带宽瓶颈,这很慢。但如果大模型能够一次生成多个标记,那将会快得多。问题在于,大模型无法在不看到中间标记的情况下提前预测多个标记。
投机解码通过使用一个比主模型小10倍左右的小型草稿模型来生成多个候选标记来解决这个问题。草稿模型因为小所以速度快。然后大模型一次性并行处理所有候选标记,并检查哪些它同意。由于草稿模型相当不错,它的大部分猜测都是正确的,大模型会接受它们。
关键见解是,验证一批标记几乎和生成一个标记一样快,因为权重只需要为这批标记加载一次。因此,如果草稿模型生成5个标记并且大模型全部接受,那么实际上你就在通常生成1个标记的时间内生成了5个标记。当草稿模型完全准确时,这可以实现5倍的加速。
在实践中,投机解码在实际工作负载上实现了2到3倍的加速。加速取决于草稿模型与大模型的匹配程度。如果草稿模型差异太大,它的大部分猜测将被拒绝,加速效果微乎其微。但如果草稿模型匹配良好,投机解码就是一顿免费的午餐:更快的生成而没有任何质量损失。
