本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 PyTorch 訓練指令碼中使用SMDDP程式庫
從 SageMaker 分散式資料平行處理 (SMDDP) 程式庫 v1.4.0 開始,您可以使用程式庫作為PyTorch 分散式套件AllReduce
和 AllGather
集體操作,您只需在訓練指令碼開始時匯入SMDDP程式庫,並在程序群組初始化期間SMDDP設定為 PyTorch 分散式模組的後端。使用單行後端規格,您可以讓所有原生 PyTorch 分散式模組和整個訓練指令碼保持不變。下列程式碼片段示範如何使用程式SMDDP庫作為 PyTorch型分散式訓練套件的後端:PyTorch 分散式資料平行 (DDP)
對於 PyTorch DDP 或 FSDP
初始化程序群組,如下所示。
import torch.distributed as dist import smdistributed.dataparallel.torch.torch_smddp dist.init_process_group(backend="smddp")
注意
( PyTorch DDP僅適用於任務) smddp
後端目前不支援使用 torch.distributed.new_group()
建立子程序群組API。您也不能將smddp
後端與 NCCL
和 等其他程序群組後端同時使用Gloo
。
對於 DeepSpeed 或 Megatron-DeepSpeed
初始化程序群組,如下所示。
import deepspeed import smdistributed.dataparallel.torch.torch_smddp deepspeed.init_distributed(dist_backend="smddp")
注意
若要在 中使用 SMDDP AllGather
搭配 mpirun
型啟動器 (smdistributed
和 pytorchddp
)SMDDP 使用 SageMaker Python 啟動分散式訓練任務 SDK,您也需要在訓練指令碼中設定下列環境變數。
export SMDATAPARALLEL_OPTIMIZE_SDP=true
如需撰寫 PyTorch FSDP訓練指令碼的一般指引,請參閱 文件中的 PyTorch具有完整陰影資料平行的進階模型訓練 (FSDP)
如需撰寫 PyTorch DDP訓練指令碼的一般指引,請參閱 PyTorch 文件中的平行分佈資料入門
完成訓練指令碼的調整後,請繼續前往SMDDP 使用 SageMaker Python 啟動分散式訓練任務 SDK。