기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SageMaker AI는 EFA 디바이스와 통합하여 고성능 컴퓨팅(HPC) 및 기계 학습 애플리케이션을 가속화합니다. 이러한 통합을 통해 분산형 훈련 작업을 실행할 때 EFA 장치를 활용할 수 있습니다. SageMaker AI에 가져오는 기존 Docker 컨테이너에 EFA 통합을 추가할 수 있습니다. 다음 정보는 분산형 훈련 작업에 EFA 장치를 사용하도록 자체 컨테이너를 구성하는 방법을 설명합니다.
사전 조건
컨테이너는 SageMaker 훈련 컨테이너 사양을 충족해야 합니다.
EFA 및 필수 패키지를 설치합니다.
컨테이너는 EFA 소프트웨어를 다운로드하고 설치해야 합니다. 이렇게 하면 컨테이너가 EFA 장치를 인식할 수 있고 Libfabric 및 Open MPI의 호환되는 버전이 제공됩니다.
MPI 및 NCCL과 같은 도구를 EFA 지원 훈련 작업의 일부로 사용하려면 컨테이너 내부에 설치하고 관리해야 합니다. 사용 가능한 모든 EFA 버전 목록은 체크섬을 사용하여 EFA 설치 관리자 확인을 참조하세요. 다음 예제는 EFA, MPI, OFI, NCCL 및 NCCL-TEST를 설치하도록 EFA 지원 컨테이너의 Dockerfile을 수정하는 방법을 보여줍니다.
참고
컨테이너에서 EFA와 함께 PyTorch를 사용하는 경우, 컨테이너의 NCCL 버전이 설치된 PyTorch의 NCCL 버전과 일치해야 합니다. 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 이미지와 마찬가지로 SageMaker AI 예측기를 사용하여 EFA로 훈련 작업을 실행할 수 있습니다. 컨테이너를 등록하고 이를 훈련에 사용하는 방법에 대한 자세한 내용은 나만의 훈련 컨테이너 조정하기를 참조하세요.