返回 文章 apply CMS 文章

NVIDIA Snapshot:让 GPU 推理工作负载秒级启动与恢复

把已初始化的 GPU 推理工作负载做成可复用检查点,让扩容与故障恢复从分钟级降到秒级。

NVIDIA SnapshotGPU 推理冷启动优化Kubernetes
成长分 / 100 73 综合收获、行动、留存与影响

NVIDIA Snapshot:让 GPU 推理工作负载秒级启动与恢复
为什么值得读理解 LLM 推理冷启动为何耗时:启动、权重加载、初始化、编译与图捕获四个阶段各自占用大量时间。

掌握 Snapshot 的检查点/恢复机制与 Kubernetes 集成方式(PodSnapshot、SnapshotJob、restore-from 注解)。

关键洞察
  1. Snapshot 捕获完整初始化状态(含 CPU 与 GPU 内存),恢复时跳过权重加载、编译、自动调优与 CUDA 图捕获。
  2. 所有测试配置下恢复时间在 3.6 至 42.7 秒之间,比冷启动快 8 至 36 倍;最大 MoE 模型(约 600GB 至 1TB 检查点、8 GPU)恢复不到 43 秒。
  3. 检查点是一次性成本(15 秒至 5.5 分钟),在每种配置下检查点加恢复的总时间都短于一次冷启动。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:17750

NVIDIA Snapshot 是 NVIDIA DSX AI Factory Platform 的一个新的开源组件,它使已初始化的 GPU 工作负载可在推理副本之间复用——从而加速启动和恢复。

当推理需求激增或副本发生故障时,可用的 GPU 并不能立即转化为服务容量。初始化一个 LLM 工作负载——这一过程称为冷启动——可能需要数分钟,从而延迟扩缩容和恢复。

Snapshot 是一个用于 Kubernetes 上 GPU 工作负载的检查点与恢复系统。它捕获一个完全初始化的工 作负载——包括 CPU 和 GPU 内存——并在兼容的基础设施上恢复该状态,使推理容量在数秒而非数分钟内上线。图 1 展示了启动序列。Snapshot 跳过了重复的工作负载初始化;基础设施配置和容器镜像加载仍不在测量的恢复路径之内。

一个副本启动的水平时间线,以分钟为单位:配置机器、加载容器镜像、启动推理引擎、加载模型权重、使用 torch.compile 编译,以及捕获 CUDA 图。
图 1. 冷启动序列:配置机器、加载容器镜像、启动推理引擎、将模型权重加载到 GPU 内存、使用 torch.compile 编译,以及捕获 NVIDIA CUDA 图

本文解释了 Snapshot 如何对 GPU 工作负载进行检查点和恢复、平台团队如何集成它,以及在三种推理引擎上恢复时间与冷启动的对比。

用于 AI 工厂运营的 Snapshot

Snapshot 最初为 NVIDIA Dynamo 推理工作器开发,提供了其他推理引擎、调度器、控制器和平台可以集成的检查点与恢复能力。

Snapshot 为 GPU Pod 提供两种操作:

  • 检查点:一旦工作负载完全初始化,将其 CPU 和 GPU 内存捕获为可移植的工件。
  • 恢复:从该工件在任何具有相同 GPU 型号和驱动的节点上启动一个新的 Pod。进程从检查点处继续,因此权重加载、编译和图捕获都被跳过。

两种操作都使用 Kubernetes 自定义资源。要对一个已在运行的 Pod 进行检查点,创建一个命名它的 PodSnapshot。要从模板启动一个 Pod 并在其就绪后立即进行检查点,则创建一个 SnapshotJob。要恢复,向新 Pod 添加注解 nvidia.com/restore-from,命名要从中恢复的 PodSnapshot。工作负载只需要一个小的握手来在检查点前暂停并在恢复后继续。仓库中有 vLLM、SGLang 和 NVIDIA TensorRT LLM 的现成示例。

Snapshot 可以将单节点上跨多个 GPU 的兼容工作负载作为跨 rank 的单个检查点工件进行检查点和恢复。这支持使用张量并行(TP)、数据和专家并行(DEP)以及解码上下文并行(DCP)等并行策略的大型混合专家(MoE)模型的快速启动。工作负载必须满足 Snapshot 的 检查点/恢复和运行时兼容性要求。参见示例配置。

基准测试

设计合作伙伴也在自己的工作负载上评估了 Snapshot:

  • Crusoe,Snapshot 的上游贡献者,在 NVIDIA HGX B300 上将 GLM-5.3 Pod 就绪时间从大约 8 分钟减少到 31 秒。
  • Saturn Cloud,一个 token 工厂平台,对 NVIDIA Snapshot 进行了从零扩展推理的基准测试,在 NVIDIA HGX B300 上将 vLLM 启动时间从 2–8.5 分钟缩短到 6–34 秒。

以下基准测试展示了 Snapshot 如何在 vLLM、SGLang 和 NVIDIA TensorRT LLM(TRT-LLM)上加速推理启动——模型范围从 6 亿参数到在 8 个 GPU 上具有 1 TB 检查点的混合专家(MoE)模型。在所有测试配置中,Snapshot 都能在 45 秒内恢复一个副本,比冷启动快 8 倍到 36 倍。

方法

每个配置都在相同的硬件和软件栈上使用两种策略进行测试:

  • 冷启动:工作负载从头开始。计时从进程启动到引擎初始化返回(推理之前)为止。测量分为四个阶段(表 2):
    • 启动:启动引擎和工作进程、导入 Python 库,以及设置 GPU 之间的通信。一些即时(JIT)内核编译也在此发生。
    • 模型加载:读取模型权重并构建模型的张量,包括加载时进行的任何引擎特定的转换或重新打包。
    • 初始化:准备加载的模型以提供服务:内存分析、分配键值(KV)缓存和运行时缓冲区,以及其他内核和运行时准备。
    • 编译、自动调优和图捕获:编译内核(例如,使用 torch.compile)、为 GPU 自动调优它们,以及捕获 CUDA 图。
  • Snapshot:工作负载从其检查点恢复。计时从要求 Snapshot 恢复的那一刻开始,到工作负载再次提供服务为止。测量分为四个阶段(表 3):
    • 代理设置:节点上的 Snapshot 代理定位检查点工件并准备目标 Pod 和 GPU。
    • 用户空间检查点/恢复(CRIU)恢复:CRIU 是用于进程检查点的标准 Linux 工具,它将进程映像从存储读入主机内存。速度主要由存储后端决定。
    • CUDA 恢复:将 GPU 状态复制回 GPU 内存。
    • 唤醒/重映射:使进程适应新节点并唤醒引擎。

两项测量都不包括拉取容器镜像和设置容器运行时。KV 缓存在每次检查点前被释放,因此它不是工件的一部分。

表 1 还报告了检查点时间和大小:捕获一个完全初始化的副本需要多长时间,以及存储的工件需要多少存储空间。这是每个模型和配置的一次性成本。

设置

  • GPU:NVIDIA B200
  • NVIDIA 驱动:615.71.09
  • 存储后端:VAST(NFS)
  • 推理引擎:
    • vLLM 0.31.0
    • SGLang 0.5.21
    • TensorRT LLM 1.3.0

结果

基准测试显示出四项主要发现。

  • 恢复时间保持在 43 秒以内:在所有测试配置中,Snapshot 在 3.6 至 42.7 秒内恢复副本——比冷启动快 8 倍至 36 倍。最大的 MoE 模型在八块 GPU 上的检查点约为 600 GB 至 1 TB,恢复时间不到 43 秒,而冷启动时间为 6 至 19 分钟。
  • 恢复跳过的不仅是权重加载:冷启动时间包括加载权重、编译和自动调优内核,以及捕获 CUDA 图。Snapshot 恢复已初始化的负载,跳过这些重复步骤。
  • 检查点在第一个恢复的副本上即可收回成本:在每个测试配置中,检查点时间加恢复时间都短于单次冷启动。检查点创建耗时 15 秒至 5.5 分钟,具体取决于模型和配置。
  • 移动 GPU 状态在大规模恢复中占主导:对于八 GPU 的 MoE 配置,恢复 GPU 状态耗时 18 至 29 秒。使用 CRIU 恢复 CPU 进程状态耗时 4.2 至 10.8 秒。

图 2 至图 4 比较了 vLLM、SGLang 和 TensorRT LLM 在测试模型和并行配置下的冷启动与 Snapshot 恢复时间。表 1 提供了每种配置的数据,包括检查点时间和大小。所有时间均以秒为单位。在图表中,TEP8 表示跨八块 GPU 的张量和专家并行。

vLLM 的柱状图,每种配置一对柱子:Qwen3-0.6B(TP1)、Qwen3-14B(TP1、TP2)、gpt-oss-120b(TP1、TP4)、GLM-5.3-NVFP4、DeepSeek-V4.1-Flash 和 DeepSeek-V4-Pro-NVFP4(TEP8)。
图 2. vLLM:每个测试模型和并行配置的冷启动与 Snapshot 对比。Snapshot 使每个副本在 4.7 至 39.6 秒内启动
SGLang 的柱状图,每种配置一对柱子:Qwen3-0.6B(TP1)、Qwen3-14B(TP1、TP2)、gpt-oss-120b(TP1、TP4),以及 GLM-5.3-NVFP4、DeepSeek-V4.1-Flash 和 DeepSeek-V4-Pro-NVFP4(TEP8)。
图 3. SGLang:每个测试模型和并行配置的冷启动与 Snapshot 对比。Snapshot 使每个副本在 3.6 至 42.7 秒内启动
TensorRT LLM 的柱状图,每种配置一对柱子:Qwen3-0.6B(TP1)、Qwen3-14B(TP1、TP2)、gpt-oss-120b(TP1、TP4),以及 GLM-5.3-NVFP4(TEP8)。
图 4. TensorRT LLM(TRT-LLM):每个测试模型和并行配置的冷启动与 Snapshot 对比。Snapshot 使每个副本在 7.79 至 33.55 秒内启动

表 1. 在配备 VAST(NFS)存储的 NVIDIA B200 上、使用 1 至 8 块 GPU 时冷启动与 Snapshot 恢复的对比。检查点时间是每种配置的一次性成本。加速比是冷启动时间除以 Snapshot 恢复时间

模型 引擎 并行 权重大小(GB) 检查点大小(GB) 检查点时间(s) 冷启动(s) Snapshot
agent 恢复(s)
加速比
Qwen3-0.6B vLLM TP1 1.50 8.13 15.30 104.43 4.66 22.40x
Qwen3-0.6B SGLang TP1 1.50 9.42 20.71 87.08 3.59 24.26x
Qwen3-0.6B TRT-LLM TP1 1.50 8.04 20.07 121.26 8.15 14.88x
Qwen3-14B vLLM TP1 29.54 37.71 19.98 122.76 5.72 21.45x
Qwen3-14B vLLM TP2 29.54 48.29 38.37 139.63 6.19 22.55x
Qwen3-14B SGLang TP1 29.54 40.19 26.17 106.26 5.60 18.96x
Qwen3-14B SGLang TP2 29.54 51.93 33.88 124.72 7.45 16.75x
Qwen3-14B TRT-LLM TP1 29.54 36.38 23.72 127.02 12.50 10.16x
Qwen3-14B TRT-LLM TP2 29.54 47.97 42.90 158.66 15.99 9.92x
gpt-oss-120b vLLM TP1 65.25 81.56 44.37 172.80 10.09 17.12x
gpt-oss-120b vLLM TP4 65.25 119.69 133.01 155.66 11.62 13.40x
gpt-oss-120b SGLang TP1 65.25 172.32 55.63 268.96 15.94 16.87x
gpt-oss-120b SGLang TP4 65.25 693.89 174.20 240.17 29.64 8.10x
gpt-oss-120b TRT-LLM TP1 65.25 77.87 29.98 200.55 7.79 25.75x
gpt-oss-120b TRT-LLM TP4 65.25 111.34 85.29 223.96 18.58 12.05x
GLM-5.3-NVFP4 vLLM TEP8 464.82 604.00 282.80 393.65 28.64 13.74x
GLM-5.3-NVFP4 SGLang TEP8 464.82 669.49 327.20 426.70 35.34 12.07x
GLM-5.3-NVFP4 TRT-LLM TEP8 464.82 628.30 231.33 363.90 33.55 10.85x
DeepSeek-V4.1-Flash vLLM TEP8 510.30 647.18 274.75 1110.65 30.96 35.87x
DeepSeek-V4.1-Flash SGLang TEP8 510.30 743.35 286.77 953.09 36.54 26.08x
DeepSeek-V4-Pro-NVFP4 vLLM TEP8 913.09 996.53 193.84 908.48 39.56 22.96x
DeepSeek-V4-Pro-NVFP4 SGLang TEP8 913.09 1039.09 253.72 621.55 42.69 14.56x

表 2 分解了冷启动时间,展示了恢复过程跳过了哪些初始化阶段。

表 2. 冷启动时间按阶段划分(单位:秒)。由于四舍五入或日志与插桩未捕获的间隔,各阶段耗时之和可能与总计不同

模型 引擎 并行度 启动时间(秒) 模型加载(秒) 初始化(秒) 编译、自动调优与图捕获(秒) 总计(秒)
Qwen3-0.6B vLLM TP1 31.37 17.27 14.58 41.21 104.43
Qwen3-0.6B SGLang TP1 33.74 11.67 8.41 33.26 87.08
Qwen3-0.6B TRT-LLM TP1 25.79 3.79 40.64 51.04 121.26
Qwen3-14B vLLM TP1 31.16 26.15 15.30 50.15 122.76
Qwen3-14B vLLM TP2 42.18 18.96 15.29 63.20 139.63
Qwen3-14B SGLang TP1 33.45 20.79 8.28 43.74 106.26
Qwen3-14B SGLang TP2 47.62 18.93 8.29 49.88 124.72
Qwen3-14B TRT-LLM TP1 25.35 11.54 39.36 50.77 127.02
Qwen3-14B TRT-LLM TP2 27.42 8.88 70.62 51.74 158.66
gpt-oss-120b vLLM TP1 35.15 38.69 10.49 88.47 172.80
gpt-oss-120b vLLM TP4 49.91 24.71 12.13 68.91 155.66
gpt-oss-120b SGLang TP1 42.54 34.44 0.36 191.62 268.96
gpt-oss-120b SGLang TP4 57.97 49.06 1.33 131.81 240.17
gpt-oss-120b TRT-LLM TP1 26.21 47.50 42.85 83.99 200.55
gpt-oss-120b TRT-LLM TP4 34.28 42.72 22.34 124.62 223.96
GLM-5.3-NVFP4 vLLM TEP8 65.47 65.88 48.88 213.42 393.65
GLM-5.3-NVFP4 SGLang TEP8 60.77 73.98 2.66 289.29 426.70
GLM-5.3-NVFP4 TRT-LLM TEP8 31.58 90.39 120.43 121.50 363.90
DeepSeek-V4.1-Flash vLLM TEP8 63.96 184.90 77.25 784.54 1110.65
DeepSeek-V4.1-Flash SGLang TEP8 56.18 74.21 38.50 784.20 953.09
DeepSeek-V4-Pro-NVFP4 vLLM TEP8 64.42 95.14 64.87 684.05 908.48
DeepSeek-V4-Pro-NVFP4 SGLang TEP8 58.80 87.68 42.55 432.52 621.55

表 3 将恢复时间分解为 agent 设置、CRIU 恢复、CUDA 恢复以及唤醒/重映射。

表 3. Snapshot 恢复时间按阶段划分(单位:秒)。四个阶段合计构成表 1 中的 Snapshot 列

模型 引擎 并行度 Snapshot:agent 设置 Snapshot:CRIU 恢复 Snapshot:CUDA 恢复 Snapshot:唤醒/重映射 总计(秒)
Qwen3-0.6B vLLM TP1 2.30 1.36 0.78 0.22 4.66
Qwen3-0.6B SGLang TP1 0.24 1.33 1.02 0.99 3.59
Qwen3-0.6B TRT-LLM TP1 5.72 1.43 0.84 0.16 8.15
Qwen3-14B vLLM TP1 0.13 1.58 3.16 0.85 5.72
Qwen3-14B vLLM TP2 0.57 2.03 3.43 0.17 6.19
Qwen3-14B SGLang TP1 0.24 1.35 3.67 0.34 5.60
Qwen3-14B SGLang TP2 0.92 2.17 3.49 0.87 7.45
Qwen3-14B TRT-LLM TP1 6.80 2.70 2.82 0.18 12.50
Qwen3-14B TRT-LLM TP2 9.65 3.52 2.41 0.41 15.99
gpt-oss-120b vLLM TP1 0.48 2.60 6.71 0.30 10.09
gpt-oss-120b vLLM TP4 1.02 4.40 5.57 0.62 11.62
gpt-oss-120b SGLang TP1 0.26 1.69 13.46 0.54 15.94
gpt-oss-120b SGLang TP4 2.69 4.34 21.69 0.93 29.64
gpt-oss-120b TRT-LLM TP1 0.28 1.51 5.74 0.26 7.79
gpt-oss-120b TRT-LLM TP4 9.99 3.30 4.34 0.95 18.58
GLM-5.3-NVFP4 vLLM TEP8 3.79 4.18 20.61 0.06 28.64
GLM-5.3-NVFP4 SGLang TEP8 3.27 10.80 19.96 1.31 35.34
GLM-5.3-NVFP4 TRT-LLM TEP8 9.81 5.32 18.17 0.25 33.55
DeepSeek-V4.1-Flash vLLM TEP8 4.84 5.71 19.37 1.04 30.96
DeepSeek-V4.1-Flash SGLang TEP8 4.34 9.77 21.40 1.03 36.54
DeepSeek-V4-Pro-NVFP4 vLLM TEP8 5.44 4.73 28.98 0.42 39.56
DeepSeek-V4-Pro-NVFP4 SGLang TEP8 3.13 10.13 28.60 0.83 42.69

图 5 展示了 vLLM 的恢复时间明细。

堆叠柱状图展示 vLLM 上的 Snapshot 恢复时间,按 agent 设置、CRIU 恢复、CUDA 恢复和唤醒/重映射拆分,涵盖八种配置,从单 GPU 上的 Qwen3-0.6B 到八 GPU 上的 DeepSeek-V4-Pro-NVFP4。
图 5. 以 vLLM 为例,按阶段展示的 Snapshot 恢复时间。每根柱子上方的数字是总恢复时间(秒)

基准测试工具和复现说明可在仓库中获取。

开始使用

要在 Kubernetes 上使用 Snapshot 运行 GPU 工作负载,请先阅读 NVIDIA Snapshot 仓库中的安装说明和使用指南。

可按照用户指南,结合 NVIDIA Dynamo 试用恢复 worker。

如需讨论集成或提供反馈,请提交 issue,或加入 NVIDIA Dynamo Slack 工作区并访问 #snapshot-dev 频道。

欢迎前往 KubeCon 的 NVIDIA 170 号展位,参与 Kubernetes 深度探讨和现场演示。