本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 PyTorch Lightning 訓練指令碼中使用SMDDP程式庫
如果您想要攜帶 PyTorch Lightningsmdistributed.dataparallel
程式庫的 PyTorch 模組、設定 PyTorch Lightning 的環境變數,以接受 SageMaker 訓練工具組預設 SageMaker 的環境變數,以及將程序群組後端設定為 來啟用SMDDP程式庫"smddp"
。若要進一步了解,請逐步執行以程式碼範例分解步驟的下列指示。
注意
PyTorch Lightning 支援可在 SageMaker 資料平行程式庫 1.5.0 版及更新版本中使用。
-
匯入
pytorch_lightning
程式庫和smdistributed.dataparallel.torch
模組。import lightning as pl import smdistributed.dataparallel.torch.torch_smddp
-
from lightning.fabric.plugins.environments.lightning import LightningEnvironment env = LightningEnvironment() env.world_size = lambda: int(os.environ["WORLD_SIZE"]) env.global_rank = lambda: int(os.environ["RANK"])
-
適用於 PyTorch DDP – 使用
"smddp"
適用於process_group_backend
和"gpu"
適用於 的 建立 DDPStrategy類別的物件 accelerator
,並將其傳遞給訓練人員類別。 import lightning as pl from lightning.pytorch.strategies import DDPStrategy ddp = DDPStrategy( cluster_environment=env, process_group_backend="smddp", accelerator="gpu" ) trainer = pl.Trainer( max_epochs=200, strategy=ddp, devices=num_gpus, num_nodes=num_nodes )
適用於 PyTorch FSDP – 使用
"smddp"
適用於 的process_group_backend
和"gpu"
建立 FSDPStrategy類別的物件 (搭配包裝政策 選擇) accelerator
,並將其傳遞給訓練人員類別。 import lightning as pl from lightning.pytorch.strategies import FSDPStrategy from functools import partial from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy policy = partial( size_based_auto_wrap_policy, min_num_params=10000 ) fsdp = FSDPStrategy( auto_wrap_policy=policy, process_group_backend="smddp", cluster_environment=env ) trainer = pl.Trainer( max_epochs=200, strategy=fsdp, devices=num_gpus, num_nodes=num_nodes )
完成訓練指令碼的調整後,請繼續前往SMDDP 使用 SageMaker Python 啟動分散式訓練任務 SDK。
注意
當您在 中建構 SageMaker PyTorch 估算器並提交訓練任務請求時SMDDP 使用 SageMaker Python 啟動分散式訓練任務 SDK,您需要提供 requirements.txt
才能lightning-bolts
在 SageMaker PyTorch 訓練容器中安裝 pytorch-lightning
和 。
# requirements.txt pytorch-lightning lightning-bolts
如需指定來源目錄以放置requirements.txt
檔案以及訓練指令碼和任務提交的詳細資訊,請參閱 Amazon SageMaker Python SDK 文件 中的使用第三方程式庫