隨著DeepSeek 671B等超大規模MoE模型的問世,單一裝置已難以承載其龐大的參數量。為此,EAS推出多機分布式推理解決方案,突破硬體限制,實現單個服務執行個體部署在多台機器上,高效支援超大規模模型的部署與運行。本文為您介紹如何配置多機分布式推理。
使用說明
EAS或ModelGallery官方提供的部分SGLang和vLLM鏡像已原生支援分布式推理。如果您想通過自訂鏡像來部署分布式推理,需遵循分布式推理架構的組網規範及分散式處理的基本範式,詳情請參見實現原理。
實現原理
以下內容為您介紹分布式推理涉及的基本概念和實現原理:
執行個體單元
與EAS普通推理服務相比,分布式推理服務引入了執行個體單元(下文簡稱Unit)的概念。Unit內部通過高效能網路通訊,通過TP/PP等模式相互協調完成一次請求處理。一個Unit內的執行個體是有狀態的,而不同Unit之間是完全對稱且無狀態的。
執行個體編號
每個Unit中的執行個體都會通過環境變數的形式注入執行個體編號(Unit內每個執行個體的環境變數及說明,請參見附錄)。不同執行個體會依次分配不同的編號,通過執行個體編號控制不同執行個體執行不同的任務。
承接流量
整個Unit對外預設只通過0號執行個體(RANK_ID 為0)承接流量,通過系統的服務發現機制把使用者流量分配到不同Unit的0號執行個體,然後在Unit內部進行分散式處理。不同Unit獨立承接使用者流量,相互沒有幹擾。
變換
在變換時,Unit會作為一個整體進行重建,新Unit中的所有執行個體會並行建立。等待新的Unit中所有執行個體就緒之後,會先對要刪除的Unit進行摘流,再刪除Unit中的所有執行個體。
生命週期
Unit重建
當Unit整體重建時,老的Unit中的所有執行個體會並行刪除,新的Unit中的所有執行個體也會並行建立,不會根據執行個體編號進行特殊處理。
執行個體重建
Unit內的每個執行個體的生命週期預設和0號執行個體的生命週期一致,當0號執行個體發生重建時,會觸發Unit內的所有其它執行個體進行重建。當非0號執行個體發生重建時,Unit內其他執行個體不會受影響。
分布式容錯
執行個體異常處理機制
當檢測到分布式服務中某個執行個體發生異常時,系統會自動觸發Unit中所有執行個體的重啟操作。
作用:有效解決單點故障導致的叢集狀態不一致問題,確保所有執行個體運行環境完全重設。
協同恢複機制
執行個體重啟完成後,系統會等待Unit中所有執行個體達到一致就緒狀態(通過同步屏障barrier實現),待全部執行個體就緒後,再統一啟動業務進程。
作用:
避免NCCL通訊組網時因執行個體狀態不一致導致的建立分組異常。
確保分布式推理任務的所有參與節點保持嚴格的啟動同步性。
分布式容錯的功能預設是關閉的。如果需要開啟,您可以通過配置unit.guard來啟用該功能,具體配置樣本如下:
{
"unit": {
"size": 2,
"guard": true
}
}配置多機分布式推理
通過EAS自訂部署
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
建立服務:在推理服務頁簽,單擊部署服務,選擇自訂模型部署> 自訂部署。
更新服務:在推理服務頁簽的服務列表中找到要操作的服務,操作列單擊更新。
在參數配置表單中,配置以下關鍵參數。更多參數配置說明,請參見控制台自訂部署參數說明。
在環境資訊地區,配置鏡像和運行命令:
鏡像配置:在官方鏡像中選擇vllm:0.7.1或sglang:0.4.1。

運行命令:選擇鏡像後,系統會自動設定運行命令,您無需修改。
在資源資訊地區,開啟分布式推理開關,並配置以下關鍵參數:

參數
描述
單一實例部署的機器數
單個模型推理執行個體部署的機器數,最小值為2。
RDMA網路
開啟RDMA網路來保證機器之間的高效網路連接。
說明當前僅使用靈駿智算資源部署的服務可以使用RDMA網路。
參數配置完成後,單擊部署/更新。
通過Model Gallery一鍵部署
僅當部署方式選擇SGLang加速部署或vLLM加速部署時,才支援使用分布式推理。
對於參數量比較大的模型,通過Model Gallery一鍵部署模型服務時,選擇SGLang加速部署或vLLM加速部署的分布式部署方式,EAS會自動開啟分布式推理開關。您可以單擊修改配置,來調整單一實例部署使用的機器數量。
附錄
在部署分布式推理服務時,通常需要進行組網操作(例如使用Torch分布式或Ray等架構)。當配置了VPC或RDMA時,每個執行個體會有多個網卡,因此需要指定用於組網通訊用的網卡。
在配置RDMA時,預設使用RDMA的網卡(即net0)。
在未配置RDMA時,使用使用者所配置的VPC對應的網卡(即eth1)。
相關配置通過環境變數傳遞,您可在啟動命令中使用。樣本如下:
環境變數名稱 | 說明 | 樣本值 |
RANK_ID | 執行個體編號,從0開始遞增。 | 0 |
COMM_IFNAME | 組網時預設使用的網卡:
| net0 |
RANK_IP | 組網時使用的IP,即對應COMM_IFNAME網卡的IP。 | 11.*.*.* |
MASTER_ADDRESS | RANK_ID為0的執行個體IP,即對應0號執行個體COMM_IFNAME網卡的IP。 | 11.*.*.* |