Amazon에서 분산 훈련 시작하기 SageMaker - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon에서 분산 훈련 시작하기 SageMaker

다음 페이지에서는 Amazon 에서 분산 훈련을 시작하는 데 필요한 단계에 대한 정보를 제공합니다 SageMaker. 이미 분산 훈련에 익숙하다면 선호하는 전략 또는 프레임워크에 맞는 다음 옵션 중 하나를 선택하여 시작하세요. 분산 훈련 전반에 대해 알아보려면 분산 훈련 개념을(를) 참조하세요.

SageMaker 분산 훈련 라이브러리는 SageMaker 훈련 환경에 최적화되어 있으며, 분산 훈련 작업을 에 맞게 조정 SageMaker하고 훈련 속도와 처리량을 개선하는 데 도움이 됩니다. 라이브러리는 데이터 병렬 및 모델 병렬 훈련 전략을 모두 제공합니다. 소프트웨어와 하드웨어 기술을 결합하여 노드 간GPU 및 노드 간 통신을 개선하고, SageMaker의 훈련 기능을 훈련 스크립트에 대한 코드 변경을 최소화하는 내장 옵션으로 확장합니다. 

시작하기 전에

SageMaker 훈련은 단일 인스턴스와 여러 인스턴스에서 분산 훈련을 지원하므로 대규모로 모든 규모의 훈련을 실행할 수 있습니다. 다양한 분산 훈련 옵션이 있는 훈련 작업 시작 관리자SDK인 SageMaker Python TensorFlow 에서 PyTorch 및 와 같은 프레임워크 추정기 클래스를 사용하는 것이 좋습니다. 추정기 객체를 생성하면 객체가 분산 훈련 인프라를 설정하고 백엔드CreateTrainingJobAPI에서 를 실행하고, 현재 세션이 실행되는 리전을 찾고, AWS 딥 러닝 프레임워크, 분산 훈련 프레임워크, EFA 드라이버를 포함한 여러 라이브러리로 미리 패키징된 사전 빌드된 딥 러닝 컨테이너 중 하나를 가져옵니다. FSx 파일 시스템을 훈련 인스턴스에 탑재하려면 VPC 서브넷 및 보안 그룹 ID를 추정기에 전달해야 합니다. 에서 분산 훈련 작업을 실행하기 전에 기본 인프라 설정에 대한 다음 일반 지침을 SageMaker읽어보세요.

가용 영역 및 네트워크 백플레인

여러 인스턴스(노드라고도 함)를 사용할 때는 인스턴스를 연결하는 네트워크, 훈련 데이터를 읽는 방법 및 인스턴스가 서로 정보를 공유하는 방법을 이해하는 것이 중요합니다. 예를 들어 분산 데이터 병렬 훈련 작업을 실행할 때 AllReduce 작업을 실행하기 위한 컴퓨팅 클러스터의 노드 간 통신 및 Amazon Simple Storage Service 또는 Amazon FSx for Lustre의 노드와 데이터 스토리지 간 데이터 전송과 같은 여러 요소가 컴퓨팅 리소스를 최적으로 사용하고 훈련 속도를 높이는 데 중요한 역할을 합니다. 통신 오버헤드를 줄이려면 동일한 AWS 리전 가용 영역에서 인스턴스, VPC 서브넷 및 데이터 스토리지를 구성해야 합니다.

GPU 더 빠른 네트워크 및 고처리량 스토리지를 갖춘 인스턴스

엄밀히 따지자면 어떤 인스턴스든 분산 훈련에 사용할 수 있습니다. 더 빠른 노드 간 정류가 필요한 대규모 언어 모델(LLMs) 및 확산 모델과 같은 대규모 모델을 훈련하기 위해 다중 노드 분산 훈련 작업을 실행해야 하는 경우 EFA에서 지원하는 활성화된 GPU 인스턴스를 SageMaker 사용하는 것이 좋습니다. 특히 에서 가장 성능이 뛰어난 분산 훈련 작업을 달성하려면 NVIDIA A100이 탑재된 P4d 및 P4de 인스턴스를 GPUs SageMaker사용하는 것이 좋습니다. 이들은 또한 처리량이 높고 지연 시간이 짧은 로컬 인스턴스 스토리지와 더 빠른 노드 내 네트워크도 갖추고 있습니다. 데이터 스토리지의 경우 훈련 데이터 세트 및 모델 체크포인트를 저장하기 위한 높은 처리량을 제공하는 Amazon FSx for Lustre를 사용하는 것이 좋습니다.

SageMaker 분산 데이터 병렬 처리(SMDDP) 라이브러리 사용

SMDDP 라이브러리는 AWS 네트워크 인프라 AllReduce 및 Amazon SageMaker ML 인스턴스 토폴로지에 최적화된 및 AllGather 집합 통신 작업을 구현하여 노드 간 통신을 개선합니다. SMDDP 라이브러리를 분산 데이터 병렬(), 완전히 샤딩된 데이터 병렬(), 및 Megatron-과 같은 PyTorch기반 분산 훈련 패키지의 백엔드로 사용할 수 있습니다. PyTorch DDP PyTorch FSDP DeepSpeed DeepSpeed 다음 코드 예제에서는 두 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참조하세요분산 데이터 병렬화 라이브러리를 사용하여 SageMaker 분산 훈련 실행.

SageMaker 모델 병렬 처리 라이브러리 사용(SMP)

SageMaker 는 SMP 라이브러리를 제공하며 샤딩된 데이터 병렬 처리, 파이프라이닝, 텐서 병렬 처리, 옵티마이저 상태 샤딩 등과 같은 다양한 분산 훈련 기술을 지원합니다. SMP 라이브러리가 제공하는 기능에 대한 자세한 내용은 섹션을 참조하세요 SageMaker 모델 병렬화 라이브러리의 핵심 기능.

SageMaker의 모델 병렬 처리 라이브러리를 사용하려면 SageMaker 프레임워크 추정기의 distribution 파라미터를 구성합니다. 지원되는 프레임워크 추정기는 PyTorch 및 입니다TensorFlow. 다음 코드 예제는 두 ml.p4d.24xlarge 인스턴스에서 모델 병렬화 라이브러리를 사용하여 분산 훈련을 위한 프레임워크 예측기를 구성하는 방법을 보여줍니다.

from sagemaker.framework import Framework distribution={ "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의 모델 병렬 처리 라이브러리를 참조하세요(SageMaker Python SDK 설명서분산 훈련 APIs 참조).

오픈 소스 분산 훈련 프레임워크 사용

SageMaker 는 백엔드torchrun에서 mpirun 및 를 작동하는 다음 옵션도 지원합니다.

  • 에서 mpirun 백엔드와 SageMaker 함께 PyTorch DistributedDataParallel (DDP)를 사용하려면 distribution={"pytorchddp": {"enabled": True}}를 PyTorch 추정기에 추가합니다. 자세한 내용은 SageMaker Python SDK 설명서PyTorch 분산 훈련SageMaker 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 는 P3 및 P4와 같은 GPU기반 Amazon EC2 인스턴스뿐만 아니라 AWS Trainium 디바이스로 구동되는 Trn1에 대한 분산 훈련을 위한 PyTorch torchrun 시작 관리자를 지원합니다.

    torchrun 백엔드와 SageMaker 함께 에서 PyTorch DistributedDataParallel (DDP)를 사용하려면 distribution={"torch_distributed": {"enabled": True}}를 PyTorch 추정기에 추가합니다.

    참고

    이 옵션은 PyTorch 1.13.0 이상에서 사용할 수 있습니다.

    다음 코드 조각은 torch_distributed 배포 옵션이 있는 두 ml.p4d.24xlarge 인스턴스에서 분산 훈련을 실행하도록 SageMaker 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 PyTorch 추정기 distribution 인수를 참조하세요.

    Trn1의 분산 훈련에 대한 참고 사항

    Trn1 인스턴스는 최대 16개의 Trainium 디바이스로 구성되며 각 Trainium 디바이스는 2개의 로 구성됩니다NeuronCores. AWS Trainium 디바이스 사양은 AWS Neuron 설명서Trainium 아키텍처를 참조하세요.

    Trainium 기반 인스턴스에서 훈련하려면 SageMaker PyTorch 추정기 클래스의 instance_type 인수에 문자열로 Trn1 인스턴스 코드 ml.trn1.*만 지정하면 됩니다. 사용 가능한 Trn1 인스턴스 유형을 찾으려면 AWS Neuron 설명서AWS Trn1 아키텍처를 참조하세요.

    참고

    SageMaker Amazon EC2 Trn1 인스턴스에 대한 교육은 현재 v1.11.0부터 PyTorch Neuron용 AWS 딥 러닝 컨테이너의 PyTorch 프레임워크에만 사용할 수 있습니다. 지원되는 PyTorch Neuron 버전의 전체 목록을 찾으려면 Deep Learning Containers 리포지토리의 Neuron Containers를 참조하세요. AWS GitHub

    SageMaker Python을 사용하여 Trn1 인스턴스에서 훈련 작업을 시작하면 SageMaker는 AWS Deep Learning Containers에서 제공하는 Neuron Containers에서 올바른 컨테이너를 SDK자동으로 픽업하고 실행합니다. Neuron Containers는 훈련 환경 설정 및 종속성이 사전 패키징되어 훈련 작업을 SageMaker 훈련 플랫폼 및 Amazon EC2 Trn1 인스턴스에 더 쉽게 적용할 수 있습니다.

    참고

    를 사용하여 Trn1 인스턴스에서 PyTorch 훈련 작업을 실행하려면 xla 백엔드로 프로세스 그룹을 초기화하고 PyTorch/XLA를 사용하도록 훈련 스크립트를 수정 SageMaker해야 합니다. XLA 채택 프로세스를 지원하기 위해 AWS Neuron은 에서 PyTorch 작업을 Trainium 지침으로 변환하는 XLA 데 사용하는 PyTorch Neuron을 SDK 제공합니다. 훈련 스크립트를 수정하는 방법을 알아보려면 PyTorch Neuron 설명서의 Neuron 훈련 개발자 안내서(torch-neuronx)를 참조하세요. AWS

    자세한 내용은 SageMaker Python SDK 설명서 Trn1 인스턴스 및 Estimator 인수에 대한 PyTorch Neuron과의 분산 훈련을 참조하세요. SageMaker PyTorch distribution

  • MPI 에서 를 사용하려면 추정기에 distribution={"mpi": {"enabled": True}}를 SageMaker추가합니다. MPI 배포 옵션은 MXNet, PyTorch및 프레임워크에 사용할 수 있습니다 TensorFlow.

  • 에서 파라미터 서버를 사용하려면 distribution={"parameter_server": {"enabled": True}}를 추정기에 SageMaker추가합니다. 파라미터 서버 옵션은 MXNet, PyTorch및 프레임워크에 사용할 수 있습니다 TensorFlow.

    작은 정보

    프레임워크당 MPI 및 파라미터 서버 옵션 사용에 대한 자세한 내용은 SageMaker Python SDK 설명서 에 대한 다음 링크를 사용하세요.