

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Executar treinamento com EFA
<a name="your-algorithms-training-efa"></a>

 SageMaker A IA fornece integração com dispositivos [EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) para acelerar aplicativos de computação de alto desempenho (HPC) e aprendizado de máquina. Essa integração permite que você aproveite um dispositivo EFA ao executar seus trabalhos de treinamento distribuídos. Você pode adicionar a integração do EFA a um contêiner Docker existente que você traz para a SageMaker IA. As informações a seguir descrevem como configurar seu próprio contêiner para usar um dispositivo EFA em seus trabalhos de treinamento distribuídos. 

## Pré-requisitos
<a name="your-algorithms-training-efa-prereq"></a>

 Seu contêiner deve atender às [especificações do contêiner de SageMaker treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html).  

## Instale o EFA e os pacotes obrigatórios
<a name="your-algorithms-training-efa-install"></a>

Seu contêiner deve baixar e instalar o [software EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html). Isso permite que seu contêiner reconheça o dispositivo EFA e forneça versões compatíveis do Libfabric e do Open MPI. 

Todas as ferramentas, como MPI e NCCL, devem ser instaladas e gerenciadas dentro do contêiner para serem usadas como parte de seu EFA-enabled trabalho de treinamento. Para obter uma lista de todas as versões disponíveis do EFA, consulte [Verificar o instalador do EFA usando uma soma de verificação](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-verify.html). O exemplo a seguir mostra como modificar o Dockerfile do seu EFA-enabled contêiner para instalar EFA, MPI, OFI, NCCL e. NCCL-TEST

**nota**  
Ao usar PyTorch com o EFA em seu contêiner, a versão NCCL do seu contêiner deve corresponder à versão NCCL da sua instalação. PyTorch Para verificar a versão da PyTorch NCCL, use o seguinte comando:  

```
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
```

## Considerações ao criar seu contêiner
<a name="your-algorithms-training-efa-considerations"></a>

O dispositivo EFA é montado no contêiner conforme a lista `/dev/infiniband/uverbs0` de dispositivos acessíveis ao contêiner. Nas instâncias P4d, o contêiner tem acesso a 4 dispositivos EFA. Os dispositivos EFA podem ser encontrados na lista de dispositivos acessíveis ao contêiner como: 
+  `/dev/infiniband/uverbs0` 
+  `/dev/infiniband/uverbs1` 
+  `/dev/infiniband/uverbs2` 
+  `/dev/infiniband/uverbs3` 

 Para obter informações sobre nome de host, nomes de host de mesmo nível e interface de rede (para MPI) do `resourceconfig.json` arquivo fornecido para cada instância de contêiner, consulte [Configuração de treinamento distribuído](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training). Seu contêiner processa tráfego TCP regular entre pares por meio das interfaces de rede elástica (ENI) padrão, enquanto processa o tráfego OFI (kernel bypass) por meio do dispositivo EFA. 

## Verifique se seu dispositivo EFA é reconhecido
<a name="your-algorithms-training-efa-verify"></a>

  Para verificar se o dispositivo EFA é reconhecido, execute o seguinte comando no seu contêiner: 

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

O resultado deve ser semelhante ao seguinte:

```
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
```

## Executando um trabalho de treinamento na EFA
<a name="your-algorithms-training-efa-run"></a>

 Depois de criar um EFA-enabled contêiner, você pode executar um trabalho de treinamento com o EFA usando um Estimador de SageMaker IA da mesma forma que faria com qualquer outra imagem do Docker. Para obter mais informações sobre como registrar seu contêiner e usá-lo para treinamento, consulte [Adaptando seu próprio contêiner de treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step5).