Amazon での分散トレーニングの開始 SageMaker - Amazon SageMaker

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

Amazon での分散トレーニングの開始 SageMaker

次のページでは、Amazon での分散トレーニングの開始に必要なステップについて説明します SageMaker。既に分散トレーニングに慣れている場合は、以下のオプションからお好みの戦略やフレームワークに合わせて 1 つを選択して始めてください。分散型トレーニング全般について知りたい場合は、分散トレーニングの概念 を参照してください。

SageMaker 分散トレーニングライブラリは、 SageMaker トレーニング環境に合わせて最適化されており、分散トレーニングジョブを に適応させ SageMaker、トレーニングの速度とスループットを向上させるのに役立ちます。ライブラリは、データ並列とモデル並列の両方のトレーニング戦略を提供します。ソフトウェアとハードウェアテクノロジーを組み合わせてノード間GPUおよびノード間の通信を改善し、 SageMakerトレーニングスクリプトのコード変更を最小限に抑える組み込みオプションを使用して のトレーニング機能を拡張します。 

始める前に

SageMaker トレーニングは、1 つのインスタンスと複数のインスタンスで分散トレーニングをサポートしているため、任意のサイズのトレーニングを大規模に実行できます。 SageMaker Python TensorFlowでは、 PyTorch や などのフレームワーク推定器クラスを使用することをお勧めします。Python はSDK、さまざまな分散トレーニングオプションを備えたトレーニングジョブランチャーです。推定器オブジェクトを作成すると、オブジェクトは分散トレーニングインフラストラクチャをセットアップし、バックエンドCreateTrainingJobAPIで を実行し、現在のセッションが実行中のリージョンを検索し、 AWS 深層学習フレームワーク、分散トレーニングフレームワーク、EFAドライバーなど、多数のライブラリで事前にパッケージ化された構築済みの深層学習コンテナの 1 つを取得します。ファイルFSxシステムをトレーニングインスタンスにマウントする場合は、VPCサブネットとセキュリティグループ ID を推定器に渡す必要があります。で分散トレーニングジョブを実行する前に SageMaker、基本的なインフラストラクチャ設定に関する以下の一般的なガイダンスをお読みください。

アベイラビリティーゾーンとネットワークバックプレーン

複数のインスタンス (ノードとも呼ばれます) を使用する場合は、インスタンスを接続するネットワーク、トレーニングデータの読み取り方法、およびインスタンス間での情報共有方法を理解することが重要です。例えば、分散データ並列トレーニングジョブを実行する場合、AllReduceオペレーションを実行するためのコンピューティングクラスターのノード間の通信や、Amazon Simple Storage Service または Amazon FSx for Lustre のノードとデータストレージ間のデータ転送など、多くの要因がコンピューティングリソースの最適な使用とトレーニング速度の向上を実現するために重要な役割を果たします。通信オーバーヘッドを減らすには、インスタンス、VPCサブネット、データストレージを同じ および AWS リージョン アベイラビリティーゾーンに設定してください。

GPU より高速なネットワークと高スループットストレージを備えたインスタンス

技術的には、どのインスタンスでも分散トレーニングに使用できます。大規模な言語モデル (LLMs) や拡散モデルなど、ノード間の高速整流を必要とする大規模なモデルをトレーニングするためにマルチノード分散トレーニングジョブを実行する必要がある場合は、 EFAでサポートされている 対応GPUインスタンス SageMakerをお勧めします。特に、 で最もパフォーマンスの高い分散トレーニングジョブを実現するには SageMaker、NVIDIAA100 を搭載した P4d インスタンスと P4de インスタンスGPUsをお勧めします。これらには、高スループット、低レイテンシーのローカルインスタンスストレージ、およびより高速なノード内ネットワークも搭載されています。データストレージには、トレーニングデータセットとモデルチェックポイントを保存するための高いスループットを提供する Amazon FSx for Lustre をお勧めします。

SageMaker 分散データ並列処理 (SMDDP) ライブラリを使用する

このSMDDPライブラリは、 AWS ネットワークインフラストラクチャAllReduceと Amazon SageMaker ML インスタンストポロジに最適化された の実装とAllGather集合的な通信オペレーションにより、ノード間の通信を改善します。SMDDP ライブラリは、分散データ並列 ()、フルシャードデータ並列処理 ()、、Megatron- PyTorchなどの ベースの分散トレーニングパッケージのバックエンドとして使用できます。 PyTorch DDP PyTorch FSDP DeepSpeed DeepSpeed次のコード例は、2 つのml.p4d.24xlargeインスタンスで分散トレーニングジョブを起動するためのPyTorch推定器を設定する方法を示しています。

from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )

トレーニングスクリプトを準備し、 で分散データ並列トレーニングジョブを起動する方法については SageMaker、「」を参照してください SageMaker 分散データ並列処理ライブラリによる分散トレーニングの実行

SageMaker モデル並列処理ライブラリを使用する (SMP)

SageMaker はSMPライブラリを提供し、シャードデータ並列処理、パイプライン処理、テンソル並列処理、オプティマイザステートシャーディングなど、さまざまな分散トレーニング手法をサポートします。SMP ライブラリが提供する機能の詳細については、「」を参照してくださいModel SageMaker Parallelism Library の主な機能

SageMakerのモデル並列処理ライブラリを使用するには、 SageMaker フレームワーク推定器の distributionパラメータを設定します。サポートされているフレームワーク推定器は PyTorchと ですTensorFlow。次のコード例は、2 つの ml.p4d.24xlarge インスタンスでモデル並列処理ライブラリを使用して分散トレーニング用のフレームワーク推定器を構築する方法を示しています。

from sagemaker.framework import Framework distribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator = Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )

トレーニングスクリプトを適応させ、estimatorクラスでディストリビューションパラメータを設定し、分散トレーニングジョブを起動する方法については、SageMaker「 のモデル並列処理ライブラリ」を参照してください (SageMaker Python SDKドキュメント「分散トレーニングAPIs」も参照してください)。

オープンソースの分散型トレーニングフレームワークを使用する

SageMaker は、バックエンドtorchrunmpirunおよび を運用するための以下のオプションもサポートしています。

  • mpirun バックエンド SageMaker で PyTorch DistributedDataParallel (DDP) を使用するには、 distribution={"pytorchddp": {"enabled": True}}を推定器に追加します PyTorch。詳細については、SageMaker Python SDKドキュメントPyTorch 「分散トレーニングSageMaker PyTorch 推定器の distribution引数」も参照してください。

    注記

    このオプションは PyTorch 1.12.0 以降で使用できます。

    from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend )
  • SageMaker は、P3 や P4 などの GPUベースの Amazon EC2インスタンス、および AWS Trainium デバイスを搭載した Trn1 での分散トレーニング用のPyTorch torchrunランチャーをサポートします。

    PyTorch DistributedDataParallel DDP)torchrunバックエンド SageMaker で使用するには、 distribution={"torch_distributed": {"enabled": True}}を PyTorch 推定器に追加します。

    注記

    このオプションは PyTorch 1.13.0 以降で使用できます。

    次のコードスニペットは、torch_distributedディストリビューションオプションを使用して 2 つのml.p4d.24xlargeインスタンスで分散トレーニングを実行するための SageMaker PyTorch 推定器を構築する例を示しています。

    from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )

    詳細については、SageMaker Python SDKドキュメント「分散 PyTorch トレーニングSageMaker PyTorch 推定器のdistribution数」を参照してください。

    Trn1 での分散トレーニングに関する注意事項

    Trn1 インスタンスは最大 16 台の Trainium デバイスで構成され、各 Trainium デバイスは 2 つの で構成されますNeuronCores。 AWS Trainium デバイスの仕様については、AWS 「Neuron ドキュメント」の「Trainium アーキテクチャ」を参照してください。

    Trainium 搭載インスタンスでトレーニングするには、 SageMaker PyTorch 推定器クラスのinstance_type引数に対して Trn1 インスタンスコード を文字列ml.trn1.*で指定するだけで済みます。使用可能な Trn1 インスタンスタイプを見つけるには、「AWS Neuron ドキュメント」の「AWS Trn1 Architecture」を参照してください。

    注記

    SageMaker Amazon EC2 Trn1 インスタンスのトレーニングは現在、v1. PyTorch11.0 以降の AWS Deep Learning Containers for PyTorch Neuron のフレームワークでのみ利用できます。サポートされている PyTorch Neuron のバージョンの完全なリストについては、「 Deep Learning Containers リポジトリ」の「Neuron Containers」を参照してください。 AWS GitHub

    SageMaker Python を使用して Trn1 インスタンスでトレーニングジョブを起動するとSDK、 SageMakerは AWS Deep Learning Containers が提供する Neuron Containers から適切なコンテナを自動的に取得して実行します。Neuron コンテナには、トレーニング環境設定と依存関係があらかじめパッケージ化されているため、トレーニングジョブを SageMaker トレーニングプラットフォームと Amazon EC2 Trn1 インスタンスに簡単に適合させることができます。

    注記

    を使用して Trn1 インスタンスで PyTorch トレーニングジョブを実行するには SageMaker、xlaトレーニングスクリプトを変更してバックエンドでプロセスグループを初期化し、PyTorch/XLA を使用する必要があります。XLA 導入プロセスをサポートするために、 AWS Neuron SDKは を使用して PyTorch オペレーションを Trainium 命令XLAに変換する PyTorch Neuron を提供します。トレーニングスクリプトを変更する方法については、 PyTorch 「Neuron ドキュメント」の「Neuron を使用したトレーニングのデベロッパーガイド (torch-neuronx」を参照してください。 AWS

    詳細については、SageMaker Python SDKドキュメントTrn1 インスタンスでの PyTorch Neuron による分散トレーニング」とSageMaker PyTorch 「推定器のdistribution数」を参照してください。

  • MPI で を使用するには SageMaker、 distribution={"mpi": {"enabled": True}}を推定器に追加します。MPI ディストリビューションオプションはMXNet、、 PyTorch、および のフレームワークで使用できます TensorFlow。

  • でパラメータサーバーを使用するには SageMaker、 distribution={"parameter_server": {"enabled": True}}を推定器に追加します。パラメータサーバーオプションはMXNet、、 PyTorch、および のフレームワークで使用できます TensorFlow。

    ヒント

    フレームワークごとの MPIおよび パラメータサーバーオプションの使用の詳細については、SageMaker Python SDKドキュメント への次のリンクを使用します。