Laufschulung mit EFA - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Laufschulung mit EFA

SageMaker bietet die Integration mit EFA-Geräten, um High Performance Computing (HPC)- und Machine Learning-Anwendungen zu beschleunigen. Diese Integration ermöglicht es Ihnen, ein EFA-Gerät bei der Durchführung Ihrer verteilten Schulungsaufträge zu nutzen. Sie können die EFA-Integration zu einem vorhandenen Docker-Container hinzufügen, den Sie zu mitbringen SageMaker. In den folgenden Informationen wird beschrieben, wie Sie Ihren eigenen Container so konfigurieren, dass er ein EFA-Gerät für Ihre verteilten Schulungsaufträge verwendet.

Voraussetzungen

Ihr Container muss die SageMaker Spezifikation für den Trainingscontainer erfüllen. 

Installieren Sie EFA und die erforderlichen Pakete.

Ihr Container muss die EFA-Software downloaden und installieren. Dadurch kann Ihr Container das EFA-Gerät erkennen und bietet kompatible Versionen von Libfabric und Open MPI.

Alle Tools wie MPI und NCCL müssen innerhalb des Containers installiert und verwaltet werden, damit sie im Rahmen Ihres EFA-fähigen Schulungsauftrags verwendet werden können. Eine Liste aller verfügbaren EFA-Versionen finden Sie unter Überprüfen des EFA-Installationsprogramms mithilfe einer Prüfsumme. Das folgende Beispiel zeigt, wie Sie das Dockerfile Ihres EFA-fähigen Containers ändern, um EFA, MPI, OFI, NCCL und NCCL-TEST zu installieren.

Anmerkung

Wenn Sie PyTorch mit EFA auf Ihrem Container verwenden, sollte die NCCL-Version Ihres Containers mit der NCCL-Version Ihrer PyTorch Installation übereinstimmen. Verwenden Sie den folgenden Befehl, um die PyTorch NCCL-Version zu überprüfen:

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

Überlegungen zur Erstellung Ihres Containers

Das EFA-Gerät ist wie /dev/infiniband/uverbs0 in der Liste der Geräte aufgeführt, auf die der Container zugreifen kann, in den Container eingebunden. Auf P4d-Instances hat der Container Zugriff auf 4 EFA-Geräte. Die EFA-Geräte befinden sich in der Liste der Geräte, auf die der Container zugreifen kann, als:

  • /dev/infiniband/uverbs0

  • /dev/infiniband/uverbs1

  • /dev/infiniband/uverbs2

  • /dev/infiniband/uverbs3

Informationen zu Hostnamen, Peer-Hostnamen und Netzwerkschnittstelle (für MPI) finden Sie in der resourceconfig.json Datei, die den einzelnen Container-Instances zur Verfügung gestellt wird, unter Konfiguration für verteilte Schulungen. Ihr Container verarbeitet den regulären TCP-Verkehr zwischen Peers über die standardmäßigen Elastic-Network-Schnittstellen (ENI) und den OFI-Verkehr (Kernel-Bypass) über das EFA-Gerät.

Stellen Sie sicher, dass Ihr EFA-Gerät erkannt wird

 Um zu überprüfen, ob das EFA-Gerät erkannt wird, führen Sie den folgenden Befehl in Ihrem Container aus.

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

Ihre Ausgabe sollte in etwa wie folgt aussehen.

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

Ausführen eines Schulungsauftrags mit EFA

Sobald Sie einen EFA-fähigen Container erstellt haben, können Sie einen Trainingsauftrag mit EFA unter Verwendung eines SageMaker Schätzers auf die gleiche Weise wie bei jedem anderen Docker-Image ausführen. Weitere Informationen zur Registrierung Ihres Containers und seiner Verwendung für Schulungen finden Sie unter Anpassung Ihres eigenen Schulungscontainers.