選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

SageMaker AI 分散式資料平行處理程式庫簡介

焦點模式
SageMaker AI 分散式資料平行處理程式庫簡介 - Amazon SageMaker AI

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

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

SageMaker AI 分散式資料平行處理 (SMDDP) 程式庫是一個集體通訊程式庫,可改善分散式資料平行訓練的運算效能。SMDDP 程式庫透過提供下列項目來解決金鑰集體通訊操作的通訊開銷。

  1. 程式庫提供 AllReduce 最佳化 AWS。 AllReduce 是一種金鑰操作,用於在分散式資料訓練期間,在每次訓練反覆運算結束時同步跨 GPUs 的漸層。

  2. 程式庫提供針對 AllGather最佳化 AWS。 AllGather 是碎片資料平行訓練中使用的另一個金鑰操作,這是一種記憶體效率的資料平行處理技術,由 SageMaker AI 模型平行處理 (SMP) 程式庫、DeepSpeed 零冗餘最佳化工具 (ZeRO) 和 PyTorch 全碎片資料平行處理 (FSDP) 等常用程式庫提供。

  3. 程式庫會透過充分利用 AWS 網路基礎設施和 Amazon EC2 執行個體拓撲來執行最佳化node-to-node通訊。

SMDDP 程式庫可以透過近線性擴展效率,在擴展訓練叢集時提供效能提升,來提高訓練速度。

注意

SageMaker AI 分散式訓練程式庫可透過 SageMaker Training 平台中 PyTorch 和 Hugging Face 的 AWS 深度學習容器取得。若要使用這些程式庫,您必須透過適用於 Python 的 SDK (Boto3) 或 AWS Command Line Interface使用 SageMaker Python SDK 或 SageMaker API。整個文件中,指示和範例著重於如何將分散式訓練程式庫與SageMaker Python SDK 搭配使用。

針對 AWS 運算資源和網路基礎設施最佳化的 SMDDP 集體通訊操作

SMDDP 程式庫提供針對 AWS 運算資源AllReduce和網路基礎設施最佳化的 和 AllGather集體操作實作。

SMDDP AllReduce集體操作

SMDDP 程式庫可透過向後傳遞實現AllReduce操作的最佳重疊,大幅改善 GPU 使用率。它透過最佳化 CPUs 和 GPUs 之間的核心操作,達到近線擴展效率和更快的訓練速度。程式庫AllReduce在 GPU 運算漸層時平行執行,而不會佔用額外的 GPU 週期,讓程式庫能夠更快地完成訓練。

  • 利用 CPUs:程式庫使用 CPUs 進行AllReduce漸層,從 GPUs 卸載此任務。

  • 改善 GPU 使用率:叢集的 GPU 專注於運算漸層,改善整個訓練的使用率。

以下是 SMDDP AllReduce操作的高階工作流程。

  1. 程式庫指派 GPU 排名 (工作者)。

  2. 在每次反覆運算時,程式庫會將每個全域批次除以工作者總數 (世界大小),並將小批次 (批次碎片) 指派給工作者。

    • 全域批次的大小為 (number of nodes in a cluster) * (number of GPUs per node) * (per batch shard)

    • 批次碎片 (小批次) 是每個 GPU (工作者) 每次反覆運算的已指派資料集子集。

  3. 程式庫會在每個工作者上啟動訓練指令碼。

  4. 程式庫在每次迭代結束時,會管理來自工作者的模型權重和漸層的副本。

  5. 程式庫會同步處理工作者中的模型權重和漸層,以彙總單一訓練的模型。

下列架構圖顯示程式庫如何為 3 個節點的叢集設定資料平行處理的範例。

SMDDP AllReduce 和資料平行處理架構圖

SMDDP AllGather集體操作

AllGather 是一種集體操作,其中每個工作者都從輸入緩衝區開始,然後將所有其他工作者的輸入緩衝區串連或收集到輸出緩衝區。

注意

SMDDP AllGather集體操作可在適用於 PyTorch v2.0.1 和更新版本的 smdistributed-dataparallel>=2.0.1和 AWS 深度學習容器 (DLC) 中使用。

AllGather 大量用於分散式訓練技術,例如碎片資料平行處理,其中每個個別工作者都擁有一部分的模型或碎片層。工作者會在向前和向後傳遞AllGather之前呼叫 ,以重建碎片圖層。向前和向後傳遞會在所有參數都收集完畢後繼續。在向後通過期間,每個工作者也會呼叫 ReduceScatter 來收集 (減少) 漸層,並將它們分解 (分散) 為漸層碎片,以更新對應的碎片層。如需這些集合操作在碎片資料平行處理中角色的詳細資訊,請參閱 DeepSpeed 文件中的 SMP 程式庫在碎片資料平行處理上的實作ZeRO,以及有關 PyTorch 全碎片資料平行處理的部落格。

由於 AllGather 等集體操作在每次反覆運算時都會呼叫,因此它們是 GPU 通訊開銷的主要貢獻者。這些集體操作的更快速運算會直接轉換為較短的訓練時間,而不會對收斂造成副作用。為了達成此目的,SMDDP 程式庫提供針對 P4d 執行個體AllGather最佳化的功能。

SMDDP AllGather使用下列技術來改善 P4d 執行個體的運算效能。

  1. 它透過具有網格拓撲的 Elastic Fabric Adapter (EFA) 網路,在執行個體 (節點間) 之間傳輸資料。EFA 是 AWS 低延遲和高輸送量的網路解決方案。節點間網路通訊的網格拓撲,更符合 EFA 和 AWS 網路基礎設施的特性。與涉及多個封包跳轉的 NCCL 環形或樹狀拓撲相比,SMDDP 可避免從多個跳轉累積延遲,因為它只需要一個跳轉。SMDDP 實作網路速率控制演算法,在網格拓撲中平衡工作負載與每個通訊對等,並實現更高的全球網路輸送量。

  2. 它採用以 NVIDIA GPUDirect RDMA 技術 (GDRCopy) 為基礎的低延遲 GPU 記憶體複製程式庫,來協調本機 NVLink 和 EFA 網路流量。GDRCopy 是由 NVIDIA 提供的低延遲 GPU 記憶體複製程式庫,可在 CPU 程序與 GPU CUDA 核心之間提供低延遲通訊。使用此技術,SMDDP 程式庫能夠管道節點內和節點間資料移動。

  3. 它減少了 GPU 串流多處理器的使用,以增加執行模型核心的運算能力。P4d 和 P4de 執行個體配備 NVIDIA A100 GPUs,每個 GPU 都有 108 個串流多處理器。雖然 NCCL 最多需要 24 個串流多處理器來執行集體操作,但 SMDDP 會使用少於 9 個串流多處理器。模型運算核心會取得儲存的串流多處理器,以加快運算速度。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。