SageMaker 分散データ並列処理ライブラリの概要 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SageMaker 分散データ並列処理ライブラリの概要

SageMaker 分散データ並列処理 (SMDDP) ライブラリは、分散データ並列トレーニングのコンピューティングパフォーマンスを向上させる集合通信ライブラリです。SMDDP ライブラリは、以下を提供することで、主要な集合通信オペレーションの通信オーバーヘッドに対処します。

  1. このライブラリは、 用にAllReduce最適化されています AWS。 AllReduceは、分散データトレーニング中の各トレーニング反復の最後に GPUs 間で勾配を同期させるために使用される主要なオペレーションです。

  2. このライブラリは、 向けにAllGather最適化されています AWS。 AllGatherは、シャーディングデータ並列トレーニングで使用されるもう 1 つのキーオペレーションです。これは、 SageMaker モデル並列処理 (SMP) ライブラリ、 DeepSpeed Zero Redundancy Optimizer (ZeRO)、Fully Sharded Data Parallelism (FSDP) などの一般的なライブラリによって提供されるメモリ効率の高いデータ並列処理手法です。 PyTorch

  3. このライブラリは、 AWS ネットワークインフラストラクチャと Amazon EC2 インスタンストポロジーを最大限に活用することで、最適化された node-to-node 通信を実行します。

SMDDP ライブラリは、トレーニングクラスターをほぼ線形にスケーリングするにつれてパフォーマンスを向上させることで、トレーニング速度を向上させることができます。

注記

SageMaker 分散トレーニングライブラリは、 SageMaker トレーニングプラットフォーム内の PyTorch と Hugging Face 用の AWS 深層学習コンテナを通じて利用できます。ライブラリを使用するには、SDK for SageMaker Python (Boto3) または を通じて Python SDK または SageMaker APIs を使用する必要があります AWS Command Line Interface。ドキュメント全体で、手順と例は、 SageMaker Python SDK で分散トレーニングライブラリを使用する方法に焦点を当てています。

AWS コンピューティングリソースとネットワークインフラストラクチャ用に最適化された SMDDP 集合通信オペレーション

SMDDP ライブラリは、 AWS コンピューティングリソースAllReduceとネットワークインフラストラクチャ用に最適化された および AllGather集合オペレーションの実装を提供します。

SMDDP AllReduce集合オペレーション

SMDDP ライブラリは、AllReduceオペレーションとバックワードパスの最適な重複を実現し、GPU 使用率を大幅に向上させます。CPUs と GPUs 間のカーネルオペレーションを最適化することで、ほぼ線形のスケーリング効率とトレーニング速度の向上を実現します。GPU が勾配を計算している間AllReduce、ライブラリは追加の GPU サイクルを奪うことなく並列で動作するため、ライブラリはトレーニングを高速化できます。

  • CPUs の活用: ライブラリは CPUs を使用してAllReduce勾配を設定し、このタスクを GPUs。

  • GPU 使用率の向上: クラスターの 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. ライブラリは、ワーカー間でモデルの重みと勾配を同期させて、1 つのトレーニング済みモデルに集約します。

次のアーキテクチャ図は、ライブラリが 3 ノードからなるクラスターに対してどのようにデータ並列処理を設定するかの例を示しています。

SMDDP AllReduce とデータ並列処理のアーキテクチャ図

SMDDP AllGather集合演算

AllGather は、各ワーカーが入力バッファから開始し、他のすべてのワーカーの入力バッファを出力バッファに連結または収集する集合演算です。

注記

SMDDP AllGather集合オペレーションは、 smdistributed-dataparallel>=2.0.1 および PyTorch v2.0.1 以降の AWS Deep Learning Containers (DLC) で使用できます。

AllGather は、個々のワーカーがモデルの一部またはシャーディングレイヤーを保持するシャーディングデータ並列処理などの分散トレーニング手法でよく使用されます。ワーカーは、フォワードパスとバックワードパスAllGatherの前に を呼び出して、シャーディングされたレイヤーを再構築します。フォワードパスとバックワードパスは、パラメータがすべて収集された後も続行されます。バックワードパス中に、各ワーカーは ReduceScatterを呼び出して勾配を収集 (削減) し、勾配シャードに分割 (分散) して、対応するシャードされたレイヤーを更新します。シャーディングデータ並列処理におけるこれらの集合演算の役割の詳細については、 ドキュメントのシャーディングデータ並列処理 、ZeRO の SMP ライブラリの実装と、PyTorch 完全シャーディングデータ並列処理 に関するブログを参照してください。 ZeRO DeepSpeed

のような集合演算 AllGather は反復ごとに呼び出されるため、GPU 通信オーバーヘッドの主な原因となります。これらの集合演算の計算を高速化すると、収束に悪影響を及ぼさず、トレーニング時間が短くなります。これを実現するために、SMDDP ライブラリは P4d インスタンス用にAllGather最適化されています。

SMDDP AllGatherは、次の手法を使用して P4d インスタンスの計算パフォーマンスを向上させます。

  1. メッシュトポロジを備えた Elastic Fabric Adapter (EFA) ネットワークを介して、インスタンス (ノード間)間でデータを転送します。EFA は、 AWS 低レイテンシーで高スループットのネットワークソリューションです。ノード間ネットワーク通信のメッシュトポロジは、EFA と AWS ネットワークインフラストラクチャの特性に合わせて調整されます。複数のパケットホップを含む NCCL リングまたはツリートポロジと比較すると、SMDDP は 1 つのホップのみを必要とするため、複数のホップからのレイテンシーが蓄積されることを回避します。SMDDP は、ワークロードとメッシュトポロジ内の各通信ピアのバランスをとるネットワークレート制御アルゴリズムを実装し、より高いグローバルネットワークスループットを実現します。

  2. NVIDIA GPUDirect RDMA テクノロジー (GDRCopy ) に基づく低レイテンシー GPU メモリコピーライブラリを採用して、ローカル NVLink と EFA ネットワークトラフィックを調整します。NVIDIA が提供する低レイテンシー GPU メモリコピーライブラリである GDRCopy は、CPU プロセスと GPU CUDA カーネル間の低レイテンシー通信を提供します。このテクノロジーを使用すると、SMDDP ライブラリはノード内およびノード間のデータ移動をパイプライン化できます。

  3. これにより、GPU ストリーミングマルチプロセッサの使用量が減少し、モデルカーネルを実行するための計算能力が向上します。P4d インスタンスと P4de インスタンスには NVIDIA A100 GPUsが付属しており、それぞれに 108 個のストリーミングマルチプロセッサがあります。NCCL は集合演算を実行するために最大 24 個のストリーミングマルチプロセッサを使用しますが、SMDDP は 9 個未満のストリーミングマルチプロセッサを使用します。モデルコンピューティングカーネルは、保存されたストリーミングマルチプロセッサを取得して、計算を高速化します。