翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 2: SageMaker Python SDK を使用してトレーニングJob を起動する
SageMaker Python SDK は、 TensorFlow PyTorchやなどの ML フレームワークによるモデルのマネージドトレーニングをサポートします。これらのフレームワークのいずれかを使用してトレーニングジョブを開始するには、 SageMaker TensorFlow SageMaker PyTorch 変更したトレーニングスクリプトとモデル並列処理設定を使用するエスティメーター
トピック
とエスティメータを使用する SageMaker TensorFlow PyTorch
TensorFlow および PyTorch estimator distribution
クラスにはパラメータが含まれており、これを使用して分散型トレーニングフレームワークを使用するための設定パラメータを指定できます。 SageMaker モデルparallel ライブラリは、ハイブリッドデータとモデル並列処理に内部的に MPI を使用するため、ライブラリでは MPI オプションを使用する必要があります。
TensorFlow PyTorch 以下のまたは推定器のテンプレートは、MPI SageMaker でモデルparallel distribution
ライブラリを使用するためのパラメーターを構成する方法を示しています。
このライブラリを有効にするには、Estimator "smdistributed"
"mpi"
distribution
コンストラクターの引数を使用してコンフィギュレーションディクショナリをおよびキーに渡す必要があります。 SageMaker
モデル並列処理の設定パラメーター SageMaker
-
"smdistributed"
キーについては、"modelparallel"
キーと次の内部ディクショナリを含むディクショナリを渡します。注記
1 つのトレーニングジョブでの
"modelparallel"
と"dataparallel"
の使用はサポートされていません。-
"enabled"
– 必須。モデル並列処理を有効にするには、"enabled": True
を設定します。 -
"parameters"
– 必須。モデル並列処理の一連のパラメーターを指定します。 SageMaker-
一般的なパラメータの完全なリストについては、SageMaker Python SDK
smdistributed
ドキュメントの「パラメータ」を参照してください。 については TensorFlow、「TensorFlow固有のパラメーター
」を参照してください。 については PyTorch、「PyTorch固有パラメータ
」を参照してください。 -
"pipeline_parallel_degree"
(またはsmdistributed-modelparallel<v1.6.0
の"partitions"
) — 必須。smdistributed
のパラメータの中で、このパラメータは分割するモデルパーティションの数を指定するために必要です。 重要
パラメータ名に重大な変更があります。
smdistributed-modelparallel
v1.6.0 以降、"partitions"
は"pipeline_parallel_degree"
パラメータに置き換えられます。詳細については、SageMaker Python SDK ドキュメントの「 SageMaker モデル並列構成の共通パラメーター」と「SageMaker 分散モデル並列リリースノート 」を参照してください。
-
-
-
"mpi"
キーには、以下を含むディクショナリを渡します。-
"enabled"
– 必須。MPI で分散型トレーニングジョブを開始するようにTrue
を設定します。 -
"processes_per_host"
– 必須。各ホストで MPI が起動するプロセスの数を指定します。では SageMaker、ホストは単一の Amazon EC2 ML インスタンスです。 SageMaker Python SDK は、モデルとデータの並列処理全体にわたってプロセスと GPU one-to-one 間のマッピングを維持します。つまり、各プロセスを 1 つの別々の GPU SageMaker にスケジュールし、GPU に複数のプロセスが含まれることはありません。を使用している場合は PyTorch、各プロセスを専用のデバイスに限定する必要があります。torch.cuda.set_device(smp.local_rank())
詳細については、「による自動分割 PyTorch」を参照してください。重要
process_per_host
は、インスタンスあたりの GPU の数を超えてはならず、通常はインスタンスあたりの GPU の数と等しくなります。 -
"custom_mpi_options"
(オプション) - このキーを使って、必要なカスタム MPI オプションがあればそれを渡します。MPI カスタムオプションを何もキーに渡さない場合、MPI オプションはデフォルトで次のフラグに設定されます。--mca btl_vader_single_copy_mechanism none
注記
このデフォルトフラグをキーに明示的に指定する必要はありません。明示的に指定すると、分散モデル並列トレーニングジョブが次のエラーで失敗する可能性があります。
The following MCA parameter has been listed multiple times on the command line: MCA param: btl_vader_single_copy_mechanism MCA parameters can only be listed once on a command line to ensure there is no ambiguity as to its value. Please correct the situation and try again.
ヒント
ml.p4d.24xlarge
やml.p3dn.24xlarge
などの EFA 対応のインスタンスタイプを使ってトレーニングジョブを起動する場合、次のフラグを使用するとベストパフォーマンスが得られます。-x FI_EFA_USE_DEVICE_RDMA=1 -x FI_PROVIDER=efa -x RDMAV_FORK_SAFE=1
-
SageMaker 推定器とモデルのparallel 構成トレーニングスクリプトを使用してトレーニングジョブを起動するには、関数を実行します。estimator.fit()
Python SDK のモデル並列処理機能の使用方法の詳細については、以下のリソースを参照してください。 SageMaker
-
新規ユーザーの場合は、 SageMaker ノートブックインスタンスを使用することをお勧めします。 SageMaker ノートブックインスタンスを使用してトレーニングジョブを起動する方法の例については、を参照してくださいAmazon SageMaker モデル並列処理ライブラリ v2 の例。
-
AWS CLIを使用して、お使いのマシンから分散型トレーニングジョブを送信することもできます。 AWS CLI マシン上で設定するには、「AWS 認証情報の設定」と「開発用リージョンの設定」を参照してください。
SageMakerの分散モデル並列ライブラリを含むビルド済みの Docker コンテナを拡張します。
ビルド済みのコンテナーを拡張してそのモデル並列処理ライブラリを使用するには SageMaker、 AWS またはに使用できるDeep Learning Containers (DLC) イメージのいずれかを使用する必要があります。 PyTorch TensorFlow SageMaker モデル並列処理ライブラリは CUDA () の DLC イメージ TensorFlow (2.3.0 以降) および PyTorch (1.6.0 以降) に含まれています。cuxyz
DLC イメージの完全なリストについては、 GitHub ディープラーニングコンテナーリポジトリの「利用可能なDeep Learning Containers ナーイメージ
ヒント
TensorFlowモデル並列処理ライブラリの最新バージョンを含むイメージを使用するか PyTorch 、 up-to-date SageMaker ほとんどのバージョンのモデル並列処理ライブラリにアクセスすることをお勧めします。
例えば、Dockerfile は次と同じような FROM
ステートメントを含むことになります。
# Use the SageMaker DLC image URI for TensorFlow or PyTorch FROM
aws-dlc-account-id
.dkr.ecr.aws-region
.amazonaws.com/framework
-training:{framework-version-tag}
# Add your dependencies here RUN...
ENV PATH="/opt/ml/code:${PATH}
" # this environment variable is used by the SageMaker container to determine our user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code
さらに、OR PyTorch TensorFlow Estimator を定義するときは、トレーニングスクリプト用にそれを指定する必要があります。entry_point
これは、Dockerfile の ENV SAGEMAKER_SUBMIT_DIRECTORY
で識別されるパスと同じにしてください。
ヒント
この Docker コンテナを Amazon Elastic Container Registry (Amazon ECR) にプッシュし、イメージ URI (image_uri
) SageMaker を使用してトレーニング用の見積もりを定義する必要があります。詳細については、「構築済みコンテナを拡張する」を参照してください。
Docker コンテナのホスティングとコンテナのイメージ URI の取得が完了したら、次のように見積もりオブジェクトを作成します。 SageMaker PyTorch
この例では、smp_options
と mpi_options
が既に定義されていることを前提としています。
smd_mp_estimator = Estimator( entry_point="
your_training_script.py
", role=sagemaker.get_execution_role(), instance_type='ml.p3.16xlarge
', sagemaker_session=sagemaker_session, image_uri='your_aws_account_id
.dkr.ecr.region
.amazonaws.com/name
:tag
' instance_count=1
,distribution={ "smdistributed": smp_options, "mpi": mpi_options },
base_job_name="SMD-MP-demo
", ) smd_mp_estimator.fit('s3://my_bucket/my_training_data/')
分散モデル並列ライブラリを使用して独自の Docker コンテナを作成します。 SageMaker
トレーニング用に独自の Docker コンテナを構築し、 SageMaker モデルparallel ライブラリを使用するには、 SageMaker分散parallel ライブラリの正しい依存関係とバイナリファイルを Dockerfile に含める必要があります。このセクションでは、 SageMaker トレーニング環境とモデルparallel ライブラリを独自の Docker コンテナに適切に準備するために含める必要のある最小限のコードブロックセットについて説明します。
注記
SageMaker モデルparallel ライブラリをバイナリとするこのカスタム Docker オプションは、でのみ使用できます PyTorch。
SageMaker トレーニングツールキットとモデルparallel ライブラリを含む Dockerfile を作成するには
-
NVIDIA CUDA ベースイメージ
の 1 つから始めます。 FROM
<cuda-cudnn-base-image>
ヒント
AWS 公式のディープラーニングコンテナ (DLC) イメージは NVIDIA
CUDA ベースイメージから構築されます。AWS Deep Learning Container の公式 Dockerfiles を調べて、インストールする必要のあるライブラリのバージョンと設定方法を確認することをお勧めします。 PyTorch公式の Dockerfile は、およびディープラーニングコンテナサービスチームによって完成され、ベンチマークテストされ、管理されています。 SageMaker 表示されたリンクで、 PyTorch使用するバージョンを選択し、CUDA ( cuxyz
) フォルダーを選択し、末尾がまたはの Dockerfile を選択します。.gpu
.sagemaker.gpu
-
分散型トレーニング環境を設定するには、Elastic Fabric Adapter (EFA)、NVIDIA Collective Communications Library (NCCL)
、Open MPI などの通信およびネットワークデバイス用のソフトウェアをインストールする必要があります。選択する CUDA PyTorch のバージョンによっては、互換性のあるバージョンのライブラリをインストールする必要があります。 重要
SageMaker モデルparallel SageMaker ライブラリでは以降の手順でデータparallel ライブラリが必要になるため、 SageMaker の指示に従って分散トレーニング用のトレーニング環境を適切に設定することを強くお勧めします。 SageMaker 分散データparallel ライブラリを使用して独自の Docker コンテナを作成
NCCL と Open MPI を使用した EFA の設定の詳細については、「EFA と MPI の開始方法」と「EFA とNCCL の開始方法」を参照してください。
-
次の引数を追加して、 SageMaker の分散型トレーニングパッケージの URL を指定します PyTorch。 SageMaker モデルparallel ライブラリでは、 SageMaker データparallel ライブラリがノード間のリモートダイレクトメモリアクセス (RDMA) を使用する必要があります。
ARG SMD_MODEL_PARALLEL_URL=https://sagemaker-distributed-model-parallel.s3.us-west-2.amazonaws.com/pytorch-1.10.0/build-artifacts/2022-02-21-19-26/smdistributed_modelparallel-1.7.0-cp38-cp38-linux_x86_64.whl ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.10.2/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
-
SageMaker モデルparallel ライブラリに必要な依存関係をインストールします。
-
METIS
ライブラリをインストールします。 ARG METIS=metis-
5.1.0
RUN rm /etc/apt/sources.list.d/* \ && wget -nv http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/${METIS}.tar.gz \ && gunzip -f ${METIS}.tar.gz \ && tar -xvf ${METIS}.tar \ && cd ${METIS} \ && apt-get update \ && make config shared=1 \ && make install \ && cd .. \ && rm -rf ${METIS}.tar* \ && rm -rf ${METIS} \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean -
RAPIDS メモリマネージャーライブラリ
をインストールします。これには CMake 3.14 以降が必要です。 ARG RMM_VERSION=
0.15.0
RUN wget -nv https://github.com/rapidsai/rmm/archive/v${RMM_VERSION}.tar.gz \ && tar -xvf v${RMM_VERSION}.tar.gz \ && cd rmm-${RMM_VERSION} \ && INSTALL_PREFIX=/usr/local ./build.sh librmm \ && cd .. \ && rm -rf v${RMM_VERSION}.tar* \ && rm -rf rmm-${RMM_VERSION}
-
-
SageMaker モデルparallel ライブラリをインストールします。
RUN pip install --no-cache-dir -U ${SMD_MODEL_PARALLEL_URL}
-
SageMaker データparallel ライブラリをインストールします。
RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
-
sagemaker-training-toolkit
をインストールします。ツールキットには、 SageMaker トレーニングプラットフォームと SageMaker Python SDK と互換性のあるコンテナを作成するために必要な共通機能が含まれています。 RUN pip install sagemaker-training
-
Dockerfile の作成が完了したら、「Adapting Your Own Training Container」を参照して、Docker コンテナを構築し、Amazon ECR でホストする方法について確認してください。
ヒント
トレーニング用のカスタム Dockerfile の作成に関する一般的な情報については SageMaker、「独自のトレーニングアルゴリズムの使用」を参照してください。