

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

# EFA でトレーニングを実行する
<a name="your-algorithms-training-efa"></a>

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

## 前提条件
<a name="your-algorithms-training-efa-prereq"></a>

 コンテナは [SageMaker トレーニングコンテナ仕様](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html)を満たしている必要があります。  

## EFA および必要なパッケージをインストールする
<a name="your-algorithms-training-efa-install"></a>

コンテナは、[EFA ソフトウェア](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html)をダウンロードしてインストールする必要があります。これにより、コンテナが EFA デバイスを認識し、Libfabric と Open MPI の互換性のあるバージョンが提供されます。

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

**注記**  
コンテナで PyTorch を EFA とともに使用する場合、コンテナの 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
```

## コンテナを作成する場合の考慮事項
<a name="your-algorithms-training-efa-considerations"></a>

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

 各コンテナインスタンスに提供される `resourceconfig.json` ファイルからホスト名、ピアホスト名、およびネットワークインターフェイス (MPI 用) に関する情報を取得するには、「[分散型トレーニング設定](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training)」を参照してください。コンテナは、デフォルトの Elastic Network Interface (ENI) を介してピア間の通常の TCP トラフィックを処理し、EFA デバイスを経由する OFI (カーネルバイパス) トラフィックを処理します。

## EFA デバイスが認識されることを確認する
<a name="your-algorithms-training-efa-verify"></a>

  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 でトレーニングジョブを実行する
<a name="your-algorithms-training-efa-run"></a>

 EFA 対応コンテナを作成したら、他の Docker イメージの場合と同じ方法で SageMaker AI 推定器を使用して EFA でトレーニングジョブを実行できます。コンテナを登録し、トレーニングに使用する方法の詳細については、「[独自のトレーニングコンテナを適応させる](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step5)」を参照してください。