NVIDIA Snapshot 开源:把已初始化的 GPU 推理负载存成快照,副本恢复从数分钟缩到 45 秒内
核心概要
NVIDIA 开源了 NVIDIA Snapshot,一个面向 Kubernetes 上 GPU 推理负载的检查点与恢复组件:它把已完全初始化的负载连同 CPU 与 GPU 内存一起存成可移植产物,在相同 GPU 型号与驱动的节点上恢复,从而跳过权重加载、编译与图捕获。在 vLLM、SGLang 和 TensorRT LLM 三个引擎、从 6 亿参数模型到 8 卡上 1 TB 检查点的 MoE 模型上,所有测试配置的副本恢复都在 45 秒以内,比冷启动快 8 到 36 倍。
深度剖析
推理副本的启动与故障恢复不再需要每次从零初始化,已初始化的 GPU 负载可以被保存下来并在兼容节点上重新拉起。 此前推理需求突增或副本失效时,可用的 GPU 并不能立刻变成服务容量,初始化一个大语言模型负载的冷启动要花上数分钟,扩容和恢复都被拖慢。 在 vLLM、SGLang 与 TensorRT LLM 上,覆盖 6 亿参数模型到 8 卡上约 600 GB 至 1 TB 检查点的 MoE 模型,所有测试配置的恢复时间为 3.6 至 42.7 秒,比冷启动快 8 到 36 倍;最大的 MoE 模型恢复在 43 秒以内,而冷启动为 6 至 19 分钟。
快照把整个已初始化进程状态当作一个可移植产物,恢复时从检查点处继续运行,而不是重新走一遍初始化流程。 冷启动的时间分布在启动进程与库、读取权重并构建张量、内存剖析与 KV 缓存分配、以及内核编译、自动调优和 CUDA 图捕获上,快照恢复跳过的是这些重复步骤。 检查点通过 Kubernetes 自定义资源创建,恢复时给新 Pod 加上 nvidia.com/restore-from 注解并指向对应的 PodSnapshot;恢复过程分为智能体准备、CRIU 读回进程镜像、CUDA 状态拷回显存和唤醒重映射四个阶段,在 8 卡 MoE 配置上 CUDA 恢复占 18 至 29 秒,CRIU 恢复占 4.2 至 10.8 秒。
检查点本身的一次性开销在第一个恢复副本上就能收回。 检查点需要额外时间捕获已初始化的副本并占用存储,这部分成本按模型和配置只付一次。 在所有测试配置中,检查点时间加恢复时间都短于一次冷启动;检查点创建耗时 15 秒至 5.5 分钟,具体取决于模型与配置。
启示与展望
演示范围是 Kubernetes 上单节点内、可跨多 GPU 的兼容负载,恢复目标节点须为相同 GPU 型号与驱动;测量不含容器镜像拉取与容器运行时准备,KV 缓存在每次检查点前释放、不计入产物。
恢复时间主要由存储后端决定,CRIU 阶段的速度受其制约;检查点创建耗时随模型与配置在 15 秒到 5.5 分钟之间变化,且负载必须满足 Snapshot 的检查点/恢复与运行时兼容要求。
