EFA でトレーニングを実行する - Amazon SageMaker

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

EFA でトレーニングを実行する

SageMaker は EFA デバイスとの統合により、ハイパフォーマンスコンピューティング (HPC) および機械学習アプリケーションを高速化します。この統合により、分散トレーニングジョブを実行する場合に EFA デバイスを活用できます。に持ち込む既存の Docker コンテナに EFA 統合を追加できます SageMaker。次の情報では、分散トレーニングジョブに EFA デバイスを使用するように独自のコンテナを設定する方法について説明します。

前提条件

コンテナは、SageMaker トレーニングコンテナの仕様 を満たす必要があります。 

EFA および必要なパッケージをインストールする

コンテナは、EFA ソフトウェアをダウンロードしてインストールする必要があります。これにより、コンテナが EFA デバイスを認識し、Libfabric と Open MPI の互換性のあるバージョンが提供されます。

MPI や NCCL などのツールは、EFA 対応のトレーニングジョブの一部として使用するには、コンテナ内にインストールおよび管理する必要があります。使用可能なすべての EFA バージョンのリストについては、「チェックサム を使用して EFA インストーラーを検証する」を参照してください。次の例は、EFA 対応コンテナの Dockerfile を変更して EFA、MPI、OFI、NCCL、NCCL-TEST をインストールする方法を示しています。

注記

コンテナの EFA PyTorch で を使用する場合、コンテナの NCCL バージョンは PyTorch インストールの NCCL バージョンと一致する必要があります。 PyTorch NCCL のバージョンを確認するには、次のコマンドを使用します。

torch.cuda.nccl.version()
ARG OPEN_MPI_PATH=/opt/amazon/openmpi/ ENV NCCL_VERSION=2.7.8 ENV EFA_VERSION=1.30.0 ENV BRANCH_OFI=1.1.1 ################################################# ## EFA and MPI SETUP RUN cd $HOME \ && curl -O https://s3-us-west-2.amazonaws.com/aws-efa-installer/aws-efa-installer-${EFA_VERSION}.tar.gz \ && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \ && cd aws-efa-installer \ && ./efa_installer.sh -y --skip-kmod -g \ ENV PATH="$OPEN_MPI_PATH/bin:$PATH" ENV LD_LIBRARY_PATH="$OPEN_MPI_PATH/lib/:$LD_LIBRARY_PATH" ################################################# ## NCCL, OFI, NCCL-TEST SETUP RUN cd $HOME \ && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \ && cd nccl \ && make -j64 src.build BUILDDIR=/usr/local RUN apt-get update && apt-get install -y autoconf RUN cd $HOME \ && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \ && cd aws-ofi-nccl \ && ./autogen.sh \ && ./configure --with-libfabric=/opt/amazon/efa \ --with-mpi=/opt/amazon/openmpi \ --with-cuda=/usr/local/cuda \ --with-nccl=/usr/local --prefix=/usr/local \ && make && make install RUN cd $HOME \ && git clone https://github.com/NVIDIA/nccl-tests \ && cd nccl-tests \ && make MPI=1 MPI_HOME=/opt/amazon/openmpi CUDA_HOME=/usr/local/cuda NCCL_HOME=/usr/local

コンテナを作成する場合の考慮事項

EFA デバイスは、コンテナからアクセス可能なデバイスのリストで /dev/infiniband/uverbs0 としてコンテナにマウントされます。P4d インスタンスでは、コンテナは 4 つの EFA デバイスにアクセスできます。EFA デバイスは、次のようにコンテナからアクセス可能なデバイスのリストに表示されます。

  • /dev/infiniband/uverbs0

  • /dev/infiniband/uverbs1

  • /dev/infiniband/uverbs2

  • /dev/infiniband/uverbs3

各コンテナインスタンスに提供される resourceconfig.json ファイルからホスト名、ピアホスト名、およびネットワークインターフェイス (MPI 用) に関する情報を取得するには、「分散型トレーニング設定」を参照してください。コンテナは、デフォルトの Elastic Network Interface (ENI) を介してピア間の通常の TCP トラフィックを処理し、EFA デバイスを経由する OFI (カーネルバイパス) トラフィックを処理します。

EFA デバイスが認識されることを確認する

 EFA デバイスが認識されていることを確認するには、コンテナ内から次のコマンドを実行します。

/opt/amazon/efa/bin/fi_info -p efa

出力は以下のようになります。

provider: efa fabric: EFA-fe80::e5:56ff:fe34:56a8 domain: efa_0-rdm version: 2.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::e5:56ff:fe34:56a8 domain: efa_0-dgrm version: 2.0 type: FI_EP_DGRAM protocol: FI_PROTO_EFA provider: efa;ofi_rxd fabric: EFA-fe80::e5:56ff:fe34:56a8 domain: efa_0-dgrm version: 1.0 type: FI_EP_RDM protocol: FI_PROTO_RXD

EFA でトレーニングジョブを実行する

EFA 対応コンテナを作成したら、他の Docker イメージと同じ方法で SageMaker 推定器を使用して EFA でトレーニングジョブを実行できます。コンテナを登録し、トレーニングに使用する方法の詳細については、「独自のトレーニングコンテナを適応させる」を参照してください。