本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SageMaker 分散式模型平行程度最佳做法
當您使用 SageMaker 模型 parallel 程式庫 v2 (SMP v2) 執行分散式訓練工作時,請遵循下列準則。
為分散式訓練設定正確的組態
若要估計並找出套用 SMP v2 提供之分散式訓練技術的最佳起點,請檢閱下列清單。每個清單項目都會討論使用和潛在權衡的優點。 SageMaker 模型平行處理程式庫 v2 的核心功能
組態提示
本節提供如何根據全域批次大小需求決定最佳輸送量的最佳模型組態的指導方針。
首先,無論您的型號大小如何,我們建議您進行以下設置。
-
使用您可以使用的功能最強大的執行個體類型。
-
隨時開啟混合精確度,因為它在效能和減少記憶體方面提供可觀的優勢。我們建議您使用,
bfloat16
因為它比float16
. -
在適用時開啟SageMaker 分散式資料平行程度程式庫 (而非使用 NCCL),如中所示。與針對 AWS 基礎設施最佳化的SMDDP程式庫相容一個例外是 tensor-parallelism-only 用例(
hybrid_shard_degree = 1
和tensor_paralle_degree > 1
)。 -
如果您的模型有超過 600 億個參數,我們建議您使用延遲參數初始化。您也可以使用延遲參數初始化來加速任何模型的初始化。
-
我們建議您啟用啟用檢查點。
根據您型號的大小,我們建議您從以下指南開始。
-
使用分片資料平行處理。
-
根據您想要容納 GPU 記憶體的批次大小,選擇適當的分片資料 parallel 程度。通常,您應該從最低程度開始,以便將您的模型放在 GPU 內存中,同時最大程度地減少網絡通信的開銷。如果您看到快取清除正在發生的警告,我們建議您提高分片程度。
-
world_size
根據最大本機批次大小和所需的全域批次大小 (如果有的話) 來決定。 -
您可以嘗試激活卸載。根據情況,它可以滿足您的內存需求,而無需增加分片程度,這意味著更少的通信。
-
-
如中所述,同時使用 PyTorch FSDP 的分片資料平行處理原則和 SMP v2 的張量平行處理原則。張量平行處理
-
在大型叢集上進行訓練時,僅使用 FSDP 時,全域批次大小可能會變得過大,導致模型收斂問題。通常,大多數研究工作將批次規模保持在 4 萬個令牌以下。在這種情況下,您可以通過使用 SMP v2 的張量並行性構成 PyTorch FSDP 以減少批次大小來解決問題。
例如,如果您有 256 個節點和序列長度 4096,即使是每個 GPU 1 個批次大小也會導致 8M 權杖的全域批次大小。但是,當您使用張量並行群組為 2 度的張量 parallel 處理原則,而每個張量平行群組的批次大小為 1,這會變成每個 GPU 1/2 批次大小,轉換為 400 萬個權杖。
-
當以 8k 等較長的上下文長度進行訓練時,16k 啟動記憶體可能會變得非常高。FSDP 不會分片啟用,而且啟用可能會導致 GPU 記憶體不足。在這種情況下,您可以通過組成 PyTorch FSDP 與 SMP v2 的張量並行性來有效地進行培訓。
-
參考組態
SageMaker 模型平行度訓練團隊根據使用轉換為 SMP 變壓器模型的 Lamama 2 模型的實驗,提供以下參考點torch.sagemaker.transform,並在序列長度 4096 和混合精度(FP16 或 BF16)的實ml.p4d.24xlarge
例上進行訓練。
模型 | 模型尺寸(模型參數的數量) | 執行個體數量 | 碎片資料平行程度 | 張量平行程度 | 啟用檢查點 | 啟用卸載 | 批次大小 |
---|---|---|---|---|---|---|---|
美洲駝 | 7B | 1 | 8 | 1 | TRUE | FALSE | 4 |
70B | 32 | 256 | 1 | TRUE | FALSE | 2 | |
175B | 64 | 128 | 4 | TRUE | TRUE | 6 |
您可以從上述組態中推斷,以估算模型組態的 GPU 記憶體使用量。例如,如果您增加 100 億個參數模型的序列長度,或將模型的大小增加到 200 億,則可能需要先降低批次大小。如果模型仍然不符合,請嘗試增加張量平行處理程度。
使用主控台和 Amazon 監 SageMaker 控和記錄訓練任務 CloudWatch
若要監控系統層級指標,例如 CPU 記憶體使用率、GPU 記憶體使用率和 GPU 使用率,請使用透過SageMaker 主控台
-
在左側導覽窗格中,選擇訓練。
-
選擇 Training jobs (訓練任務)。
-
在主窗格中,選擇您要查看其更多詳細資訊的訓練任務名稱。
-
瀏覽主窗格,並找到監視器區段以查看自動化視覺效果。
-
若要查看訓練任務日誌,請選擇監視器區段中的檢視日誌。您可以在中存取訓練工作的分散式訓練工作記錄 CloudWatch。如果您已啟動多節點分散式訓練,您應該會看到多個日誌串流,其標記格式為 algo-n-1234567890。algo-1 日誌串流會追蹤主節點 (第 0 個) 的訓練日誌。
如需詳細資訊,請參閱 監控和分析訓練任務的 Amazon CloudWatch 指標。
許可
若要執行具有模型平行處理原則的 SageMaker 訓練工作,請確定您的 IAM 角色具有正確的許可,如下所示:
-
若要使用 FSx for Lustre
,請新增 AmazonFSxFullAccess
。 -
若要使用 Amazon S3 做為資料管道,請新增
AmazonS3FullAccess
。 -
若要使用 Docker,請建置您自己的容器,然後將其推送到 Amazon ECR,新增
AmazonEC2ContainerRegistryFullAccess
。 -
要完全訪問使用整個 SageMaker 功能套件,請添加
AmazonSageMakerFullAccess
。