技术指南

分类预填充和解码服务

一种服务架构,将大型语言模型推理分为两个独立的阶段——预填充和解码——并在不同的 GPU 池上运行它们。

听听这个指南AI叙述 · ~2 min

在本页阅读时间:2分钟
  1. 概述
  2. 深入探讨
  3. 现实世界的实施
  4. 分类预填充和解码服务的未来
  5. 付诸实践
  6. 不断探索
  7. 常见问题

概述

这很重要,因为这两个阶段具有相反的硬件需求,将它们强制到同一台机器上会浪费容量并损害延迟。

深入探讨

当法学硕士回答时,它分两个阶段进行。 Prefill 一次性读取整个提示并构建键值(KV)缓存;这是一个巨大的、并行的、受计算限制的突发,使 GPU 的数学单元饱和。然后,解码一次生成一个令牌,每一步都会读取整个 KV 缓存——内存带宽受限、计算量较轻的细流。一起运行时,长预填充会拖延每个人的解码(队头阻塞),并且对两者进行批处理会产生干扰。分解将预填充放在一个 GPU 池上,并在另一个 GPU 池上进行解码,通过 NVLink 或 InfiniBand 等快速互连在它们之间传输 KV 缓存。每个池都经过独立调整和扩展,提高了吞吐量,平滑了尾部延迟,并让操作员同时达到了严格的第一个令牌时间和每个输出令牌时间目标。

现实世界的实施

聊天助手将长文档提示路由到计算量大的预填充集群,然后从内存优化的解码集群流式传输回复,以保持打字延迟平稳。

NVIDIA Dynamo 和 vLLM 允许操作员部署单独的预填充和解码工作组,因此突发的长提示不会冻结后续的生成。

Mooncake(由 Moonshot AI 的 Kimi 使用)分解了预填充和解码,并添加了分布式 KV 缓存池以大规模减少冗余的即时重新计算。

代码完成服务专用于短提示的小型预填充池和大型解码池,因为大部分成本来自流式传输许多输出令牌。

分类预填充和解码服务的未来

预计分解将成为生产堆栈中的默认设置。 DistServe、Splitwise 和 Mooncake 等系统使其普及,而 vLLM 和 NVIDIA Dynamo 现在提供分类模式。研究正在推动 KV 缓存传输优化、跨请求的缓存池和重用、流量变化下预填充/解码比率的动态重新平衡,以及与前缀缓存和分块预填充的更紧密集成。随着上下文窗口增长到数百万个令牌,分离这些阶段对于经济高效、低延迟的服务变得越来越重要。

付诸实践

为什么这很重要

  • 成本与预算. 多年来,架构决策决定着性能和运营成本。
  • 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
  • 质量控制. 更好的工程选择可以减少生产中的可靠性事故。

留意

  • 优化一项基准测试可以隐藏更广泛的系统弱点。
  • 基础设施和维护成本常常被低估。
  • 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

后续步骤

  1. 在实施之前定义延迟、质量和成本目标。
  2. 在实际负载和数据条件下进行基准测试。
  3. 仪器监控错误、漂移和用户影响。
  4. 在扩展之前准备回滚和事件响应路径。

不断探索

免费通讯

获取每日AI简报

每个工作日早晨提供三条经过验证的AI故事,使用简明英文撰写。永久免费,无广告。

每个工作日发送一封邮件。一键退订。我们永不出售或分享您的地址。

测试一下自己

参加分离式预填充与解码服务测验

每个答案即时反馈,课程通过后可获得可验证ID的可分享证书。

开始测验

支持免费AI教育。AI Understanding是一家501(c)(3)非营利组织——无广告,无付费墙,永不收费。 捐款

常见问题

什么是分类预填充和解码服务?

一种服务架构,将大型语言模型推理分为两个独立的阶段——预填充和解码——并在不同的 GPU 池上运行它们。这很重要,因为这两个阶段具有相反的硬件需求,将它们强制到同一台机器上会浪费容量并损害延迟。

将预填充和解码分离到不同 GPU 池的核心硬件原因是什么?

预填充并行处理整个提示并使计算饱和,而解码每一步都会读取 KV 缓存,并受到内存带宽的限制,这与需要单独、独立调整池的需求相反。

哪些数据结构必须从预填充工作器传输到解码工作器?

Prefill为提示构建KV缓存;解码需要该缓存继续生成,因此缓存通过快速互连传送到解码池。

在共享 GPU 设置中,分解具体可以减少哪些问题?

在共享 GPU 上,长预填充突发可能会阻止正在进行的解码步骤;将它们分开可以防止干扰并稳定尾部延迟。

为什么预填充可以积极地进行批处理,但解码却可以从不同的调整中受益?

Prefill 一起处理所有提示标记,因此较大的批次可以很好地填充张量核心;解码一次生成一个令牌并由内存门控,因此它的扩展方式不同。

通常使用哪些互连在分解池之间移动 KV 缓存?

需要像 NVLink(节点内)和 InfiniBand(节点间)这样的高带宽、低延迟链路,这样 KV 缓存传输就不会成为新的瓶颈。