本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
內容平行化
內容平行化是一種模型平行化,可沿著序列維度分割模型啟用。與僅分割 LayerNorm 和 RMSNorm 的其他序列平行化
SMP v2 與轉換器引擎
Hugging Face Transformer 模型與 SMP 內容平行化相容
SMP v2 目前為下列 Hugging Face Transformer 模型提供內容平行化支援。
-
GPT-NeoX
-
Llama 2 和 Llama 3
設定內容平行化
將整數值設定為 context_parallel_degree 參數,以平均分配叢集中的 GPU 數量。例如,如果您有 8-GPU 執行個體,對於 context_parallel_degree 請使用 2、4 或 8。我們建議從小的 context_parallel_degree 值開始逐步增加,直到模型符合 GPU 記憶體中所需的輸入序列長度。
下列程式碼片段示範如何在訓練指令碼中新增 SMP 初始化模組 torch.sagemaker.init(),以及設定訓練任務啟動器的 JSON 格式 SMP 組態字典,同時遵循使用 SageMaker 模型平行化程式庫 v2 中介紹的兩個步驟程序。您不需要對 PyTorch 模型或 PyTorch FSDPcontext_parallel_degree 參數的詳細資訊,請參閱 SMP v2 核心功能組態參數。
在您的訓練指令碼中
在步驟 1 中,使用 torch.sagemaker.init()初始化指令碼以啟用 SMP v2,並使用 torch.sagemaker.transform API 包裝模型。
從 SMP v2.6.0 開始,您可以使用引數 cp_comm_type 來判斷要使用的內容平行化實作。SMP 程式庫目前支援兩種實作:p2p 和 all_gather。p2p 實作會在注意力實作期間使用點對點收發呼叫來累積金鑰值,並以非同步方式執行,允許與運算重疊。all_gather 實作則改用 AllGather 集體操作,並以同步方式執行。
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model, cp_comm_type="p2p")
SMP 組態
在步驟 2 中,將下列參數新增至 SageMaker PyTorch 估算器的 SMP 組態字典。
{ ..., # other SMP config parameters "context_parallel_degree": 2 }