NVIDIA AI 发布 Dynamo Snapshot:基于 CRIU 的 Kubernetes AI 推理快速启动系统
NVIDIA 推出 Dynamo Snapshot,利用 CRIU 和 cuda-checkpoint 技术实现 AI 推理工作负载在 Kubernetes 上的快速冷启动,通过优化将大型模型启动时间从几分钟降低到数秒。
在生产环境中,AI 推理工作负载的需求会随时间波动,需要弹性扩展。然而,在 Kubernetes 上冷启动推理工作负载可能需要几分钟,期间 GPU 已分配但空闲,无法处理请求。冷启动包括容器镜像拉取、模型权重加载、CUDA 内核预热、CUDA 图编译以及服务发现注册等步骤,这在流量高峰时极易导致 SLA 违规。
为了解决这一问题,NVIDIA AI 研究团队发布了 Dynamo Snapshot,一种基于检查点/恢复机制的快速启动系统。该系统利用 CRIU(用户空间检查点/恢复)和 cuda-checkpoint 工具,将推理工作者的完整状态(包括 GPU 和主机状态)保存到存储中,并在需要时快速恢复。检查点过程先由 cuda-checkpoint 将 GPU 设备状态转储到 CPU 内存,再由 CRIU 将主机进程树状态序列化到磁盘。恢复时顺序相反:CRIU 先恢复进程树,cuda-checkpoint 再从 CPU 内存恢复 GPU 状态。
在 Kubernetes 上,Dynamo Snapshot 通过一个特权 DaemonSet(snapshot-agent)实现,该组件通过 Helm chart 安装,在每个节点上独立处理容器的检查点和恢复。它支持灵活的存储后端,并且不依赖云提供商特性。对于多 GPU 和多节点场景(未来版本),团队引入了静默/恢复钩子:工作者在引擎初始化后、分布式运行时启动前写入一个信号文件,检查点后恢复时直接在该点继续执行,避免了 TCP 连接和 RDMA 状态的问题。
Dynamo Snapshot 包含三项关键优化:
- KV 缓存取消映射:由于检查点在服务任何请求之前进行,KV 缓存无需保存。通过 CUDA 虚拟内存管理 API 释放物理内存但保留虚拟地址,将检查点大小从 190 GiB 降至 6 GiB(Qwen3-0.6B 模型)。
- 加速 CRIU 内存恢复:通过并行 memfd 恢复(使用线程池并发处理共享内存缓冲区)和 Linux 原生 AIO(异步 I/O,保持最多 128 个并发读取),大幅缩短恢复时间。对于 gpt-oss-120b 模型,CRIU 恢复时间从 119 秒降至 15 秒,接近理论极限。
- GPU 内存服务(GMS):利用 CUDA VMM API 将模型权重从核心 CRIU 检查点中分离,允许进程恢复和权重恢复并行执行。GMS 使用 GPUDirect Storage 或对等 GPU RDMA/NVLink 等高速路径,结合 8 块本地 NVMe SSD 条带化,将 gpt-oss-120b 的端到端启动时间降至 5 秒以下,实现 21 倍加速。
部署方面,Dynamo Snapshot 使用三个 Kubernetes 资源:snapshot-agent DaemonSet、DynamoCheckpoint 自定义资源(定义模型配置的检查点)和 DynamoGraphDeployment CR(引用检查点进行恢复)。检查点身份由模型、后端框架、张量并行度等字段的 SHA256 哈希确定,支持显式和自动两种模式。当前仅支持 vLLM,处于有限预览阶段,需要 x86_64 GPU 节点、NVIDIA 驱动 580.xx 以上以及 ReadWriteMany 存储。