아마존에서의 분산 교육 SageMaker - 아마존 SageMaker

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

아마존에서의 분산 교육 SageMaker

SageMaker 분산 교육 라이브러리를 제공하고 컴퓨터 비전 (CV) 및 자연어 처리 (NLP) 와 같은 딥 러닝 작업을 위한 다양한 분산 교육 옵션을 지원합니다. SageMaker의 분산 교육 라이브러리를 사용하면 확장성이 뛰어나고 비용 효율적인 사용자 지정 데이터를 병렬로 실행하고 병렬 딥 러닝 훈련 작업을 모델링할 수 있습니다. (),, PyTorch DistributedDataParallel (DDP)torchrun, MPI 파라미터 서버와 같은 다른 분산 교육 프레임워크 및 패키지를 사용할 수도 있습니다. mpirun 설명서 전체에서 지침과 예제는 SageMaker Python을 사용하여 딥 러닝 작업을 위한 분산 훈련 옵션을 설정하는 방법에 중점을 둡니다SDK.

작은 정보

기계 학습(ML) 훈련 및 처리 작업의 분산형 컴퓨팅에 대한 일반적인 모범 사례를 알아보려면 SageMaker 모범 사례를 사용한 분산 컴퓨팅을(를) 참고하세요.

시작하기 전에

SageMaker 교육은 단일 인스턴스뿐 아니라 여러 인스턴스에 대한 분산 교육을 지원하므로 모든 규모의 교육을 대규모로 실행할 수 있습니다. PyTorch SageMaker SDKPython과 TensorFlow같은 프레임워크 추정기 클래스를 사용하는 것이 좋습니다. 이 클래스는 다양한 분산 교육 옵션이 있는 교육 작업 시작 프로그램입니다. 추정기 객체를 생성하면 객체가 분산 교육 인프라를 설정하고, 백엔드에서 실행하고, 현재 세션이 실행 중인 지역을 찾고, AWS 딥러닝 프레임워크, 분산 교육 프레임워크, EFA드라이버를 비롯한 여러 라이브러리가 사전 패키징된 사전 빌드된 딥 러닝 컨테이너 중 하나를 가져옵니다. CreateTrainingJob API 교육 인스턴스에 FSx 파일 시스템을 마운트하려면 VPC 서브넷 및 보안 그룹 ID를 평가기에 전달해야 합니다. 에서 분산 교육 작업을 실행하기 전에 기본 SageMaker 인프라 설정에 대한 다음 일반 지침을 읽어보세요.

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

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

GPU더 빠른 네트워크와 높은 처리량의 스토리지를 갖춘 인스턴스

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

Amazon에서 분산 교육을 시작해 보세요. SageMaker

이미 분산 훈련에 익숙하다면 선호하는 전략 또는 프레임워크에 맞는 다음 옵션 중 하나를 선택하여 시작하세요. 분산 훈련 전반에 대해 알아보려면 기본 분산 훈련 개념을(를) 참조하세요.

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

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

SMDDP라이브러리는 AWS 네트워크 인프라 AllReduceAllGather Amazon SageMaker ML 인스턴스 토폴로지에 최적화된 통합 통신 작업을 구현하여 노드 간 통신을 개선합니다. SMDDP라이브러리를 분산 데이터 병렬 (DDP), PyTorch 완전 샤딩된 데이터 병렬 처리 () 및 Megatron-과 같은 PyTorch 기반 PyTorch 분산 교육 패키지의 백엔드로 사용할 수 있습니다. FSDP DeepSpeedDeepSpeed 다음 코드 예제는 두 인스턴스에서 분산 훈련 작업을 시작하기 위한 PyTorch 추정기를 설정하는 방법을 보여줍니다. ml.p4d.24xlarge

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 파라미터를 구성하십시오. 지원되는 프레임워크 추정기는 및 입니다. PyTorchTensorFlow 다음 코드 예제는 두 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 작동하기 위한 다음 옵션도 지원합니다.

기본 분산 훈련 개념

SageMaker의 분산 교육 라이브러리는 다음과 같은 분산 교육 용어 및 기능을 사용합니다.

데이터 세트 및 배치

  • 훈련 데이터 세트: 모델을 훈련시키는 데 사용하는 모든 데이터.

  • 글로벌 배치 크기: 각 반복에서 훈련 데이터세트에서 선택하여 클러스터의 데이터셋으로 보내는 레코드 수입니다. GPUs 각 반복에서 그라데이션이 계산되는 레코드 수입니다. 데이터 병렬화를 사용하는 경우 총 모델 복제본 수에 복제본별 배치 크기 global batch size = (the number of model replicas) * (per-replica batch size)을(를) 곱한 값과 같습니다. 기계 학습 문헌에서는 글로벌 배치 크기의 단일 배치를 미니 배치라고 하는 경우가 많습니다.

  • 복제본별 배치 크기: 데이터 병렬화를 사용하는 경우 각 모델 복제본으로 전송되는 레코드 수입니다. 각 모델 복제본은 이 배치로 정방향 및 역방향 전달을 수행하여 가중치 업데이트를 계산합니다. 결과 가중치 업데이트는 다음 복제본별 배치 세트가 처리되기 전에 모든 복제본에서 동기화(평균화) 됩니다.

  • 마이크로 배치: 미니 배치의 서브셋입니다. 하이브리드 모델과 데이터 병렬화를 사용하는 경우 이는 복제본당 크기 배치의 서브셋입니다. SageMaker의 분산 모델 병렬화 라이브러리를 사용하면 각 마이크로 배치가 학습 one-by-one 파이프라인에 공급되고 라이브러리 런타임에서 정의한 실행 일정을 따릅니다.

훈련

  • 에포크: 전체 데이터 세트에 대한 한 번의 훈련 주기. 한 에포크마다 여러 번 반복하는 것이 일반적입니다. 훈련에 사용하는 에포크 수는 모델 및 사용 사례에 따라 다릅니다.

  • 반복: 훈련 데이터의 글로벌 배치 크기 배치(미니 배치)를 사용하여 수행한 단일 순방향 및 역방향 패스. 훈련 중에 수행되는 반복 횟수는 전체 배치 크기와 훈련에 사용된 에포크 수에 따라 결정됩니다. 예를 들어 데이터 세트에 5,000개의 샘플이 포함되어 있고 글로벌 배치 크기를 500으로 사용하는 경우 단일 에포크를 완료하는 데 10번의 반복이 필요합니다.

  • 학습률: 모델의 계산된 오차에 따라 가중치가 변경되는 정도에 영향을 미치는 변수입니다. 학습률은 수렴 속도 및 최적성뿐만 아니라 모델의 수렴 능력에도 중요한 역할을 합니다.

인스턴스 및 GPUs

  • 인스턴스: AWS 기계 학습 컴퓨팅 인스턴스. 이를 노드라고도 합니다.

  • 클러스터 크기: SageMaker 의 분산 교육 라이브러리를 사용하는 경우 인스턴스 수에 각 GPUs 인스턴스의 수를 곱한 값입니다. 예를 들어 훈련 작업에 GPUs 각각 4개씩 있는 ml.p3.8xlarge 인스턴스 두 개를 사용하는 경우 클러스터 크기는 8입니다. 클러스터 크기를 늘리면 훈련 시간이 빨라질 수 있지만 인스턴스 간 통신을 최적화해야 합니다. 그렇지 않으면 노드 간 통신으로 인해 오버헤드가 추가되어 훈련 시간이 느려질 수 있습니다. SageMaker 분산 교육 라이브러리는 Amazon EC2 ML 컴퓨팅 인스턴스 간의 통신을 최적화하여 디바이스 사용률을 높이고 교육 시간을 단축하도록 설계되었습니다.

분산 훈련 솔루션

  • 데이터 병렬화: 여러 Amazon EC2 ML 인스턴스로 구성된 컴퓨팅 GPUs 클러스터에서 교육 데이터 세트를 여러 개로 분할하는 분산 교육의 전략입니다. 각 노드는 모델의 복제본을 GPU 포함하고, 서로 다른 배치의 훈련 데이터를 수신하고, 순방향 및 역방향 패스를 수행하고, 동기화를 위해 다른 노드와 가중치 업데이트를 공유한 다음 배치와 궁극적으로 또 다른 시대로 이동합니다.

  • 모델 병렬화: 여러 Amazon EC2 ML 인스턴스로 구성된 컴퓨팅 GPUs 클러스터에서 모델을 여러 개로 분할하는 분산 교육 전략입니다. 모델이 복잡하고 숨겨진 계층과 가중치가 많아 단일 인스턴스의 메모리에 다 담을 수 없을 수도 있습니다. 각 GPU 모델은 모델의 하위 집합을 포함하며, 이를 통해 데이터 흐름과 변환이 공유되고 컴파일됩니다. GPU활용률 및 학습 시간 측면에서 모델 병렬 처리의 효율성은 모델을 분할하는 방식과 정방향 및 역방향 패스를 수행하는 데 사용되는 실행 일정에 따라 크게 달라집니다.

  • 파이프라인 실행 일정(파이프라이닝): 파이프라인 실행 일정에 따라 모델 훈련 중에 디바이스 간에 계산(마이크로 배치)이 수행되고 데이터가 처리되는 순서가 결정됩니다. 파이프라이닝은 서로 다른 데이터 샘플에서 동시에 연산을 수행함으로써 모델 병렬화의 진정한 병렬화를 달성하고 순차 계산으로 인한 성능 손실을 극복하는 기법입니다. GPUs 자세한 내용은 파이프라인 실행 일정을 참조하세요.

고급 개념

Machine Learning (ML) 실무자는 모델을 훈련할 때 일반적으로 모델 크기 조정과 학습 데이터 확장이라는 두 가지 스케일링 문제에 직면합니다. 모델 크기와 복잡성으로 인해 정확도가 향상될 수 있지만 단일 CPU 모델 또는 모델에 맞출 수 있는 모델 크기에는 한계가 있습니다. GPU 또한 모델 크기를 조정하면 계산 횟수가 늘어나고 훈련 시간이 길어질 수 있습니다.

훈련을 위해 모든 훈련 데이터를 메모리에 수집해야 하기 때문에 모든 모델이 훈련 데이터 스케일링을 똑같이 잘 처리하는 것은 아닙니다. 수직으로만 확장되며 점점 더 큰 인스턴스 유형으로 확장됩니다. 대부분의 경우 훈련 데이터를 확장하면 훈련 시간이 길어집니다.

딥 러닝(DL)은 여러 계층의 인공 신경망으로 구성된 특정 ML 알고리즘 패밀리입니다. 가장 일반적인 훈련 방법은 미니 배치 스토캐스틱 경사하강법 () 을 사용하는 것입니다. SGD 미니 SGD 배치에서는 오차가 줄어드는 방향으로 계수를 조금씩 반복적으로 변경하여 모델을 학습시킵니다. 이러한 반복은 훈련 데이터 세트의 동일한 크기의 서브샘플인 미니 배치에서 수행됩니다. 각 미니 배치에 대해 미니 배치의 각 레코드에서 모델을 실행하고 오차를 측정하고 오차의 기울기를 추정합니다. 그런 다음 미니 배치의 모든 레코드에서 평균 기울기를 측정하고 각 모델 계수의 업데이트 방향을 제공합니다. 훈련 데이터 세트을 한 번 완전히 통과하는 것을 에포크(epoch)라고 합니다. 모델 훈련은 일반적으로 수십~수백 개의 에포크로 구성됩니다. 미니 SGD 배치에는 여러 가지 이점이 있습니다. 첫째, 미니 배치의 반복 설계는 훈련 시간을 이론적으로 데이터셋 크기에 비례하게 만든다는 것입니다. 둘째, 주어진 미니 배치에서 각 레코드는 최종 기울기 평균 이외의 레코드 간 통신 없이 모델에 의해 개별적으로 처리됩니다. 따라서 미니 배치 처리는 특히 병렬화 및 배포에 적합합니다. 

미니 배치의 레코드를 여러 컴퓨팅 장치에 분산하여 SGD 훈련을 병렬화하는 것을 데이터 병렬 분산 훈련이라고 하며, 가장 일반적으로 사용되는 DL 분산 패러다임입니다. 데이터 병렬 훈련은 미니 배치 크기를 확장하고 각 미니 배치를 더 빠르게 처리하기 위한 적절한 분포 전략입니다. 하지만 데이터 병렬 훈련에는 모든 작업자에서 가져온 기울기로 미니 배치 기울기 평균을 계산하고 이를 모든 작업자에 전달해야 하는 추가적인 복잡성이 수반됩니다. allreduce라는 단계는 훈련 클러스터가 확장됨에 따라 증가하는 오버헤드를 의미할 수 있으며, 부적절한 하드웨어를 빼고 잘못 구현하거나 구현한 경우 훈련 시간에 막대한 불이익을 줄 수 있습니다. 

Data SGD Parallel을 사용하려면 개발자가 최소한 모델과 단일 레코드를 컴퓨팅 장치 (예: 단일 CPU 또는) 에 맞출 수 있어야 GPU 합니다. 자연어 처리 (Natural Language ProcessingNLP) 에서 대형 변환기를 학습시키거나 고해상도 이미지에 대한 분할 모델을 학습시키는 경우 이것이 불가능한 상황이 발생할 수 있습니다. 워크로드를 분할하는 또 다른 방법은 모델을 여러 컴퓨팅 디바이스로 분할하는 것인데, 이를 모델 병렬 분산 훈련이라고 합니다.

전략

분산 훈련은 일반적으로 데이터 병렬과 모델 병렬이라는 두 가지 접근 방식으로 나뉩니다. 데이터 병렬은 분산 훈련에 대한 가장 일반적인 접근 방식입니다. 데이터가 많으면 이를 일괄 처리하여 신경망 CPUs 또는 ML 알고리즘으로 처리되도록 여러 노드 또는 GPUs (노드) 에 데이터 블록을 보낸 다음 결과를 조합합니다. 신경망은 각 노드에서 동일합니다. 모델 병렬 접근 방식은 노드 메모리에 한 조각으로 담을 수 없는 대형 모델에 사용됩니다. 즉, 모델을 분할하고 여러 노드에 각 부분을 배치합니다. 이 경우 모델의 모든 부분에서 데이터가 처리되도록 데이터 배치를 각 노드로 보내야 합니다.

네트워크모델이라는 용어는 종종 같은 의미로 사용됩니다. 대규모 모델은 실제로 많은 계층과 파라미터가 있는 대규모 네트워크입니다. 대규모 네트워크를 사용하여 훈련하면 큰 모델이 생성되고, 사전 훈련된 파라미터와 가중치를 모두 포함하여 모델을 네트워크에 다시 로드하면 대형 모델이 메모리에 로드됩니다. 모델을 분리하여 여러 노드로 분할하면 기본 네트워크도 분리됩니다. 네트워크는 여러 계층으로 구성되며, 네트워크를 분할하려면 여러 컴퓨팅 디바이스에 계층을 배치해야 합니다.

여러 디바이스에서 계층을 순진하게 분할할 때 흔히 발생하는 위험 중 하나는 사용률이 매우 낮다는 것입니다. GPU 훈련은 기본적으로 순방향 패스와 역방향 패스 모두에서 순차적이므로 한 쪽만 능동적으로 계산할 수 있고 다른 쪽에서는 활성화가 전송될 때까지 GPU 기다릴 수 있습니다. 모던 모델 병렬 라이브러리는 파이프라인 실행 일정을 사용하여 디바이스 사용률을 높임으로써 이 문제를 해결합니다. 하지만 SageMaker Amazon의 분산 모델 병렬 라이브러리에만 자동 모델 분할이 포함되어 있습니다. 라이브러리의 두 가지 핵심 기능인 자동 모델 분할과 파이프라인 실행 스케줄링은 자동화된 결정을 내림으로써 모델 병렬화를 구현하는 프로세스를 단순화하여 디바이스를 효율적으로 활용합니다.

데이터 병렬과 모델 병렬을 사용한 훈련

대규모 데이터 세트로 훈련하는 경우 데이터 병렬 접근법부터 시작하세요. 훈련 중에 메모리가 부족하면 모델 병렬 접근 방식으로 전환하거나 하이브리드 모델 및 데이터 병렬화를 시도해 볼 수 있습니다. 또한 다음을 시도하여 데이터 병렬 성능을 개선할 수 있습니다.

  • 모델의 하이퍼파라미터를 변경하세요.

  • 배치 크기를 줄이세요.

  • 크기가 맞을 때까지 배치 크기를 계속 줄이세요. 배치 크기를 1로 줄였는데도 여전히 메모리가 부족하다면 모델 병렬 훈련을 시도해야 합니다.

그래디언트 압축 (FP16,INT8) 을 사용해 보세요.

입력 크기를 줄여 보세요.

  • NLP시퀀스 링크를 늘리거나 배치 크기를 줄이거나 GPUs 위로 조정하여 배치를 분산해야 하는 경우 시퀀스 길이를 줄이십시오.

  • 이미지 해상도를 낮추세요.

수렴에 영향을 줄 수 있으므로 배치 정규화를 사용하는지 확인하세요. 분산 학습을 사용하면 배치가 분할되므로 배치 크기가 훨씬 작을수록 오류율이 높아져 모델 수렴에 방해가 될 수 있습니다. GPUs 예를 들어, 배치 크기가 64인 단일 GPU 네트워크에서 프로토타입을 만든 다음 p3dn.24xlarge 4개를 사용하도록 확장하면 이제 32개가 GPUs 되고 배치당 크기가 64에서 2로 줄어듭니다. GPU 이렇게 하면 단일 노드에서 볼 수 있었던 수렴이 깨질 수 있습니다.

다음과 같은 경우 모델 병렬 훈련으로 시작하세요.

  • 모델이 단일 디바이스에 맞지 않습니다.

  • 모델 크기 때문에 더 큰 배치 크기를 선택하는 데 한계가 있습니다. 예를 들어 모델 중량이 GPU 메모리의 대부분을 차지하고 더 작고 최적이 아닌 배치 크기를 선택해야 하는 경우입니다. 

SageMaker 분산 라이브러리에 대한 자세한 내용은 다음을 참조하십시오.

분산 훈련 최적화

사용 사례와 데이터에 맞게 하이퍼파라미터를 사용자 지정하여 최고의 스케일링 효율성을 확보하세요. 다음 토론에서는 가장 영향력 있는 훈련 변수 몇 가지를 강조하고 state-of-the-art 구현에 대한 참조를 제공하여 옵션에 대해 자세히 알아볼 수 있도록 합니다. 또한 선호하는 프레임워크의 분산 훈련 문서를 참조하는 것이 좋습니다.

배치 크기

SageMaker 분산 툴킷을 사용하면 일반적으로 대규모 배치로 학습할 수 있습니다. 예를 들어, 모델이 단일 디바이스 내에 적합하지만 작은 배치 크기로만 훈련할 수 있는 경우 모델 병렬 훈련 또는 데이터 병렬 훈련을 사용하면 더 큰 배치 크기를 실험할 수 있습니다.

배치 크기는 각 반복마다 모델 업데이트의 노이즈 양을 제어하므로 모델 정확도에 직접적인 영향을 미친다는 점에 유의하세요. 배치 크기를 늘리면 기울기 추정의 노이즈 양이 감소하므로 아주 작은 배치 크기에서는 유용하기도 하지만, 배치 크기가 커지면 모델 정확도가 저하될 수 있습니다. 

작은 정보

모델이 만족스러운 수렴으로 훈련되도록 배치 크기를 늘림에 따라 하이퍼파라미터를 조정하세요.

배치를 늘릴 때 모델 수렴을 양호하게 유지하기 위해 여러 가지 기법이 개발되었습니다.

미니 배치 크기

에서 SGD 미니 배치 크기는 기울기 추정에 존재하는 노이즈의 양을 정량화합니다. 미니 배치를 작게 만들면 노이즈가 매우 많은 미니 배치 그라데이션이 생성되는데, 이는 데이터 세트의 실제 그라데이션을 나타내지 않습니다. 미니 배치의 크기가 크면 미니 배치 그라데이션이 데이터 세트의 실제 그라데이션에 가깝고 노이즈가 충분히 발생하지 않아 관련 없는 최소값에 고정될 수 있습니다.

이러한 기법에 대한 자세한 내용은 다음 문서를 참조하세요.

시나리오

다음 섹션에서는 훈련을 확대할 수 있는 시나리오와 리소스를 사용하여 확장할 수 있는 방법을 다룹니다. AWS

단일 유형에서 다수로 GPU 규모 조정 GPUs

기계 학습에 사용되는 데이터의 양이나 모델 크기로 인해 모델을 훈련하는 데 걸리는 시간이 기다릴 수 있는 시간보다 길어지는 상황이 발생할 수 있습니다. 모델이나 훈련 데이터가 너무 커서 훈련이 전혀 작동하지 않기도 합니다. 한 가지 해결책은 교육에 GPUs 사용하는 수를 늘리는 것입니다. a와 같이 8개가 있는 인스턴스와 같이 여러 GPUs 개가 p3.16xlarge 있는 GPUs 인스턴스에서는 데이터와 처리가 8개로 GPUs 분할됩니다. 분산 훈련 라이브러리를 사용하면 모델을 훈련하는 데 걸리는 시간이 거의 선형적으로 빨라질 수 있습니다. 한 번에 처리했을 때의 시간의 1/8을 약간 넘는 시간이 소요됩니다. p3.2xlarge GPU

인스턴스 유형 GPUs
p3.2xlarge 1
p3.8xlarge 4
p3.16xlarge 8
p3dn.24xlarge 8
참고

SageMaker 교육에 사용되는 ml 인스턴스 유형의 GPUs 수는 해당하는 p3 인스턴스 유형과 동일합니다. 예를 들어, ml.p3.8xlarge 의 개수는 GPUs p3.8xlarge -4와 같습니다.

단일 인스턴스에서 다중 인스턴스로 확장

훈련을 더 확장하고 싶다면 더 많은 인스턴스를 사용할 수 있습니다. 하지만 인스턴스를 더 추가하기 전에 더 큰 인스턴스 유형을 선택해야 합니다. 위 표를 검토하여 각 p3 인스턴스 유형의 개수를 GPUs 확인하십시오.

단일 GPU on a에서 4 GPUs on a로 전환했지만 더 많은 처리 성능이 필요하다고 판단되면 인스턴스 수를 늘리기 p3.16xlarge 전에 하나를 선택하면 성능이 향상되고 비용이 낮아질 수 있습니다. p3.2xlarge p3.8xlarge 사용하는 라이브러리에 따라 다르지만, 단일 인스턴스에서 계속 훈련하는 것이 여러 인스턴스를 사용하는 시나리오보다 성능이 향상되고 비용도 절감됩니다.

인스턴스 수를 확장할 준비가 되면 SageMaker Python SDK estimator 함수로 y를 설정하여 이 작업을 수행할 수 있습니다instance_count. 예를 들어 instance_type = p3.16xlarge와(과) instance_count = 2을(를) 설정할 수 있습니다. 단일 p3.16xlarge 인스턴스에 8개가 GPUs 아니라 두 GPUs 개의 동일한 인스턴스에 16개가 있는 셈입니다. 다음 차트는 단일 GPUs 인스턴스에서 8개부터 시작하여 64개 인스턴스로 증가하여 총 256개의 GPUs 인스턴스로 확장된 규모 및 처리량을 보여줍니다.

Chart showing how throughput increases and time to train decreases with more GPUs.

사용자 지정 훈련 스크립트

SageMaker 사용하면 인스턴스 수를 간단하게 배포하고 확장할 수 있으며 GPUs 선택한 프레임워크에 따라 데이터 및 결과를 관리하는 것이 매우 어려울 수 있으므로 외부 지원 라이브러리가 자주 사용됩니다. 이 가장 기본적인 형태의 분산 교육을 수행하려면 교육 스크립트를 수정하여 데이터 배포를 관리해야 합니다.

SageMaker 또한 Horovod 및 각 주요 딥 러닝 프레임워크에 기본으로 제공되는 분산 교육 구현을 지원합니다. 이러한 SageMaker 프레임워크의 예제를 사용하기로 선택한 경우 Deep Learning Containers용 컨테이너 가이드와 구현을 보여주는 다양한 예제 노트북을 따를 수 있습니다.