기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
EFA로 훈련 실행하기
SageMaker EFA 장치와의 통합을 통해 HPC (고성능 컴퓨팅) 및 기계 학습 애플리케이션을 가속화합니다. 이러한 통합을 통해 분산형 훈련 작업을 실행할 때 EFA 장치를 활용할 수 있습니다. 가져온 기존 Docker 컨테이너에 EFA 통합을 추가할 수 있습니다. SageMaker 다음 정보는 분산형 훈련 작업에 EFA 장치를 사용하도록 자체 컨테이너를 구성하는 방법을 설명합니다.
필수 조건
컨테이너는 SageMaker 교육 컨테이너 사양을 충족해야 합니다.
EFA 및 필수 패키지를 설치합니다.
컨테이너는 EFA 소프트웨어를 다운로드하고 설치해야 합니다. 이렇게 하면 컨테이너가 EFA 장치를 인식할 수 있고 Libfabric and Open MPI의 호환되는 버전이 제공됩니다.
MPI 및 NCCL과 같은 도구를 EFA 지원 훈련 작업의 일부로 사용하려면 컨테이너 내부에 설치하고 관리해야 합니다. 사용 가능한 모든 EFA 버전 목록은 체크섬을 사용한 EFA 설치 프로그램 확인을 참조하십시오. 다음 예제는 EFA, MPI, OFI, NCCL 및 NCCL-TEST를 설치하도록 EFA 지원 컨테이너의 Dockerfile을 수정하는 방법을 보여줍니다.
참고
컨테이너에서 PyTorch EFA와 함께 사용하는 경우 컨테이너의 NCCL 버전이 설치의 NCCL 버전과 일치해야 합니다. PyTorch PyTorch NCCL 버전을 확인하려면 다음 명령을 사용하십시오.
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
컨테이너 생성 시 고려 사항
EFA 장치는 컨테이너에 액세스할 수 있는 장치 목록 아래에서 /dev/infiniband/uverbs0
로 컨테이너에 마운트됩니다. P4d 인스턴스에서 컨테이너는 4개의 EFA 장치에 액세스할 수 있습니다. EFA 장치는 컨테이너에 액세스할 수 있는 장치 목록에서 다음과 같이 찾을 수 있습니다.
-
/dev/infiniband/uverbs0
-
/dev/infiniband/uverbs1
-
/dev/infiniband/uverbs2
-
/dev/infiniband/uverbs3
각 컨테이너 인스턴스에 제공된 resourceconfig.json
파일에서 호스트 이름, 피어 호스트 이름 및 네트워크 인터페이스(MPI용)에 대한 정보를 가져오려면 분산형 훈련 구성을 참고하십시오. 컨테이너는 기본 탄력적 네트워크 인터페이스(ENI)를 통해 피어 간에 정기적인 TCP 트래픽을 처리하는 동시에 EFA 장치를 통해 OFI(커널 바이패스) 트래픽을 처리합니다.
EFA 장치가 인식되는지 확인합니다.
EFA 장치가 인식되는지 확인하려면 컨테이너 내에서 다음 명령을 실행하십시오.
/opt/amazon/efa/bin/fi_info -p efa
출력은 다음과 비슷한 형태가 됩니다.
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
EFA로 훈련 작업 실행하기
EFA 지원 컨테이너를 만든 후에는 다른 Docker 이미지와 동일한 방식으로 EFA를 사용하여 교육 작업을 실행할 수 있습니다. SageMaker 컨테이너를 등록하고 이를 훈련에 사용하는 방법에 대한 자세한 내용은 나만의 훈련 컨테이너 조정하기를 참고하십시오.