BLOG

AWS, BERT 및 Mask R-CNN에 대해 가장 빠른 트레이닝 시간 달성
작성일: 2020-01-14

오늘날 가장 많이 사용되는 머신 러닝 모델 중 2가지는 자연어 처리 (NLP)를 위한 BERT와 이미지 인식을 위한 Mask R-CNN입니다. 지난 몇 달 동안 AWS는 기본 인프라, 네트워크, 기계 학습 (ML) 프레임 워크 및 모델 코드를 크게 개선하여 이 두 가지 최신 모델에 대한 최상의 교육 시간을 달성했습니다. 오늘날 TensorFlow, MXNet 및 PyTorch의 클라우드에서 현재까지 가장 빠른 모델 교육 시간을 공유하게 되어 기쁘게 생각합니다. 이제 이러한 하드웨어 및 소프트웨어 최적화를 사용하여 동일한 속도와 효율성으로 TensorFlow, MXNet 및 PyTorch 모델을 교육 할 수 있습니다.

 

모델 트레이닝 시간은 모델의 정확성을 빠르게 반복하고 향상시키는 능력에 직접적인 영향을 미칩니다. 트레이닝 시간을 줄이는 기본 방법은 대규모 GPU 인스턴스 클러스터에 트레이닝 작업을 분산시키는 것이지만, 효율적으로 수행하기는 어렵습니다. 많은 수의 작업자에게 트레이닝 작업을 배포하는 경우 인스턴스 간의 통신 오버 헤드로 인해 추가 GPU 컴퓨팅 성능이 상쇄되기 때문에 수익이 급격히 감소하는 경우가 많습니다.

 

BERT

BERT 또는 Transformers의 Bidirectional Encoder Representations는 인기 있는 NLP 모델로 공개 당시, 여러 일반적인 NLP 작업에 대한 최신 기술이었습니다.

 

8개의 NVIDIA V100 GPU를 갖춘 단일 Amazon EC2 P3dn.24xlarge 인스턴스에서 TensorFlow 및 PyTorch를 사용하여 BERT를 처음부터 트레이닝 하는 데에 며칠이 걸립니다. Elastic Fabric Adapter (EFA)를 통한 네트워크 개선 기능을 사용하여 더 많은 P3dn.24xlarge 인스턴스로 효율적으로 확장 하며 이 복잡한 모델이 더 큰 클러스터에 수렴되는 방식을 최적화 함으로써 트레이닝 시간을 며칠에서 60분 정도로 단축 시켰습니다. 이 문서에서는 최신의 목표도를 달성 하면서 클라우드상에서 BERT의 트레이닝을 가장 빠르게 실행하는 것이 가능합니다. (BooksCorpus 및 English Wikipedia의 트레이닝 후 Squad v1.1 작업에서 90.5 이상의 F1 점수)

 

TensorFlow를 통해 256 P3dn.24xlarge 인스턴스에서 2,048 GPU로 전례 없는 확장을 달성하여 62분 동안 BERT를 교육했습니다. PyTorch를 사용하면 192 P3dn.24xlarge 인스턴스에서 1,536 GPU로 확장하여 교육 시간을 69분으로 단축했습니다. BERT 교육을 위해 전체 하드웨어 및 소프트웨어 스택에 대한 모든 최적화를 통해 85 %의 스케일링 효율성을 달성하여 프레임 워크가 더 많은 P3dn.24xlarge 노드로 스케일링 할 때 GPU의 추가 컴퓨팅 성능을 최대한 활용할 수 있습니다. 다음 표는 이러한 개선 사항을 요약 한 것입니다.

 

PxDN.24xlarge 노드 NDVIA GPUs 훈련 시간 (PyTorch) 훈련 시간 (TensorFlow)
1 8 6.4일 7.5일
192 1536 69분
256 2048 62분

 

Mask R-CNN

Mask R-CNN은 자동운전, 모션 캡쳐 및 고도의 오브젝트 검출과 세그멘테이션 기능을 필요로 하는 그 외 용도에 널리 사용되는 인스턴스 분할 모델 입니다.

 

MXNet, PyTorch 및 TensorFlow를 갖춘 단일 P3dn.24xlarge 인스턴스 (8 NVIDIA V100 GPU)에서 Mask R-CNN을 트레이닝 하는 데 약6시간이 걸립니다. MXNet, PyTorch 및 TensorFlow에서의 트레이닝 시간이 6시간에서 약 25분으로 단축되었습니다. 3개의 ML 프레임 워크에 대한 Mask R-CNN 트레이닝을 24개의 P3dn.24xlarge 인스턴스로 확장하여 192 개의 GPU를 제공했습니다. 이제 몇 일간 결과를 기다리는 대신, 매일 여러 실험을 빠르게 반복하고 실행할 수 있습니다. 이 글을 쓰는 시점(2019년 12월 3일)에서, 이것은 클라우드에서 Mask R-CNN의 가장 빠른 트레이닝 시간이며, 최신 목표 정확도 (0.377 Box min AP, 0.339 Mask min AP on COCO2017 데이터 세트)를 달성합니다. 다음 표는 이러한 개선 사항을 요약 한 것입니다.

 

노드 수 GPU 수 훈련 시간 (MXNet) 훈련 시간 (PyTorch) 훈련 시간 (TensorFlow)
1 8 6.4시간 5.4시간 6.2시간
24 192 25분 26분 27분

 

기술 스택

이러한 결과를 달성하려면 기본 하드웨어, 네트워킹 및 소프트웨어 스택에 대한 최적화가 필요했습니다. BERT와 같은 대형 모델을 트레이닝 할 때 사용중인 많은 GPU 간의 통신에 병목 현상이 발생합니다.

 

분산 컴퓨팅 (대규모 트레이닝이 하나의 인스턴스 임)에서 AllReduce는 다른 작업자 (GPU)에서의 배열 (이 경우 뉴럴 네트워크의 매개 변수)을 줄이고 결과 배열을 모든 작업자 (GPU)로 반환하는 작업입니다. GPU는 모든 반복 후 전체적으로 AllReduce 작업을 수행합니다. 각 반복은 네트워크를 통한 하나의 정방향 및 역방향 패스로 구성됩니다.

 

GPU에서 AllReduce를 수행하는 가장 일반적인 방법은 NCCL (NVIDIA Collective Communications Library) 또는 OpenMPI 또는 Intel MPI Library와 같은 MPI 라이브러리를 사용하는 것입니다. 이 라이브러리는 동종 클러스터를 대상으로 설계되었습니다. AllReduce는 네트워크를 트레이닝 시키는 동일한 인스턴스에서 발생합니다. 동종 클러스터의 AllReduce 알고리즘에는 각 작업자가 각 AllReduce 조작 모델 크기의 약 2 배의 데이터를 송수신하는 과정이 포함됩니다. 예를 들어 BERT에 대한 AllReduce 조작 (3억4000만 개의 매개 변수를 가짐)에는 약 650MB의 반 정밀도 데이터를 두 번 보내고 동일한 양의 데이터를 두 번 받는 것이 포함됩니다. 이 통신은 모든 반복 후에 발생 해야 하며 대부분의 모델을 훈련 할 때 바로 병목이 됩니다.

 

AllReduce 알고리즘의 선택은 일반적으로 네트워크 아키텍처에 따라 다릅니다. 예를 들어, Ring-AllReduce는 각 노드가 두 개의 이웃에 연결되어 링을 형성하는 네트워크에 적합합니다. Torus AllReduce 알고리즘은 각 노드가 4 개의 이웃에 연결되어 2D 직사각형 격자를 형성하는 네트워크에 적합합니다. AWS는 훨씬 유연한 상호 연결을 사용하므로 모든 노드가 전체 대역폭에서 다른 노드와 통신 할 수 있습니다. 예를 들어 128 개의 P3dn 인스턴스가 있는 클러스터에서 모든 인스턴스는 100Gbps에서 다른 인스턴스와 통신 할 수 있습니다.

 

또한 100Gbps 상호 연결은 P3dn 인스턴스로 한정되지 않습니다. CPU 최적화 된 C5n 인스턴스를 클러스터에 추가해도 노드 페어 간에 100Gbps 상호 연결을 계속 유지할 수 있습니다.

 

AWS 인터커넥트의 높은 유연성은 AWS 인터커넥트의 고유 한 기능을 최대한 활용하는 AllReduce 알고리즘을 필요로 합니다. 따라서 AWS 네트워크에 최적화 된 커스텀 AllReduce 알고리즘을 개발했습니다. 커스텀 AllReduce 알고리즘은 다른 종류의 클러스터 내의 모든 노드 페어 사이의 100Gbps 상호 연결을 활용하여 각 작업자가 주고 받는 데이터 양을 절반으로 줄입니다. AllReduce 알고리즘의 계산 단계는 계산에 최적화 된 C5 인스턴스로 오프 로드 되었기 때문에 GPU가 해방되어 변화를 더 빠르게 계산할 수 있도록 합니다. GPU 인스턴스는 축소 작업을 실행하지 않기 때문에 그라디언트 전송 및 AllReduced 그라디언트 수신이 동시에 발생할 수 있습니다. AllReduce 그라디언트에 필요한 홉 수는 동종 AllReduce 알고리즘에 비해 두 개로 줄었습니다. 여기서 네트워크 홉 수는 노드 수에 따라 증가합니다. P3dn 노드 만 사용하는 교육에 비해 교육이 훨씬 빠르게 완료되므로 총 비용도 절감됩니다.

 

결론

BERT 및 Mask R-CNN으로 테스트 한 결과, 단일 노드 실행이 크게 향상되었습니다. 처리량은 P3dn 노드 수가 1에서 16, 32, 64, 128, 192 및 256 인스턴스로 조정됨에 따라 거의 선형으로 확장되었으며, 궁극적으로 비용을 증가시키지 않고 추가 P3dn.24xlarge 인스턴스로 확장하여 모델 트레이닝 시간을 단축하는 데 도움이 되었습니다. 이러한 최적화를 통해 AWS는 최신 컴퓨터 비전 및 NLP 모델을 위해 클라우드에서 가장 빠른 모델 교육 시간을 제공 할 수 있습니다.

 

Amazon SageMaker에서 TensorFlow, MXNet 및 PyTorch를 지금 시작하십시오.

 

원문 URL: https://aws.amazon.com/ko/blogs/machine-learning/amazon-web-services-achieves-fastest-training-times-for-bert-and-mask-r-cnn/

 

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.