Executar treinamento com EFA - Amazon SageMaker

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

SageMaker fornece integração com dispositivos EFA 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. SageMaker 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

Seu contêiner deve atender às especificações do contêiner de SageMaker treinamento

Instale o EFA e os pacotes obrigatórios

Seu contêiner deve baixar e instalar o software EFA. 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 trabalho de treinamento habilitado para EFA. 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. O exemplo a seguir mostra como modificar o Dockerfile do seu contêiner habilitado para EFA 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

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

 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

Depois de criar um contêiner habilitado para EFA, você pode executar um trabalho de treinamento com o EFA usando um SageMaker Estimator 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.