本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當您使用 SageMaker 模型平行程式庫 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 記憶體的批次大小,選擇適當的碎片資料平行程度。一般而言,您應該從最低程度開始,以適應 GPU 記憶體中的模型,同時將網路通訊造成的額外負荷降至最低。如果您看到快取排清正在發生的警告,建議您提高分裂程度。
-
如果有的話,
world_size
請根據最大本機批次大小和所需的全域批次大小來決定。 -
您可以嘗試啟用卸載。視案例而定,它可以解決您的記憶體需求,而不必增加分裂程度,這表示通訊更少。
-
-
同時使用 PyTorch FSDP 的碎片資料平行處理和 SMP v2 的張量平行處理,如 中介紹張量平行處理。
-
在大型叢集上訓練時,單獨使用 FSDP 時,全域批次大小可能會變得太大,導致模型的收斂問題。一般而言,大多數研究工作會將批次大小保持在 400 萬個字符以下。在這種情況下,您可以透過使用 SMP v2 的張量平行處理編寫 PyTorch FSDP 來減少批次大小,以解決問題。
例如,如果您有 256 個節點且序列長度為 4096,即使每個 GPU 的批次大小為 1,也會導致 8M 字符的全域批次大小。不過,當您使用張量平行處理,且每個張量平行群組的批次大小為 1 時,這會成為每個 GPU 的 1/2 批次大小,轉換為 400 萬個字符。
-
使用 8k 等長內容進行訓練時,16k 啟用記憶體可能會變得非常高。FSDP 不會碎片啟用,啟用可能會導致 GPUs 耗盡記憶體。在這種情況下,您可以透過使用 SMP v2 的張量平行處理編寫 PyTorch FSDP 來有效率地訓練。
-
參考組態
SageMaker 模型平行處理訓練團隊根據實驗提供下列參考點,其中 Llama 2 模型使用 轉換為 SMP 轉換器模型torch.sagemaker.transform,並在序列長度為 4096 的ml.p4d.24xlarge
執行個體上進行訓練 (FP16 或 BF16)。
模型 | 模型大小 (模型參數的數量) | 執行個體數量 | 碎片資料平行程度 | 張量平行程度 | 啟用檢查點 | 啟用卸載 | 批次大小 |
---|---|---|---|---|---|---|---|
Llama 2 | 7B | 1 | 8 | 1 | TRUE | FALSE | 4 |
70B | 32 | 256 | 1 | TRUE | FALSE | 2 | |
175B | 64 | 128 | 4 | TRUE | TRUE | 6 |
您可以從上述組態中推斷,以估算模型組態的 GPU 記憶體使用量。例如,如果您增加 100 億個參數模型的序列長度,或將模型的大小增加到 200 億,則可能需要先降低批次大小。如果模型仍然不符合,請嘗試增加張量平行處理程度。
使用 SageMaker AI 主控台和 Amazon CloudWatch 監控和記錄訓練任務
若要監控 CPU 記憶體使用率、GPU 記憶體使用率和 GPU 使用率等系統層級指標,請使用透過 SageMaker AI 主控台
-
在左側導覽窗格中,選擇訓練。
-
選擇 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 AI 功能套件的完整存取權,請新增
AmazonSageMakerFullAccess
。