BLOG
블로그 콘텐츠의 내용 및 의견은 AWS SUMMIT 2021의 세션을 리뷰한 내용입니다.
분산 훈련의 주요 이슈
- 인프라 차원에서의 병목: GPU 간 네트워크 병목, 대용량 데이터의 I/O 병목 등의 고려가 필요합니다.
- AWS의 기존 분산 학습 솔루션: 분산 학습에 필요한 인프라 설정 및 대용량 데이터 동기화 설정이 필요합니다.
- 모니터링: 모델 훈련 과정에 대한 모니터링이 중요하지만 모니터링 및 디버깅을 위한 통합 솔루션이 부재합니다.
분산 학습 성능을 높이기 위한 AWS의 3가지 기술
Amazon FSx for Lustre
대용량 데이터의 경우 S3에서 곧바로 학습 인스턴스로 복사하면 병목 현상 발생 가능성이 있습니다. Lustre 오픈소스 기반의 병렬 파일시스템인 Amazon FSx for Lustre를 입력 데이터 소스로 사용하면 페타바이트 규모의 데이터도 짧은 지연 시간으로 처리 가능합니다.
Elastic Fabric Adapter (EFA)
보통 인스턴스 간 네트워크 통신은 TCP/IP 프로토콜을 이용하지만, 이 경우 대용량 데이터에 대한 송수신 속도가 떨어질 수 있습니다. EFA를 이용하면 OS 우회를 통해 머신 러닝 애플리케이션이 네트워크 인터페이스 하드웨어와 직접 통신할 수 있습니다.
인프라에 맞게 설계된 알고리즘
코드 몇 줄로 쉽게 사용 가능합니다.
- Data Parallelism 라이브러리: Balanced Fusion Buffer를 활용하여 동일한 사이즈의 버퍼를 모든 GPU에 할당하고 크기가 큰 가중치를 여러 GPU로 분산합니다. 가중치가 매핑되는 순서가 정해져 있어 따로 협상 과정을 거치지 않아도 순서가 보장됩니다. 또한, GPU 및 여러 인스턴스 간에 주고받는 모델 파라미터의 병목을 개선하고 EFA의 성능을 최대한 끌어낼 수 있습니다.
- Model Parallelism 라이브러리: 모델 구조를 분석하여 방향성 비순환 그래프(DAG)로 구성한 뒤 서브 그래프 형태로 분리하여 각 GPU 노드에서 학습을 진행합니다. 단일 GPU 노드에서는 일부 모델 파라미터에 대해서만 학습이 일어나 GPU 메모리의 부담이 감소합니다.
분산 학습 모니터링하기
- SageMaker Metrics Definition: 자체 알고리즘을 사용하여 학습 시 학습 과정에서 출력되는 지표에 대한 정규 표현식을 지정하여 지표 저장 및 시각화가 가능합니다.
- SageMaker Debugger: 학습 수행 동안 손실, 가중치, 기울기 등의 텐서 정보와 리소스 사용률 등을 자동으로 수집하여 S3에 저장하며, Debugger는 20개 이상의 빌트인 규칙을 제공합니다. S3에 저장된 값을 분석하여 규칙에 위배되는지 여부 분석 후 위반 시 학습을 중단하거나 이메일을 발송하는 등의 기능을 제공합니다.
- SageMaker Debugger Profiling: 시스템 리소스 사용률을 자동으로 모니터링하여 포괄적인 보고서를 제공합니다. 또한, 사전 정의된 규칙에 의해 발생한 이슈와 권장사항 등을 확인할 수 있습니다.
마무리
대규모, 대용량의 머신 러닝 모델을 훈련해야 하는 경우에는 Amazon SageMaker를 이용하시면 분산 학습과 학습 모니터링을 통한 효율적인 대규모 학습이 가능합니다. 메가존클라우드와 함께 하시면 분산 학습뿐만 아니라 모델링, 머신 러닝 파이프라인 구축 등 머신 러닝의 전 과정에 대해서 지원을 받으실 수 있습니다.
발표자료URL: https://www.slideshare.net/awskorea/learn-how-to-train-highcapacity-models-with-amazon-sagemaker
*해당 블로그는 메가존클라우드 임직원이 AWS SUMMIT 2021 “Amazon SageMaker를 통한 대용량 모델 훈련 방법 살펴보기” 세션을 보고 작성한 글로 발표 자료 및 자세한 내용은 위의 URL에서 확인하실 수 있습니다.