随着大语言模型(LLM)规模不断增长,其参数量动辄超过700亿、1200亿,甚至单个请求的上下文窗口也变得巨大。这使得模型推理所需的内存和算力,往往超出了单块GPU乃至单个多GPU节点的能力范围。要处理这类大规模模型的推理请求,部署跨节点、分布式的GPU集群已成为必然选择。
这一挑战也催生了推理技术栈的创新。NVIDIA推出的开源框架Dynamo,正是为了应对分布式推理的复杂性而生。它能有效管理跨GPU和跨节点的任务执行,将推理过程分解为预填充(Prefill)和解码(Decode)等不同阶段,并将内存密集型和计算密集型任务分离开来。通过动态调度GPU资源,Dynamo旨在提升硬件利用率并保持低延迟。
借助Dynamo,基础设施团队能够弹性地扩展推理能力,以应对流量高峰,而无需为昂贵的GPU资源进行永久性的过度配置。该框架兼容多种主流推理引擎,包括TensorRT-LLM、vLLM、SGLang等,为组织提供了技术选型上的灵活性。
近期,微软Azure与NVIDIA合作展示了这套开源框架的实际效能。他们在一个基于特殊机架级虚拟机实例(配备72块紧密集成的NVIDIA Blackwell GPU)的Kubernetes集群上部署了Dynamo。团队使用这套环境运行了开源的1200亿参数模型GPT-OSS 120B,并遵循了经过验证的“InferenceMAX”配置方案。结果显示,该部署实现了每秒120万个令牌的生成速度,证明了Dynamo能够在常规集群上胜任企业级的推理任务。
此次部署完全采用标准的云原生工具,如GPU节点池、Helm和Kubernetes编排,表明组织无需定制化基础设施即可从Dynamo中获益。
核心创新:计算与解码分离
Dynamo的一项核心创新,在于将LLM推理的预填充和解码阶段分离到不同的GPU上执行。预填充阶段负责处理输入上下文,属于计算密集型任务;而解码阶段生成输出令牌,主要受内存带宽限制。通过解耦这两个阶段,可以针对各自特点独立优化GPU数量和并行策略。
这种架构选择解决了一个常见的推理负载不匹配问题。以一个生成个性化产品推荐的电商应用为例,它可能需要处理包含用户和产品上下文的数千个令牌(重度预填充),但最终只生成简短的50个令牌描述(轻度解码)。若在相同的GPU上执行这两项任务,会造成资源浪费。采用分离式服务架构后,预填充GPU可专注于计算繁重的任务,而解码GPU则聚焦于内存带宽和容量。
动态资源调度与智能缓存
该框架具备动态GPU调度能力,可根据实时需求调整资源。其内置的“规划器”组件基于服务水平协议,利用时间序列数据预测流量,并动态调整预填充和解码工作节点间的GPU分配,以满足“首令牌时间”和“令牌间延迟”等目标。
在流量激增期间,系统可将GPU资源从解码操作重新分配给预填充操作,或快速启动额外资源。当负载下降时,资源随之缩减。这种弹性帮助企业在不超额配置硬件的前提下,满足服务目标。
此外,Dynamo包含一个LLM感知路由器,它会跟踪关键值(KV)缓存在GPU集群中的分布位置。当新请求到达时,路由器会计算其与已缓存KV块的重叠度,并将流量导向能够最大化缓存复用的GPU。这种方法减少了冗余计算,对于多个请求共享共同上下文的场景尤其有价值。
在内存管理方面,KV块管理器会将访问频率低的缓存块移至CPU RAM、SSD甚至对象存储中。这种分层缓存机制使得缓存存储可扩展至PB级别,同时保持高效复用。若不进行卸载,GPU上更多的并发会话可能导致缓存被驱逐,从而引发昂贵的重新计算。通过卸载,GPU能够在维持低延迟的同时,服务更多用户。
总结与展望
Dynamo被视为NVIDIA Triton推理服务器的后继者,融合了早期推理服务框架的经验教训。该项目使用Rust编写以追求高性能,同时提供Python接口以确保可扩展性,目前已在GitHub上完全开源。对于寻求在Kubernetes等云原生平台上高效、经济地部署大规模AI推理服务的企业而言,Dynamo提供了一个有前景的解决方案。
|