

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécution d’un entraînement avec EFA
<a name="your-algorithms-training-efa"></a>

 SageMaker L'IA permet l'intégration aux appareils [EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) pour accélérer les applications de calcul haute performance (HPC) et d'apprentissage automatique. Cette intégration vous permet de tirer parti d’un périphérique EFA lors de l’exécution de vos tâches d’entraînement distribué. Vous pouvez ajouter l'intégration EFA à un conteneur Docker existant que vous apportez à SageMaker AI. Les informations suivantes expliquent comment configurer votre propre conteneur pour qu’il utilise un périphérique EFA pour vos tâches d’entraînement distribué. 

## Conditions préalables
<a name="your-algorithms-training-efa-prereq"></a>

 Votre conteneur doit satisfaire aux [spécifications du conteneur d'SageMaker entraînement](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html).  

## Installation d’EFA et des packages requis
<a name="your-algorithms-training-efa-install"></a>

Votre conteneur doit télécharger et installer le [logiciel EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html). Cela permet à votre conteneur de reconnaître le périphérique EFA, et fournit des versions compatibles de Libfabric et Open MPI. 

Tous les outils tels que MPI et NCCL doivent être installés et gérés à l’intérieur du conteneur pour être utilisés dans le cadre de votre tâche d’entraînement compatible EFA. Pour obtenir la liste de toutes les versions d’EFA disponibles, voir [Vérification du programme d’installation EFA à l’aide d’un total de contrôle](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-verify.html). L’exemple suivant montre comment modifier le fichier Dockerfile de votre conteneur compatible EFA pour installer EFA, MPI, OFI, NCCL et NCCL-TEST.

**Note**  
Lorsque vous utilisez PyTorch EFA sur votre conteneur, la version NCCL de votre conteneur doit correspondre à la version NCCL de votre installation. PyTorch Pour vérifier la version PyTorch NCCL, utilisez la commande suivante :  

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

## Considérations lors de la création de votre conteneur
<a name="your-algorithms-training-efa-considerations"></a>

Le périphérique EFA est monté sur le conteneur en tant que `/dev/infiniband/uverbs0` dans la liste des périphériques accessibles au conteneur. Sur les instances P4d, le conteneur a accès à 4 périphériques EFA. Les périphériques EFA peuvent être trouvés dans la liste des périphériques accessibles au conteneur de la façon suivante : 
+  `/dev/infiniband/uverbs0` 
+  `/dev/infiniband/uverbs1` 
+  `/dev/infiniband/uverbs2` 
+  `/dev/infiniband/uverbs3` 

 Pour obtenir des informations sur le nom d’hôte, les noms d’hôte homologues et l’interface réseau (pour MPI) à partir du fichier `resourceconfig.json` fourni à chaque instance de conteneur, consultez [Configuration d’entraînement distribué](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training). Votre conteneur gère le trafic TCP régulier entre homologues via les interfaces réseau Elastic (ENI) par défaut, tout en gérant le trafic OFI (contournement du noyau) via le périphérique EFA. 

## Vérifier que votre périphérique EFA est reconnu
<a name="your-algorithms-training-efa-verify"></a>

  Pour vérifier que le périphérique EFA est reconnu, exécutez la commande suivante à partir de votre conteneur. 

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

Votre sortie doit ressembler à ce qui suit :

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

## Exécution d’une tâche d’entraînement avec EFA
<a name="your-algorithms-training-efa-run"></a>

 Une fois que vous avez créé un conteneur compatible EFA, vous pouvez exécuter une tâche de formation avec EFA à l'aide d'un estimateur SageMaker AI de la même manière que vous le feriez avec n'importe quelle autre image Docker. Pour plus d’informations sur l’enregistrement de votre conteneur et son utilisation pour l’entraînement, consultez [Adaptation de votre propre conteneur d’entraînement](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step5).