GitHub Repo
Transformers 提出 torchao 延遲匯入修補,避免提前初始化 CUDA 導致子程序失敗
Transformers 社群於 11 月 10 日提出修補,處理安裝 torchao 後,僅匯入模型工具模組就可能初始化 CUDA 的問題。提案尚未合併,作者已回報測試結果,但尚未驗證回報者使用的 PyTorch 2.15 環境。

Transformers 社群於 11 月 9 日回報一項依賴套件的匯入副作用:環境只要安裝 torchao,匯入 transformers.modeling_utils 就可能提前初始化 CUDA,使後續以 fork 建立、再使用 CUDA 的子程序失敗。回報者表示,問題出現在 vLLM 的持續整合測試,共用映像中的 torchao 讓未使用該量化功能的工作也受影響。問題回報
回報環境為 Transformers 5.22.0、torchao 0.18.0、PyTorch 2.15 與 Linux GPU。觸發鏈始於量化器自動載入模組:它匯入 torchao 量化器後,後者立即載入實驗性 safetensors 支援,間接觸發 GPU 檢查。回報附有最小重現,可比較匯入前後的 CUDA 初始化狀態;目前仍應將這項影響限定於已回報的版本組合。重現與原因說明
11 月 10 日提出的修補,將 flatten_tensor_state_dict 的匯入移到實際序列化使用的 get_state_dict_and_metadata() 方法,並加入獨立程序回歸測試,檢查匯入模型工具時不會載入 torchao 或初始化 CUDA。作者回報 30 項相關測試通過,INT8 safetensors 儲存與重載後輸出相同;驗證使用 PyTorch 2.14.1,尚未涵蓋 2.15,完整型別檢查也仍有未修改檔案的診斷。修補提案
技術上的關鍵是 GPU 執行環境的初始化時機。PyTorch 官方文件將父程序先初始化加速器、再 fork 引起的錯誤稱為 poison fork,並要求 CUDA 子程序採用 spawn 或 forkserver。延遲匯入可消除這條意外初始化路徑,部署端仍須檢查工作程序的啟動方式。對共用推論映像的團隊而言,這也顯示可選套件可能改變程序行為;接下來應追蹤提案審查、合併版本與原始環境的驗證結果。PyTorch 多程序文件