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 儲存。