

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 與針對 AWS 基礎設施最佳化的 SMDDP 程式庫的相容性
<a name="model-parallel-core-features-v2-smddp-allgather"></a>

您可以使用 SageMaker 模型平行處理程式庫 v2 (SMP v2) 搭配 [SageMaker 分散式資料平行處理 (SMDDP) 程式庫，該程式庫](data-parallel.md)提供針對 AWS 基礎設施最佳化的`AllGather`集體通訊操作。在分散式訓練中，集體通訊操作旨在同步多個 GPU 工作器並在它們之間交換資訊。`AllGather` 是碎片資料平行化中常用的核心集體通訊操作之一。若要進一步了解 SMDDP `AllGather` 操作，請參閱[SMDDP `AllGather` 集體操作](data-parallel-intro.md#data-parallel-allgather)。最佳化此類集體通訊操作將直接有助於更快速的端對端訓練，而不會對收斂產生副作用。

**注意**  
SMDDP 程式庫支援 P4 和 P4de 執行個體 (另請參閱 SMDDP 程式庫[支援的架構 AWS 區域和執行個體類型](distributed-data-parallel-support.md))。

SMDDP 程式庫透過[程序群組](https://pytorch.org/docs/stable/distributed.html)層與 PyTorch 原生整合。若要使用 SMDDP 程式庫，您只需將兩行程式碼新增至訓練指令碼。它支援任何訓練架構，例如 SageMaker Model Parallelism Library、PyTorch FSDP 和 DeepSpeed。

若要啟用 SMDDP 並使用其 `AllGather` 操作，您需要將兩行程式碼新增至訓練指令碼，做為 [步驟 1：調整 PyTorch FSDP 訓練指令碼](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2) 的一部分。請注意，您需要先使用 SMDDP 後端初始化 PyTorch 分散式，然後執行 SMP 初始化。

```
import torch.distributed as dist

# Initialize with SMDDP
import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp") # Replacing "nccl"

 # Initialize with SMP
import torch.sagemaker as tsm
tsm.init()
```

適用於 PyTorch 的 [SageMaker Framework Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) (另請參閱 [支援的架構和 AWS 區域](distributed-model-parallel-support-v2.md) SMP v2 和 SMDDP [支援的架構 AWS 區域和執行個體類型](distributed-data-parallel-support.md) 程式庫) 會使用 SMP 二進位檔和 SMDDP 二進位檔預先封裝。若要進一步了解 SMDDP 程式庫，請參閱[使用 SageMaker AI 分散式資料平行化程式庫執行分散式訓練](data-parallel.md)。