HyperAI초신경

PyTorch의 핵심 무기: AdaptDL을 사용한 GPU 클러스터의 EDL 최적화

4년 전
대중 과학
정보
Yang Bai
特色图像

EDL은 LF AI Foundation에서 육성한 Elastic Deep Learning의 약자로, 병렬 처리 정도를 동적으로 조절할 수 있는 딥 신경망 학습 프레임워크입니다.멀티 테넌트 클러스터 관리를 지원하고, 모델 학습 대기 시간과 완료 시간의 균형을 맞추고, 리소스 활용도를 개선할 수 있습니다.

딥 러닝 모델을 훈련하는 데는 일반적으로 시간이 많이 걸리고 컴퓨팅 리소스, 저장 공간 등 측면에서 높은 비용이 필요합니다.

BERT 모델을 예로 들면, GPU에서의 학습 과정은 종종 2,000시간을 넘지만, ResNet과 VGG 모델을 학습하는 데는 최소 100시간이 걸립니다.

오늘날의 클라우드 컴퓨팅 비용 계산에 따르면, 모델 학습 비용은 수천 위안에서 수만 위안에 달할 수 있습니다.모델 학습 비용을 제어하기 위해컴퓨팅 리소스 공유 클러스터가 등장했습니다. 오늘 소개할 것은 Petuum CASL 팀이 개발한 AdaptDL인데, 이는 GPU 클러스터에서 EDL을 크게 최적화합니다.

공유 클러스터의 과제

공유 클러스터를 사용하면여러 사용자가 개별적으로 모델 학습 작업을 제출할 수 있습니다.

이를 통해 컴퓨팅 리소스의 과도한 공급으로 인한 낭비를 줄일 수 있을 뿐만 아니라, 유휴 리소스를 활용하여 사용자는 단일 워크스테이션에서 며칠 또는 몇 시간 만에 복잡한 모델을 학습시킬 수 있습니다.

그러나 공유 클러스터에도 몇 가지 문제가 있습니다.

  공유 클러스터가 직면한 일반적인 과제는 다음과 같습니다.

1. 자원 할당:여러 작업이 클러스터를 공유하는 경우 GPU 리소스 할당을 신중하게 계획해야 합니다. 예를 들어, 모델을 학습할 때 동일한 머신의 GPU를 사용하면 여러 머신의 GPU를 사용하는 것보다 훨씬 빠르게 학습할 수 있습니다. 학습 작업 간의 네트워크 대역폭 경쟁을 피하기 위해, 서로 다른 분산 학습 작업은 서로 다른 머신의 GPU에 할당되어야 합니다.

2. 훈련 속도와 확장성은 다양합니다.학습 작업에 적합한 GPU 구성을 선택하려면 시간이 지남에 따라 변하는 모델의 학습 속도와 확장성을 지속적으로 모니터링해야 합니다. 특히 수렴에 접근할 때는 더 큰 배치 크기를 사용하세요. 따라서 학습을 시작할 때는 GPU 리소스를 적게 사용하는 것이 좋습니다.

3. 훈련 구성:일반적으로 중요한 훈련에 맞춰 GPU를 구성하려면 사용 가능한 GPU가 무엇인지 미리 알아야 합니다. 이것이 공유 클러스터에서는 불가능한 경우도 있습니다. 예를 들어, 배치 크기와 학습률은 종종 GPU 수에 따라 결정되며, GPU가 서로 다른 머신에 있는 것으로 알려진 경우 그래디언트 축적을 사용하여 네트워크 병목 현상을 극복할 수 있습니다.

4. 공정성 및 가용성:GPU 사용량이 최대치에 달할 때 일부 사용자는 대기열에 들어가 유휴 GPU가 작동할 때까지 기다려야 할 수도 있지만, 이미 작업을 실행 중인 일부 사용자는 속도를 높이기 위해 GPU 수를 늘리고 싶어합니다. 두 가지 사이의 모순을 어떻게 균형 있게 조절하고 해결할 것인가.

AdaptDL은 로컬 머신과 공유 클러스터에서 모델 학습을 간소화하고 가속화합니다.

AdaptDL은 공유 클러스터의 문제를 해결합니다.

Petuum CASL 팀은 조직 풀 컴퓨팅과 공유 클러스터와 관련된 단점을 해결하기 위해 AdaptDL을 만들었습니다.공유 클러스터에서 분산된 훈련을 간소화하고 속도를 높입니다.

AdaptDL은 리소스 적응형 딥러닝(DL) 훈련 및 스케줄링 프레임워크입니다. 실시간으로 훈련 작업의 성능을 모니터링하고 작업 실행 중에 리소스 할당(예: GPU, 컴퓨팅 인스턴스 등)을 유연하게 조정할 수 있습니다.

이는 공유 클러스터에서 위에서 언급한 문제를 해결하며 다음과 같은 장점이 있습니다.

1. 공유 GPU 클러스터 활용도 향상:AdaptDL은 모든 모델 학습 작업을 분석하고 다양한 GPU 리소스 구성에서 다양한 작업이 어떻게 수행되는지 학습할 수 있습니다. AdaptDL 스케줄러는 학습된 지식을 활용하여 다양한 학습 작업에 맞게 GPU 리소스를 공정하고 효율적으로 구성할 수 있습니다. 훈련 작업의 수가 늘어나고 다양한 작업의 성능 특성이 더 잘 이해됨에 따라 AdaptDL은 GPU를 유연하게 재구성하는 방법을 학습하게 됩니다.

2. 클라우드 모델 학습 비용 절감:AdaptDL은 불필요한 비용을 피하기 위해 클라우드에서 적당한 수의 GPU 인스턴스를 제공할 수 있습니다. AdaptDL은 학습 중에 더 큰 배치 크기를 사용할 때 클러스터를 자동으로 확장할 수도 있습니다.

3. 대규모 훈련을 쉽게 구현할 수 있습니다.더 큰 배치 크기를 사용하면 많은 GPU에서 학습 속도를 높일 수 있지만, 적용하기 쉽지 않습니다. 일부 모델이 너무 큰 배치 크기를 사용하면 통계적 효율성이 떨어져 학습 시간이 늘어날 수 있지만, 배치 크기가 너무 작으면 GPU를 효과적으로 활용할 수 없습니다. AdaptDL은 공유 클러스터, 클라우드 환경 및 로컬 머신에서 적절한 배치 크기를 자동으로 선택할 수 있습니다.

AdaptDL을 사용하는 모델은 Optimus 및 Tiresias에 비해 평균적으로 학습 시간이 짧습니다.

각 모델 학습 작업에 대해 AdaptDL은 배치 크기, 학습률, 그래디언트 누적을 자동으로 조정할 수 있습니다. 클라우드 서비스 플랫폼에서는 스팟 인스턴스의 수도 제어할 수 있습니다.

Petuum의 실습에서는 AdaptDL 공유 클러스터 교육 모델의 도움으로 다음과 같은 결과가 나타났습니다.평균적으로 AWS에서 스팟 인스턴스를 사용하면 완료 시간이 2~3배 빨라지고 비용은 3배 낮아졌습니다.

시작

AdaptDL은 두 가지 모드로 사용할 수 있습니다.

1. 클러스터 스케줄링:Kubernetes 클러스터에서 여러 작업을 실행할 수 있습니다. AdaptDL Python 라이브러리를 사용하면 AdaptDL 스케줄러를 PyTorch 코드에 통합하여 최적의 GPU 수와 학습 배치 크기를 자동으로 선택할 수 있습니다.

2. 독립적인 훈련:모든 클러스터나 로컬 멀티 GPU 머신에서 적응형 배치 크기와 학습률을 사용하여 모델을 훈련합니다. AdaptDL은 모델 학습 속도를 높이기 위해 더 큰 배치 크기를 사용할 시기를 자동으로 파악할 수 있습니다.

  AdaptDL Python 라이브러리를 사용한 훈련:

Adaptdl Python 라이브러리는 PyTorch 학습 코드를 단순화합니다.배치 크기와 학습률을 적응형으로 만드십시오.추가 설정이 필요하지 않습니다.

python3 –m pip install adaptdl

PyTorch MNIST를 예로 들면, 몇 줄의 코드만 수정하면 됩니다. 다음 그림과 같이:

AdaptDL은 PyTorch의 기본 인터페이스와 비슷한 분산형 데이터 병렬 인터페이스를 제공하므로 기존 분산형 학습 코드를 쉽게 수정할 수 있습니다.

첫 번째 단계:

사용 adaptdl.torch.AdaptiveDataLoader  대안 토치.유틸리티.데이터.데이터로더 .

AdaptiveDataLoader는 프로그램의 처리량과 통계적 효율성에 따라 학습 중에 자동으로 최적의 배치 크기를 선택할 수 있습니다. 체크포인트를 실행할 때 상태를 저장할 수도 있으므로, 재시작 후에 중단된 지점부터 학습을 재개할 수 있습니다.

train_loader.자동 스케일_배치_크기(1024)  AdaptDL 만들기  학습을 위해 가장 효과적인 배치 크기를 자동으로 선택할 수 있습니다.모든 학습 과정에서 최대 글로벌 배치 크기는 1024입니다.

다음:

사용 adaptdl.torch.AdaptiveDataParallel  패키지 모델.

adaptdl.torch.AdaptiveDataParallel  학습 과정에서 통계적 효율성을 계산하는 데 사용할 수 있는 그래디언트 노이즈 스케일이 계산됩니다. 배치 크기가 변경되면적응형 데이터 병렬  학습률은 규칙에 따라 자동으로 조정됩니다.

기본적으로,적응형 데이터 병렬   사용된 알고리즘은 다양한 작업에서 좋은 성능을 보이는 AdaScale입니다.

검문소에서적응형 데이터 병렬  모델 매개변수, 최적화기 상태, LR 스케줄러 상태는 자동으로 저장되며, 이러한 설정은 학습을 다시 시작한 후 한 번의 클릭으로 복원될 수 있습니다.

위의 변경 사항을 통해 사용자는 로컬 머신이나 분산 클러스터에서 교육 코드를 실행할 수 있습니다. AdaptDL은 더 빠른 분산 학습을 위해 적절한 배치 크기와 학습률을 선택하고 네트워크 문제를 극복하기 위해 자동으로 그래디언트 축적을 수행합니다.적응형 및 수동 배치 크기 머신에서의 YOLOv3 학습 비교. 적응형은 학습과 배치 크기 비교 측면에서 상당한 이점을 가지고 있습니다.

AdaptDL이 없다면 너무 작은 배치 크기를 선택하면 GPU가 완전히 활용되지 않아 학습 시간이 길어집니다. 반대로, 너무 큰 배치 크기를 선택하면 수렴에 더 많은 에포크가 필요하므로 학습 시간이 더 길어집니다.이에 비해 AdaptDL은 고정된 배치 크기를 선택하지 않고도 자동으로 더 나은 학습 성능을 달성할 수 있습니다.

  AdaptDL 스케줄러를 사용한 클러스터 관리:

AdaptDL 스케줄러는 훈련 작업에 사용될 GPU 리소스를 자동으로 결정할 수 있습니다.이를 통해 공유 클러스터의 교육 작업이 더욱 스마트해집니다.

유연성을 통해 클러스터 유휴 비율이 높으면 추가 GPU를 사용하도록 학습 작업이 확장됩니다. 클러스터 활용률이 높으면 학습 작업을 일시 중지하는 대신 축소하여 GPU 리소스를 적게 사용합니다.

AdaptDL 스케줄러는 또한 다른 기능을 제공합니다.서로 다른 작업 간의 네트워크 경쟁을 피하기 위해 클러스터를 구성하고, 경쟁하는 훈련 작업 간의 공정성을 유지하는 것과 같습니다.

스케줄러와 각 교육 작업 간의 조정 덕분에 AdaptDL은 공유 클러스터를 효율적으로 활용할 수 있습니다.

작업이 더 큰 배치 크기를 효과적으로 사용할 수 있는 경우 AdaptDL은 자동으로 작업에 더 많은 GPU를 전송하여 학습 속도를 높입니다. 반면, 더 작은 배치 크기만 사용할 수 있는 경우 유휴 GPU를 다른 작업에 더 효율적으로 할당할 수 있습니다.

Helm을 사용하여 한 번의 클릭으로 모든 Kubernetes 인스턴스에 AdaptDL 스케줄러를 설치할 수 있습니다. 명령은 다음과 같습니다.

helm install adaptdl adaptdl-sched \
-— repo https://github.com/petuum/adaptdl/raw/helm-repo \
-— namespace adaptdl — create-namespace \
-— set docker-registry.enabled=true

AdaptDL 스케줄러를 설치한 후 AdaptDL CLI를 사용하여 교육 작업을 제출할 수 있습니다.학습 과제는 처음에는 단일 GPU를 사용하지만, 이후 다양한 수의 GPU로 여러 번 재시작합니다. 이때 AdaptDL은 사용할 최적의 GPU 수를 계산합니다. GPU가 몇 개나 있든,AdaptDL은 항상 가장 효과적인 배치 크기를 선택하고 이에 따라 학습률을 조정합니다.

AdaptDL 클러스터 추적 예제

색상이 있는 막대 차트는 다양한 작업에 할당된 컴퓨팅 인스턴스의 수를 보여줍니다. AdaptDL은 각 작업에 할당되는 컴퓨팅 인스턴스 수를 동적으로 최적화할 수 있습니다.

AdaptDL을 사용하면 PyTorch 학습 작업이 공유 클러스터에서 2~3배 더 빠르게 실행됩니다. 또한 AdaptDL 스케줄러는 AWS 스팟 인스턴스도 지원하므로 비용을 3배까지 절감할 수 있습니다.

마지막으로 AdaptDL과 NNI를 사용하여 하이퍼파라미터 튜닝 워크로드를 가속화할 수도 있습니다(AdaptDL + NNI Post).

프로젝트 주소:

https://github.com/petuum/adaptdl

이 글은 PyTorch Medium 블로그에서 번역되었습니다.