AI News HubLIVE
站内改写

Show HN:Thaw – 運行中大語言模型的 Git 分支(分叉代理,跳過預填充)

Thaw 是一個開源工具,能夠將運行中的大語言模型(LLM)會話分叉到多個分支,跳過昂貴的預填充階段,實現 AI 代理的並行探索。在 H100 GPU 上,它實現了次秒級的分叉時間(中位數 0.88 秒),相比之下冷啓動需要約 340 秒。Thaw 支持 vLLM 和 SGLang,使用場景包括代理分支、強化學習訓練、並行編碼代理和會話遷移。

文章情報

工程師進階

要點

  • Thaw 提供了一種分叉原語,允許 AI 代理從運行中的會話分支,無需重做預填充。
  • 性能演示:在 H100 GPU 上首次分叉僅 1.16 秒,後續中位數 0.88 秒,相比冷啓動加速約 400 倍。
  • 應用場景包括代理推理分支、RL 後訓練(如 PPO、DPO)、並行編碼代理和跨 GPU/數據中心會話遷移。
  • 開源(Apache-2.0),與 vLLM 和 SGLang 集成,支持多種恢復模式(磁盤、預存 RAM、插槽熱交換)。

為甚麼重要

這條新聞值得關注,因為Thaw 提供了一種分叉原語,允許 AI 代理從運行中的會話分支,無需重做預填充。

技術影響

可能影響模型選型、推理成本、產品能力和評測基準。

Thaw 是一個為 AI 代理提供分叉原語的開源工具。它允許你像 Git 分支一樣,將一個運行中的大語言模型(LLM)會話快照並分叉到多個並行子進程,共享權重和 KV 緩存,從而跳過昂貴的預填充階段。該項目已在 GitHub 上發佈,許可證為 Apache-2.0。

Thaw 的核心是一個預熱的子進程池(ForkPool),引擎只啓動一次,後續每次調用 fork_completions() 僅快照 KV 緩存。在 H100 80GB PCIe GPU 上使用 Llama-3.1-8B 模型時,首次分叉耗時 1.16 秒,中位數分叉僅 0.88 秒,而冷啓動需要約 340 秒,加速比約 400 倍。所有分支在分叉邊界處比特一致且互異。

Thaw 的應用場景廣泛:代理分支允許在推理過程中將對話分叉為多個並行假設,選擇最佳結果;強化學習後訓練(如 PPO、DPO、樹狀 GRPO)將每個分支的預填充時間替換為內存拷貝時間,大幅降低成本;並行編碼代理可讓 8 個代理探索 8 種解決方案,而無需為每個分支支付完整的預填充開銷;會話遷移則允許在不丟失狀態的情況下,將實時推理會話遷移到其他 GPU、集羣或數據中心。

技術實現上,Thaw 組合了四個原語:凍結權重、凍結 KV 緩存、凍結調度器狀態,以及將三者恢復到新進程中。它可以將完整的引擎狀態保存為兩個二進制文件(.thaw 和 .thawkv),並通過雙緩衝流水線 DMA 從磁盤或預存內存中快速恢復。Thaw 支持三種恢復模式:磁盤模式(使用 O_DIRECT 繞過內核緩存)、預存 RAM 模式(通過 mmap + cudaHostRegister 實現零拷貝路徑)、以及插槽熱交換模式(thaw serve 將 mmap 釘住,後續交換僅需純 PCIe DMA,對 8B 模型僅需 0.29 秒)。KV 緩存快照是技術上最困難的部分——thaw 序列化塊內容、哈希表和調度器視圖,使得父進程中緩存的請求前綴在子進程中立即命中緩存。

Thaw 還與 vLLM 的睡眠模式集成(RFC #34303),支持在 GPU 內存釋放後通過 LLM.sleep(level=2) 和 LLM.wake_up() 組合實現比特一致的恢復。對於 70B 模型(TP=2),睡眠釋放 72.67 GiB/rank,喚醒恢復時間約 53.6 秒。

項目架構基於 Rust,包含多個 crate:thaw-core(文件格式和 I/O)、thaw-cuda-sys(CUDA FFI 綁定)、thaw-runtime(編排流程,支持模擬 CUDA 以便在 Mac 上測試)、thaw-py(Python 綁定)、thaw-cli(基準測試工具)。Python 層提供 vLLM 和 SGLang 集成,以及引擎池和 OpenAI 兼容 API 服務器。

快速開始只需 pip install thaw-vllm[all],然後即可使用 ForkPool 進行分叉。更多詳情和基準測試方法請參閲項目文檔。