LLM大模型系列(九):NVIDIA Dynamo框架详解——PD分离式部署技术解析

〔更多精彩AI内容,尽在 「魔方AI空间」 ,引领AIGC科技时代〕

本文作者:猫先生

NVIDIA Dynamo是2025年3月GTC大会推出的开源分布式推理服务框架,旨在解决大语言模型(LLM)推理过程中的资源不匹配和低效问题。

Dynamo通过PD分离式部署(Prefill-Decode Disaggregation)技术,将LLM推理拆分为两个阶段:计算密集型的预填充(Prefill)和内存密集型的解码(Decode),并分别部署到不同GPU上运行,从而实现资源的最优利用和推理效率的大幅提升。

这一创新技术基于DistServe和Splitwise等研究论文的思路,结合NVIDIA在GPU加速计算领域的深厚积累,形成了独特的分布式推理架构。

一、Dynamo框架整体架构

Dynamo采用模块化的分布式架构,由多个协同工作的核心组件构成,各组件均可独立扩展。

Dynamo 是一个高吞吐量低延迟的推理框架,专为在多节点分布式环境中服务生成式 AI 和推理模型而设计。Dynamo 设计为与推理引擎无关(支持 TRT-LLM、vLLM、SGLang 或其他),并捕获 LLM 特定的功能,例如:

  • 分离预填充和解码推理 – 最大化 GPU 吞吐量,并促进吞吐量和延迟之间的权衡。

  • 动态 GPU 调度 – 根据波动需求优化性能。

  • LLM 感知请求路由 – 消除不必要的 KV 缓存重新计算。

  • 加速数据传输 – 使用 NIXL 减少推理响应时间。

  • KV 缓存卸载 – 利用多个内存层次结构提高系统吞吐量。

Dynamo的核心优势在于其完全开源,采用Rust和Python混合编程模式(核心性能模块用Rust编写,上层逻辑用Python实现),为开发者提供了完全的透明度和灵活性。通过模块化设计,用户可根据需要选择特定组件,确保与现有AI技术栈兼容,避免高昂的迁移成本。

二、PD分离式部署技术原理

PD分离技术是Dynamo的核心创新,其原理基于对LLM推理过程的深入理解。

LLM推理通常分为两个阶段:Prefill和Decode,这两个阶段对硬件资源的需求存在显著差异:

阶段

资源需求特性

计算模式

显存占用模式

Prefill

计算密集型

高并行度,矩阵乘法为主

低,固定规模

Decode

内存密集型

顺序生成,访存为主

随上下文增长指数级上升

在传统集成式推理流水线中,LLM的Prefill和Decode阶段往往被置于同一GPU上运行,导致资源需求不匹配,资源利用率不高。例如,当用户请求的Prefill长度和Decode长度非常不匹配时,同一GPU需要同时处理高算力需求和高内存带宽需求的任务,难以发挥最佳性能。

Dynamo通过以下方式实现PD分离:

1、阶段拆分:将LLM推理拆分为两个独立阶段,Prefill负责处理用户输入(prompt),生成第一个输出token和KV Cache;Decode负责基于KV Cache依次生成后续token。

2、Worker分离:为两个阶段分别部署Worker节点,Prefill Worker和Decode Worker在不同GPU上运行,避免相互干扰。例如,在腾讯云的部署案例中,使用了3个H20节点(每个节点8个GPU),其中:

  • 2个节点专门部署Prefill Workers(每个节点部署8个Worker,tp=1,pp=8)

  • 1个节点专门部署Decode Workers(部署8个Worker,tp=8,pp=1)

3、通信优化:通过NIXL库实现GPU间零拷贝数据传输,当Prefill阶段完成后,迅速将生成的KV Cache经由NIXL推送给Decode节点,减少数据传输延迟。

4、智能调度:GPU Planner监控GPU容量指标(如算力利用率、内存带宽使用率、队列长度等),根据实时负载动态调整Worker数量与GPU分配。例如,在Hopper架构上运行Llama模型时,Dynamo可将性能提升一倍以上;在GB200 NVL72集群上运行DeepSeek-R1 671B模型时,吞吐量可提升30倍。

PD分离技术使每个GPU专注于特定任务,避免了资源浪费。例如,Prefill阶段可使用计算性能更强但内存带宽相对较低的GPU,而Decode阶段则使用内存带宽更高的GPU(如配备HBM的H100或Blackwell GPU)。

三、Dynamo的源代码关键部分解析

Dynamo作为开源框架,其代码结构清晰展示了PD分离的实现细节。

以下是关键代码模块的解析:

1、PrefillQueue实现

PrefillQueue是PD分离的核心组件。在Dynamo的dynamo/examples/llm/utils/prefill_queue.py中,对 NATSQueue 的包装,专门用于处理 RemotePrefillRequest 类型的请求队列,主要用于 LLM 推理系统中 prefill 阶段的请求分发和处理

class PrefillQueue(NATSQueue):
    """
    A wrapper of NATSQueue for PrefillRequest.
    The stream name is forced to be "prefill_queue".
    """

    def __init__(
        self,
        stream_name="prefill_queue",
        nats_server: str = "nats://localhost:4222",
        dequeue_timeout: float = 1,
    ):
        super().__init__(
            stream_name=stream_name,
            nats_server=nats_server,
            dequeue_timeout=dequeue_timeout,
        )

    async def enqueue_prefill_request(
        self, prefill_request: RemotePrefillRequest
    ) -> None:
        encoded_request = msgspec.json.encode(prefill_request)
        await self.enqueue_task(encoded_request)

    async def dequeue_prefill_request(self) -> Optional[RemotePrefillRequest]:
        encoded_request = await self.dequeue_task()
        if encoded_request is not None:
            prefill_request = msgspec.json.decode(
                encoded_request, type=RemotePrefillRequest
            )
            return prefill_request
        else:
            return None

2、模型并行配置

Dynamo支持灵活的模型并行策略,允许为Prefill和Decode阶段设置不同的TP(张量并行)和PP(流水线并行)度数。配置文件通常位于examples/llm/configs/中:

Common:
  model: deepseek-ai/DeepSeek-R1-Distill-Llama-8B
  router: kv
  block-size: 64
  max-model-len: 16384
  kv-transfer-config: '{"kv_connector":"DynamoNixlConnector"}'

Frontend:
  served_model_name: deepseek-ai/DeepSeek-R1-Distill-Llama-8B
  endpoint: dynamo.Processor.chat/completions
  port: 8000

Processor:
  common-configs: [model, block-size, max-model-len, router]

Router:
  min-workers: 1
  common-configs: [model, router]

VllmWorker:
  enforce-eager: true
  max-num-batched-tokens: 16384
  enable-prefix-caching: true
  tensor-parallel-size: 1
  ServiceArgs:
    workers: 1
    resources:
      gpu: 1
  common-configs: [model, block-size, max-model-len, router, kv-transfer-config]

Planner:
  environment: local
  no-operation: true

3、KV Cache管理模块

dynamo/docs/kv_cache_manager.md

Dynamo的KV Cache管理器(KV Cache Manager)负责维护全局的KV Cache索引和多层次存储。

Dynamo Distributed KV Manager 有两种实现:V1 和 V2。例如上图Dynamo KV manager V1的设计。

  • 左侧部分说明了 V1 架构中的执行时间线和数据移动顺序。vLLM 等推理引擎可以启动具有灵活访问粒度的异步作,从而支持各种重叠策略,以根据优先级是吞吐量还是延迟来优化执行。

  • 右侧部分描述了运行时内的数据流。目前,不会分配超出推理引擎所需的 GPU 高带宽内存 (HBM) 的任何部分,确保其对推理任务的独占利用。在推理运行时中,GPU 设备内存可以完全专用于键值 (KV) 存储,也可以部分分配给前缀 KV 缓存,这些缓存由推理引擎动态管理,类似于 vLLM。

当推理引擎确定应从 GPU 内存中驱逐 KV 缓存中的某些条目时,它会调用 put_async() API 由 KV 管理器卸载这些条目,KV 管理器会更新其索引并将数据传输到适当的存储层(CPU 内存或 CPU 和 SSD 的组合)。相反,如果推理引擎无法在其自行管理的前缀缓存中找到所需的 KV 条目,它会向 KV 管理器发出 get_async() 请求。如果 KV 条目已经存在,则通过 get_async() 进行检索将显著减少重新计算开销,确保高效的 KV 管理、优化的内存利用率和改进的推理性能。

在 V1 实现中,CPU 内存充当 SSD 存储的缓存层。如果所需的 KV 条目驻留在 CPU 内存中,则系统会绕过 SSD 访问,从而减少传输延迟。异步 API (如 get_async() 或 put_async() )也启用传输,因此不会影响系统性能。

V2 实现引入了跨工作程序实例和存储的分布式 KV 池,其中包含设计中概述的所有功能。开发仍在进行中

4、NIXL通信库集成

NIXL是Dynamo的底层通信库,支持GPU间零拷贝数据传输。

NIXL库通过GPUDirect RDMA等硬件加速技术实现低延迟通信,绕过CPU中转,保障跨服务器通信的高吞吐和低延迟。这一设计确保了Prefill和Decode阶段之间的数据交换不会成为性能瓶颈。

四、PD分离式部署实战操作步骤

1、环境准备

硬件要求:

  • 多GPU节点集群(建议至少3个节点,每个节点8个GPU)

  • 支持HBM显存和NVLink通信的GPU(如NVIDIA H100或Blackwell架构)

  • 推荐操作系统:Ubuntu 24.04

依赖安装:

apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -yq python3-dev python3-pip python3-venv libucx0
python3 -m venv venv
source venv/bin/activate

pip install "ai-dynamo[all]"

信库配置:

  • 安装NVIDIA容器工具包

  • 配置NIXL通信库(集成在Dynamo中,无需单独安装)

2、启动服务

本地启动:

# 启动API服务和Worker节点
dynamo serve graphs.agg:Frontend -f configs/agg.yaml

# 发送测试请求
curl localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
    "model": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
    "messages": [{"role": "user", "content": "Hello, how are you?"}],
    "stream": false,
    "max_tokens": 300
}' | jq

Docker Compose部署:

# deploy/docker-compose.yml
version: '3.8'
services:
  planner:
    image: dynamo-planner:latest
    ports:
      - "8080:8080"
    depends_on:
      - router
      - prefills-worker
      - decodes-worker

  router:
    image: dynamo-router:latest
    ports:
      - "8090:8090"
    depends_on:
      - prefills-worker
      - decodes-worker

  prefills-worker:
    image: dynamo-prefills:latest
    environment:
      - WORKER_CONFIG=prefills.yaml
      - GPU_ID=0
    deploy:
      replicas: 8  # 根据GPU数量调整
      resources:
        limits:
          nvidia.com/gpu: 1

  decodes-worker:
    image: dynamo-decodes:latest
    environment:
      - WORKER_CONFIG=decodes.yaml
      - GPU_ID=0
    deploy:
      replicas: 4
      resources:
        limits:
          nvidia.com/gpu: 1

Kubernetes集群部署:

  • 编写Prefill和Decode Worker的Deployment YAML文件

  • 配置Service暴露API端口

  • 使用kubectl apply部署组件

  • 设置Horizontal Pod Autoscaler(HPA)实现动态扩缩容

3、性能验证

PD分离部署后,可通过以下指标验证其效果:

  • 首包延迟(TTFT):从输入到输出第一个token的延迟

  • 逐token延迟(TPOT):每个后续token的生成时间

  • 吞吐量(Throughput):每秒生成的token总数

在腾讯云的测试案例中,使用Dynamo的PD分离部署对比vLLM传统部署,取得了以下性能提升:

  • 首包延迟(TTFT)降低55.7%

  • 预填充吞吐量提高125%

  • 解码阶段性能波动减少

  • 集群整体吞吐量提升30倍(DeepSeek-R1 671B模型)

五、PD分离式部署的应用场景与优势

PD分离式部署特别适合以下应用场景:

  1. 推理流量波动大的场景:通过动态资源调度,Dynamo能够适应推理流量的峰谷变化,避免固定分配GPU资源导致的高负载或资源浪费。

  2. 长上下文推理场景:当用户请求的输入序列较长(如>4096 tokens)时,Decode阶段的显存需求会迅速增长。通过KV Cache分层存储,Dynamo能够有效管理长上下文推理的显存压力。

  3. 吞吐量需求场景:在需要同时处理大量请求的场景中,PD分离部署允许独立扩展Prefill和Decode Worker的数量,实现吞吐量的线性增长。

  4. 成本敏感的场景:通过将KV Cache卸载到CPU内存或SSD,Dynamo能够在保持用户体验的同时降低GPU资源消耗,从而降低总体推理成本。

PD分离式部署的主要优势在于:

  • 资源利用率最大化:每个GPU专注于特定任务,避免资源浪费。

  • 吞吐量显著提升:在大规模集群上,Dynamo可将推理throughout提升30倍以上。

  • 灵活性与扩展性:各组件(API Server、Planner、Router、Worker)均可独立扩展,适应不同规模的推理需求。

  • 兼容性:支持所有主要AI推理后端(TensorRT-LLM、vLLM、SGLang等),方便与现有技术栈集成。

六、PD分离式部署的未来发展方向

PD分离式部署技术作为LLM推理优化的重要方向,未来可能在以下几个方面进一步发展:

  1. 更细粒度的资源调度:当前Dynamo的GPU Planner基于全局指标进行资源分配,未来可能实现基于单个请求的资源调度,进一步优化资源利用。

  2. 异构计算支持:随着AI加速器种类的增加,Dynamo可能扩展对不同硬件(如CPU、TPU、DPU)的支持,实现更灵活的PD分离部署。

  3. 自动化配置优化:通过机器学习和自动化调优技术,Dynamo可能自动生成最优的PD分离配置(如TP/PP度数、Worker数量比例等),减少人工干预。

  4. 与训练系统的集成:将PD分离技术从推理扩展到训练领域,实现训练和推理阶段的资源优化。

  5. 边缘计算支持:将PD分离部署技术应用于边缘设备,实现低延迟、高效率的LLM推理服务。

NVIDIA DynamoPD分离式部署技术代表了LLM推理服务的下一代架构,通过将计算密集型和内存密集型阶段分离部署,显著提升了资源利用率和推理吞吐量。

随着生成式AI应用的普及,Dynamo有望成为AI工厂的"超级大脑",帮助开发者以更低的成本实现更高效率的推理服务。

推荐阅读

► AGI新时代的探索之旅:2025 AIGCmagic社区全新启航

► 项目应用:开源视界

► 技术专栏: 多模态大模型最新技术解读专栏 | AI视频最新技术解读专栏 | 大模型基础入门系列专栏 | 视频内容理解技术专栏 | 从零走向AGI系列

► 技术综述: 一文掌握视频扩散模型 | YOLO系列的十年全面综述 | 人体视频生成技术:挑战、方法和见解 | 一文读懂多模态大模型(MLLM)一文搞懂RAG技术范式演变及Agentic RAG强化学习技术全面解读 SFT、RLHF、RLAIF、DPO一文搞懂DeepSeek的技术演进之路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值