專家平行處理 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

專家平行處理

專家混合 (MoE) 模型是一種採用稀疏方法的轉換器模型,相較於訓練傳統的密集模型,它更輕量化訓練。在此 MoE 神經網路架構中,每個輸入只會使用稱為專家的模型元件子集。這種方法提供數種優點,包括更有效率的訓練和更快速的推論,即使模型大小較大也一樣。換句話說,使用相同的運算預算來訓練全密度模型,您可以在使用 MoE 時適合較大的模型或資料集。

MoE 模型由多個專家組成,每個專家都由神經網路組成,通常是前饋網路 (FFN)。稱為路由器的閘道網路會決定要將哪些權杖傳送到哪個專家。這些專家專門處理輸入資料的特定層面,使模型能夠更快地訓練、降低運算成本,同時實現與其對等密集模型相同的效能品質。若要進一步了解一般的專家混合,請參閱 NVIDIA 開發人員網站中的 部落格在LLM架構中套用專家混合

專家平行處理是一種平行處理,可處理跨GPU裝置分割 MoE 模型的專家。

SMP v2 與 NVIDIA Megatron 整合,實作專家平行處理以支援訓練 MoE 模型,並在 PyTorch FSDP上執行APIs。您繼續照原樣使用 PyTorch FSDP訓練程式碼,並為訓練 MoE 模型啟用SMP專家平行處理。

與SMP專家平行處理相容的 Hugging Face Transformer 模型

SMP v2 目前為下列 Hugging Face 轉換器模型提供專家平行處理支援。

設定專家平行處理

對於 expert_parallel_degree,您可以選取專家平行處理程度的值。值必須平均分配叢集GPUs中的 數目。例如,若要在使用執行個體搭配 8 時碎片化模型GPUs,請選擇 2、4 或 8。我們建議您從較小的數字開始,並逐漸增加,直到模型符合GPU記憶體。

下列程式碼片段說明如何將SMP初始化模組新增至torch.sagemaker.init()訓練指令碼,並依照 中介紹的兩個步驟程序,設定訓練任務啟動器的SMP組態字典JSON格式使用 SageMaker 模型平行處理程式庫 v2。您不需要對 PyTorch 模型或PyTorch FSDP組態進行任何變更。如需 expert_parallel_degree 參數的詳細資訊,請參閱 SMP v2 核心功能組態參數

注意

您可以搭配 使用專家平行處理混合碎片資料平行處理。請注意,專家平行處理目前與張量平行處理不相容。

注意

此專家平行處理訓練功能可在 SageMaker 和 程式庫的下列組合中使用 PyTorch :

  • SMP v2.3.0 及更新版本

  • SageMaker Python 2SDK.214.4 版及更新版本

  • PyTorch v2.2.0 及更新版本

在您的訓練指令碼中

步驟 1 中,使用 初始化指令碼torch.sagemaker.init()以啟用 SMP v2,並使用 torch.sagemaker.transform 包裝模型API,將 config 參數新增至 API以啟用 MoE。下列程式碼片段說明如何使用從頭開始訓練的 SMP MoE為AutoModelForCausalLM提取 MoE 轉換器模型組態的一般模型類別啟用 MoE。 from_config from_pretrained若要進一步了解 SMPMoEConfig類別,請參閱 torch.sagemaker.moe.moe_config.MoEConfig

# Import the torch.sagemaker.transform API and initialize. import torch.sagemaker as tsm tsm.init() # Import transformers AutoModelForCausalLM class. from transformers import AutoModelForCausalLM # Import the SMP-implementation of MoE configuration class. from torch.sagemaker.moe.moe_config import MoEConfig # Define a transformer model with an MoE model configuration model = AutoModelForCausalLM.from_config(MoEModelConfig) # Wrap it by torch.sagemaker.transform with the SMP MoE configuration. model = tsm.transform( model, config=MoEConfig( smp_moe=True, random_seed=12345, moe_load_balancing="sinkhorn", global_token_shuffle=False, moe_all_to_all_dispatcher=True, moe_aux_loss_coeff=0.001, moe_z_loss_coeff=0.001 ) )

SMP 組態

步驟 2 SageMaker PyTorch 中,將下列參數新增至估算器的SMP組態字典。

{ ..., # other SMP config parameters "expert_parallel_degree": 8 }