Ejecutar entrenamiento con EFA - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecutar entrenamiento con EFA

SageMaker proporciona integración con dispositivos EFA para acelerar las aplicaciones de computación de alto rendimiento (HPC) y aprendizaje automático. Esta integración le permite aprovechar un dispositivo EFA al ejecutar sus tareas de entrenamiento distribuidas. Puede añadir la integración de EFA a un contenedor Docker existente al que la lleve. SageMaker La siguiente información describe cómo configurar su propio contenedor para utilizar un dispositivo EFA en sus trabajos de entrenamiento distribuidos.

Requisitos previos

El contenedor debe cumplir con la especificación del contenedor SageMaker de formación

Instale EFA y los paquetes obligatorios.

Su contenedor debe descargar e instalar el software EFA. Esto permite que el contenedor reconozca el dispositivo EFA y proporciona versiones compatibles de Libfabric y Open MPI.

Todas las herramientas, como MPI y NCCL, deben instalarse y gestionarse dentro del contenedor para poder utilizarlas como parte de su trabajo de entrenamiento en materia de EFA. Para obtener una lista de todas las versiones de EFA disponibles, consulte Verificar el instalador de EFA mediante una suma de comprobación. En el siguiente ejemplo se muestra cómo modificar el Dockerfile de un contenedor compatible con EFA para instalar EFA, MPI, OFI, NCCL y NCCL-TEST.

nota

Si se utiliza PyTorch con EFA en el contenedor, la versión NCCL del contenedor debe coincidir con la versión NCCL de la instalación. PyTorch Para comprobar la versión de la PyTorch NCCL, utilice el siguiente 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

Consideraciones al crear el contenedor

El dispositivo EFA se monta en el contenedor como /dev/infiniband/uverbs0 según se indica en la lista de dispositivos accesibles al contenedor. En las instancias P4d, el contenedor tiene acceso a 4 dispositivos EFA. Los dispositivos EFA se encuentran en la lista de dispositivos a los que puede acceder el contenedor de la siguiente manera:

  • /dev/infiniband/uverbs0

  • /dev/infiniband/uverbs1

  • /dev/infiniband/uverbs2

  • /dev/infiniband/uverbs3

Para obtener información sobre el nombre de host, los nombres de host del mismo nivel y la interfaz de red (para MPI) en el archivo resourceconfig.json que se proporciona a cada instancia de contenedor, consulte Configuración de entrenamiento distribuido. El contenedor gestiona el tráfico TCP normal entre pares a través de las interfaces de red elásticas (ENI) predeterminadas, mientras que gestiona el tráfico OFI (derivación del núcleo) a través del dispositivo EFA.

Comprobar que el dispositivo EFA sea reconocido

 Para comprobar que se reconozca el dispositivo EFA, ejecute el siguiente comando desde su contenedor.

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

El resultado debería tener un aspecto similar al siguiente.

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

Ejecutar un trabajo de entrenamiento con EFA

Una vez que haya creado un contenedor compatible con EFA, puede realizar un trabajo de formación con EFA utilizando un SageMaker estimador de la misma manera que lo haría con cualquier otra imagen de Docker. Para obtener más información sobre cómo registrar su contenedor y usarlo para el entrenamiento, consulte Adaptación de un contenedor de entrenamiento propio.