预填充受计算限制。解码受内存限制。为什么你的 GPU 不应该两者兼而有之。

内部分解的 LLM 推理 - 大多数 ML 团队尚未采用的 2-4 倍成本降低背后的架构转变。预填充是受计算限制的。解码受内存限制。为什么你的 GPU 不应该两者兼而有之。首先出现在《走向数据科学》上。

来源:走向数据科学

大型企业规模化 Kubernetes 集群,用于对其面向客户的 LLM 产品进行实时推理。我们从跨 8 个节点的 64 个 H100 SXM GPU 开始,所有节点都以单片模式运行 vLLM。结果不是我们需要的。在预填充爆发期间,张量核心的利用率达到 92%。十毫秒后,在解码过程中,相同的 GPU 下降到 28%。我们支付了 64 个 H100 的费用,并在每个请求生命周期的 90% 的时间里从其中的大约 20 个 H100 中获得了有意义的工作。财务团队想知道为什么 GPU 账单看起来像是我们在训练基础模型,而我们只是提供服务。

在 H100 GPU 上运行推理的 Llama 70B 模型在预填充期间计算利用率达到 92%。三十毫秒后,在解码过程中,相同的 GPU 下降到 30%。硬件没有改变。模型重量相同。工作负载的算术强度在一个阶段和下一阶段之间下降了 5 倍。

这种不匹配是每个推理成本问题的根源,大多数服务架构都假装它不存在。

每次大型语言模型处理一个请求时,它都会做两件不同的事情。首先,它并行读取整个提示,用每个输入标记的注意力状态填充键值缓存。这就是预填充阶段。然后,它一次生成一个输出令牌,并在每一步中从该缓存中读取。这就是解码。预填充是一个矩阵乘法问题。解码是内存带宽问题。它们具有相反的硬件要求,标准做法是在同一 GPU 池上运行。

这种标准做法的成本很高。尺寸适合预填充突发的 GPU 大量过度配置用于解码。具有成本效益的解码 GPU 无法跟上预填充的速度。您将在两个方向上为最坏的情况付出代价。

以下是它的工作原理、权衡之处以及何时不需要费心。

两个阶段的推理工作量不一样

两个工作负载。相反的瓶颈。相同的 GPU。