GitHub Repo
vLLM 社群回報重啟後輸出分歧,核心自動調校可能影響重現性
固定種子與零溫度的 Qwen3-8B 測試,仍因核心配置不同而出現輸出差異。相關 PyTorch 修補尚未合併,影響範圍須依版本、硬體與編譯路徑確認。

vLLM 社群於 9 月 27 日回報,固定隨機種子並將溫度設為零,重新啟動程序仍可能改變輸出。案例使用 vLLM 0.30.0、PyTorch 2.13.0、Qwen3-8B 與 RTX 6000 Ada;選到不同核心配置的程序,在八組提示中有三組產生不同 token 序列。[問題回報](https://github.com/vllm-project/vllm/issues/58899)
回報者將原因指向融合 Q/K 正規化與旋轉位置編碼的 Triton 核心。編譯器依實測速度,選擇歸約區塊為 64 或 128 的配置;兩者加總順序不同,浮點尾數差異可能改變貪婪解碼結果。強制選定候選配置可重現對應輸出,啟用 `VLLM_BATCH_INVARIANT=1` 也仍觀察到跨程序差異。[重現步驟](https://github.com/vllm-project/vllm/issues/58899)
官方文件原本就未保證預設配置可重現,並把批次不變性列為線上服務取得一致結果的途徑,適用前提仍是相同硬體與 vLLM 版本。固定種子控制的是隨機數來源;就此案例而言,若底層數值計算路徑不同,僅保存採樣參數仍不足以建立可靠的比較基準。[重現性文件](https://docs.vllm.ai/en/latest/usage/reproducibility/)
另一個相關環節在 PyTorch:Dynamo 追蹤結束後還原全域狀態時,可能連帶覆寫 Inductor 的確定性設定。9 月 25 日提出的修補改為直接還原底層全域旗標,保留編譯器的獨立設定。提案附有使用 CPU 張量與 eager 後端的回歸測試,便於隔離狀態還原問題,但仍需另外驗證 GPU 服務端行為。截至查核,提案仍未合併,也不能視為已解決上述 vLLM 案例。[修補提案](https://github.com/pytorch/pytorch/pull/198572)
批次不變性目前仍屬測試階段。最新文件另列出部分 CUDA 配置可繞過 `torch.compile`,顯示實際執行路徑會隨設定而異,不能將單一版本的回報外推到所有部署。[功能限制與實作](https://docs.vllm.ai/en/latest/features/batch_invariance/)
從工程角度看,這意味著評測與回歸測試應涵蓋完整程序重啟,並保存模型修訂版、套件版本及編譯設定,比對 token 序列與對數機率。排查時也應區分單一程序內的穩定性與跨次啟動的一致性,避免把基礎設施差異誤判為提示或權重變更的效果。後續應追蹤維護者確認、修補合併及跨硬體重現;目前證據主要來自回報者,尚不足以估算普遍發生率或模型品質影響。