在使用 vLLM 進行多 GPU 部署時,若需要使用兩張顯示卡進行張量並行(Tensor Parallel),一般只需加入以下參數:
--tensor-parallel-size 2不過,在部分硬體平台或驅動環境下,vLLM 可能會在初始化 GPU 通訊時卡住,導致容器遲遲無法完成啟動。
此時查看容器 Log,通常會停留在類似以下訊息:
[pynccl.py:113] vLLM is using nccl==2.28.9

這通常表示程式卡在 NCCL(NVIDIA Collective Communications Library) 初始化階段,尤其是 PCIe P2P 通訊建立時發生問題。
遇到這種情況,可以嘗試在 docker run 中加入以下環境變數:
-e NCCL_P2P_DISABLE=1
-e NCCL_IB_DISABLE=1
-e NCCL_SHM_DISABLE=0
各參數的作用如下:
NCCL_P2P_DISABLE=1:停用 GPU 間的 PCIe Peer-to-Peer 通訊。NCCL_IB_DISABLE=1:停用 InfiniBand 通訊(一般沒有使用 InfiniBand 的環境建議關閉)。NCCL_SHM_DISABLE=0:保留 Shared Memory 通訊,通常可提供較佳的本機傳輸效率。
若加入上述設定後仍偶爾發生初始化失敗或運行不穩定,也可以再加入:
--disable-custom-all-reduce此參數會停用 vLLM 自訂的 AllReduce 實作,改用 NCCL 的標準流程。雖然在某些情況下可能略微影響多 GPU 效能,但通常能提升整體穩定性,對於容易卡在 NCCL 初始化或多 GPU 通訊異常的環境特別有幫助。
如果您的環境在加入以上參數後,容器可以順利完成初始化並正常提供服務,就代表問題很可能與 GPU 間的通訊機制有關,而非模型本身或 vLLM 設定錯誤。