概述
一种服务架构,将大型语言模型推理分为两个独立的阶段——预填充和解码——并在不同的 GPU 池上运行它们。这很重要,因为这两个阶段具有相反的硬件需求,将它们强制到同一台机器上会浪费容量并损害延迟。
分解预填充和解码服务是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。
深入探讨
当法学硕士回答时,它分两个阶段进行。 Prefill 一次性读取整个提示并构建键值(KV)缓存;这是一个巨大的、并行的、受计算限制的突发,使 GPU 的数学单元饱和。然后,解码一次生成一个令牌,每一步都会读取整个 KV 缓存——内存带宽受限、计算量较轻的细流。一起运行时,长预填充会拖延每个人的解码(队头阻塞),并且对两者进行批处理会产生干扰。分解将预填充放在一个 GPU 池上,并在另一个 GPU 池上进行解码,通过 NVLink 或 InfiniBand 等快速互连在它们之间传输 KV 缓存。每个池都经过独立调整和扩展,提高了吞吐量,平滑了尾部延迟,并让操作员同时达到了严格的第一个令牌时间和每个输出令牌时间目标。
技术洞察
这两个阶段的瓶颈不同。 Prefill 并行处理所有提示标记,因此它的 FLOP 会随着提示长度而缩放,并且会最大化张量核心。解码是自回归的:每个新令牌都需要一次前向传递,从 HBM 重新读取完整的 KV 缓存,因此吞吐量由内存带宽而不是计算来控制。分解通过调整大小、批处理甚至为每个池选择不同的并行性来利用这一点,然后将 KV 缓存从预填充工作线程传送到解码工作线程。
掌握分类预填充和解码服务
一种服务架构,将大型语言模型推理分为两个独立的阶段——预填充和解码——并在不同的 GPU 池上运行它们。这很重要,因为这两个阶段具有相反的硬件需求,将它们强制到同一台机器上会浪费容量并损害延迟。分解预填充和解码服务是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将分类预填充和解码服务视为一种操作模型,而不是单个功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。
在实践中,使用分解预填充和解码服务的强大团队可以根据可靠性和成本来优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。
多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。
战略影响
多年来,架构决策决定着性能和运营成本。
多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
更好的工程选择可以减少生产中的可靠性事故。
更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
现实世界的实施
聊天助手将长文档提示路由到计算量大的预填充集群,然后从内存优化的解码集群流式传输回复,以保持打字延迟平稳。
NVIDIA Dynamo 和 vLLM 允许操作员部署单独的预填充和解码工作组,因此突发的长提示不会冻结后续的生成。
Mooncake(由 Moonshot AI 的 Kimi 使用)分解了预填充和解码,并添加了分布式 KV 缓存池以大规模减少冗余的即时重新计算。
代码完成服务专用于短提示的小型预填充池和大型解码池,因为大部分成本来自流式传输许多输出令牌。
实施模式
实践中的分类预填充和解码服务
聊天助手将长文档提示路由到计算量大的预填充集群,然后从内存优化的解码集群流式传输回复,以保持打字延迟平稳。
聊天助手将长文档提示路由到计算量大的预填充集群,然后从内存优化的解码集群流式传输回复,以保持打字延迟平稳。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。
实践中的分类预填充和解码服务
NVIDIA Dynamo 和 vLLM 允许操作员部署单独的预填充和解码工作组,因此突发的长提示不会冻结后续的生成。
NVIDIA Dynamo 和 vLLM 允许操作员部署单独的预填充和解码工作组,这样一连串的长提示就不会冻结后续世代。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
实践中的分类预填充和解码服务
Mooncake(由 Moonshot AI 的 Kimi 使用)分解了预填充和解码,并添加了分布式 KV 缓存池以大规模减少冗余的即时重新计算。
Mooncake(由 Moonshot AI 的 Kimi 使用)分解了预填充和解码,并添加了分布式 KV 缓存池,以大规模地减少冗余的即时重新计算。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
实践中的分类预填充和解码服务
代码完成服务专用于短提示的小型预填充池和大型解码池,因为大部分成本来自流式传输许多输出令牌。
代码完成服务专用于短提示的小型预填充池和大型解码池,因为大部分成本来自流式传输许多输出令牌。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在实际负载和数据条件下进行基准测试。
在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
仪器监控错误、漂移和用户影响。
仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在扩展之前准备回滚和事件响应路径。
在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。