기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SageMaker AI에서 분산 훈련 시작
다음 페이지에서는 Amazon SageMaker AI에서 분산 훈련을 시작하는 데 필요한 단계에 대한 내용을 제공합니다. 이미 분산 훈련에 익숙하다면 선호하는 전략 또는 프레임워크에 맞는 다음 옵션 중 하나를 선택하여 시작하세요. 분산 훈련 전반에 대해 알아보려면 분산 훈련 개념을(를) 참조하세요.
SageMaker AI 분산형 훈련 라이브러리는 SageMaker 훈련 환경에 최적화되어 있으며, 분산 훈련 작업을 SageMaker AI에 맞게 조정하고 훈련 속도 및 처리량을 개선하는 데 도움이 됩니다. 라이브러리는 데이터 병렬 및 모델 병렬 훈련 전략을 모두 제공합니다. 소프트웨어와 하드웨어 기술을 결합하여 GPU 간 및 노드 간 통신을 개선하고 훈련 스크립트에 대한 최소한의 코드 변경만 요구하는 내장 옵션을 통해 SageMaker AI의 훈련 기능을 확장합니다.
시작하기 전에
SageMaker 훈련은 단일 인스턴스뿐 아니라 여러 인스턴스에서도 분산 훈련을 지원하므로 모든 규모의 훈련을 대규모로 실행할 수 있습니다. SageMaker Python SDK에서 PyTorchCreateTrainingJob API를 실행하며, 현재 세션이 실행 중인 리전을 찾고, 딥 러닝 프레임워크, 분산 훈련 프레임워크, EFA 드라이버를 비롯한 여러 라이브러리가 사전 패키징된 사전 빌드된 AWS 딥 러닝 컨테이너 중 하나를 가져옵니다. FSx 파일 시스템을 훈련 인스턴스에 마운트하려면 VPC 서브넷과 보안 그룹 ID를 예측기에 전달해야 합니다. SageMaker AI에서 분산 훈련 작업을 실행하기 전에 기본 인프라 설정에 대한 다음의 일반적인 설명을 읽어보세요.
가용 영역 및 네트워크 백플레인
여러 인스턴스(노드라고도 함)를 사용할 때는 인스턴스를 연결하는 네트워크, 인스턴스가 훈련 데이터를 읽는 방법, 인스턴스 간에 정보를 공유하는 방식을 이해하는 것이 중요합니다. 예를 들어 분산 데이터 병렬 훈련 작업을 실행할 때는 AllReduce 연산을 실행하기 위한 컴퓨팅 클러스터의 노드 간 통신, Amazon Simple Storage Service 또는 Amazon FSx for Lustre의 노드와 데이터 스토리지 간 데이터 전송과 같은 여러 요소가 컴퓨팅 리소스를 최적으로 사용하고 훈련 속도를 높이는 데 중요한 역할을 합니다. 통신 오버헤드를 줄이려면 동일한 AWS 리전 및 가용 영역에서 인스턴스, VPC 서브넷, 데이터 스토리지를 구성해야 합니다.
더 빠른 네트워크와 높은 처리량의 스토리지를 갖춘 GPU 인스턴스
엄밀히 따지자면 어떤 인스턴스든 분산 훈련에 사용할 수 있습니다. 더 빠른 노드 간 통신이 필요한 대규모 언어 모델(LLM) 및 확산 모델과 같은 대규모 모델을 훈련하기 위해 여러 노드 분산 훈련 작업을 실행해야 하는 경우 SageMaker AI에서 지원하는 EFA 활성 GPU 인스턴스
SageMaker AI 분산형 데이터 병렬화(SMDDP) 라이브러리 사용
SMDDP 라이브러리는 AWS 네트워크 인프라 및 Amazon SageMaker AI ML 인스턴스 토폴로지에 최적화된 AllReduce 및 AllGather 집합 통신 작업을 구현하여 노드 간 통신을 개선합니다. SMDDP 라이브러리를 PyTorch 기반 분산 훈련 패키지인 PyTorch 분산 데이터 병렬(DDP)ml.p4d.24xlarge 인스턴스에서 분산 훈련 작업을 시작하기 위해 PyTorch 추정기를 설정하는 방법을 보여줍니다.
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )
SageMaker AI에서 훈련 스크립트를 준비하고 분산 데이터 병렬 훈련 작업을 시작하는 방법을 알아보려면 SageMaker AI 분산형 데이터 병렬화 라이브러리를 사용하여 분산 훈련 실행 섹션을 참조하세요.
SageMaker AI 모델 병렬화 라이브러리(SMP) 사용
SageMaker AI는 SMP 라이브러리를 제공하며 샤딩된 데이터 병렬화, 파이프라인 작업, 텐서 병렬화, 옵티마이저 상태 샤딩 등과 같은 다양한 분산 훈련 기술을 지원합니다. SMP 라이브러리가 제공하는 기능에 대해 자세히 알아보려면 SageMaker 모델 병렬화 라이브러리의 핵심 기능을(를) 참조하세요.
SageMaker AI의 모델 병렬화 라이브러리를 사용하려면 SageMaker AI 프레임워크 예측기의 distribution 파라미터를 구성합니다. 지원되는 프레임워크 예측기는 PyTorchml.p4d.24xlarge 인스턴스에서 모델 병렬화 라이브러리를 사용하여 분산 훈련을 위한 프레임워크 예측기를 구성하는 방법을 보여줍니다.
from sagemaker.frameworkimportFrameworkdistribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator =Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )
훈련 스크립트를 조정하고, estimator 클래스에서 분산 파라미터를 구성하고, 분산 훈련 작업을 시작하는 방법을 알아보려면 SageMaker AI의 모델 병렬화 라이브러리 및 SageMaker Python SDK 설명서에 나와 있는 분산 훈련 API
오픈 소스 분산 훈련 프레임워크 사용
또한 SageMaker AI는 백엔드에서 mpirun 및 torchrun을 작동하기 위한 다음 옵션을 지원합니다.
-
SageMaker AI의 PyTorch DistributedDataParallel(DDP)
을 mpirun백엔드와 함께 사용하려면 PyTorch 예측기에distribution={"pytorchddp": {"enabled": True}}값을 추가합니다. 자세한 내용은 SageMaker Python SDK 설명서에 나와 있는 PyTorch 분산 훈련및 SageMaker AI PyTorch 예측기 의 distribution인수를 참조하세요.참고
이 옵션은 PyTorch 1.12.0 이상에서 사용할 수 있습니다.
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend ) -
SageMaker AI는 P3, P4 등 GPU 기반 Amazon EC2 인스턴스뿐만 아니라 AWS Trainium
디바이스로 구동되는 Trn1에서의 분산 훈련을 위한 PyTorch torchrun런처를 지원합니다. SageMaker AI의 PyTorch DistributedDataParallel(DDP)
을 torchrun백엔드와 함께 사용하려면 PyTorch 예측기에distribution={"torch_distributed": {"enabled": True}}값을 추가합니다.참고
이 옵션은 PyTorch 1.13.0 이상에서 사용할 수 있습니다.
다음 코드 스니펫은 두
ml.p4d.24xlarge인스턴스에서torch_distributed분산 옵션을 사용하여 분산 훈련을 실행하도록 SageMaker AI PyTorch 예측기를 구성하는 예시를 보여줍니다.from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )자세한 내용은 SageMaker Python SDK 설명서에 나와 있는 분산 PyTorch 훈련
및 SageMaker AI PyTorch 예측기 의 distribution인수를 참조하세요.Trn1의 분산 훈련에 대한 참고 사항
Trn1 인스턴스는 최대 16개의 Trainium 디바이스로 구성되며 각 Trainium 디바이스는 두 개의 NeuronCore
로 구성됩니다. AWS Trainium 디바이스의 사양은 AWS Neuron 설명서의 Trainium 아키텍처 를 참조하세요. Trainium 기반 인스턴스에서 훈련시키려면 SageMaker AI PyTorch 예측기 클래스의
instance_type인수에 Trn1 인스턴스 코드(ml.trn1.*)를 문자열로 지정하기만 하면 됩니다. 사용 가능한 Trn1 인스턴스 유형을 찾으려면 AWS Neuron 설명서의 AWS Trn1 아키텍처를 참조하세요. 참고
Amazon EC2 Trn1 인스턴스에서의 SageMaker 훈련은 현재 PyTorch Neuron용 AWS 딥 러닝 컨테이너 v1.11.0 이상의 PyTorch 프레임워크에 대해서만 사용할 수 있습니다. 지원되는 PyTorch Neuron 버전의 전체 목록을 찾으려면 AWS Deep Learning Containers GitHub 리포지토리의 Neuron 컨테이너
를 참조하세요. SageMaker Python SDK를 사용하여 Trn1 인스턴스에서 훈련 작업을 시작하면 SageMaker AI는 AWS 딥 러닝 컨테이너에서 제공하는 Neuron 컨테이너
에서 올바른 컨테이너를 자동으로 선택하여 실행합니다. Neuron 컨테이너는 SageMaker 훈련 플랫폼 및 Amazon EC2 Trn1 인스턴스에 훈련 작업을 보다 쉽게 적용할 수 있도록 훈련 환경 설정 및 종속성과 함께 사전 패키징됩니다. 참고
SageMaker AI를 사용하여 Trn1 인스턴스에서 PyTorch 훈련 작업을 실행하려면
xla백엔드로 프로세스 그룹을 초기화하고 PyTorch/XLA를 사용하도록 훈련 스크립트를 수정해야 합니다. XLA 채택 프로세스를 지원하기 위해 AWS Neuron SDK는 XLA를 사용하여 PyTorch 작업을 Trainium 명령어로 변환하는 PyTorch Neuron을 제공합니다. 훈련 스크립트를 수정하는 방법을 알아보려면 AWS Neuron 설명서에서 PyTorch Neuron torch-neuronx()을 사용한 훈련을 위한 개발자 안내서를 참조하세요. 자세한 내용은 SageMaker AI Python SDK 설명서에 나와 있는 Trn1 인스턴스의 PyTorch Neuron을 이용한 분산 훈련
및 SageMaker PyTorch 예측기 의 distribution인수를 참조하세요. -
SageMaker AI에서 MPI를 사용하려면
distribution={"mpi": {"enabled": True}}값을 예측기에 추가합니다. MPI 배포 옵션은 MXNet, PyTorch, TensorFlow와 같은 프레임워크에서 사용할 수 있습니다. -
SageMaker AI에서 파라미터 서버를 사용하려면
distribution={"parameter_server": {"enabled": True}}값을 예측기에 추가합니다. 파라미터 서버 옵션은 MXNet, PyTorch, TensorFlow와 같은 프레임워크에서 사용할 수 있습니다.작은 정보
프레임워크별 MPI 및 파라미터 서버 옵션 사용에 대한 자세한 내용은 SageMaker Python SDK 문서에 대한 다음 링크를 참조하세요.
-
MXNet 분산 훈련
과 SageMaker AI MXNet 예측기 의 distribution인수 -
PyTorch 분산 훈련
과 SageMaker AI PyTorch 예측기 의 distribution인수 -
TensorFlow 분산 훈련
과 SageMaker AI TensorFlow 예측기 의 distribution인수
-