안녕하세요. 2020 AWS RE:invent AI/ML 서비스인 Amazon SageMaker 업데이트 3번째입니다. 첫번째, 두번째 리뷰와 마찬가지로 머신러닝 파이프라인(Data Collect & Pre-processing → Build → Train&Tune → Deploy & Manage) 중 이번 내용은 Train&Tune에 해당되는 소개됩니다. 전체구조를 보기 위해서 첫번째 리뷰를 참고해주세요:)
주요 서비스는
(이번 업데이트 소식은 NEW입니다)
• One-Click Training
• SageMaker Experiments
• Automatic Model Tuning
• Distributed Training - NEW
• SageMaker Debugger - NEW
• Managed Spot Training
Two new libraries for distributed training on Amazon SageMaker
대규모 딥러닝 모델을 빠르게 교육할 수 있는 방법에 대해 두 가지 방법인 분산 트레이닝 라이브러리에 대해 소개합니다. SageMaker 분산 트레이닝 핵심은 모델 병렬 처리와 데이터 병렬 처리라는 두 가지 기술을 통해 이러한 효율성을 달성합니다. 모델 병렬 처리는 학습을 위해 여러 GPU에 배포하기 전에 단일 GPU에 맞추기에는 너무 큰 모델을 작은 부분으로 분할하고, 데이터 병렬 처리는 학습 속도를 개선하기 위해 대규모 데이터 세트를 동시에 학습하도록 분할합니다.
몇 줄의 추가 코드만으로 데이터 병렬 처리 또는 모델 병렬 처리를 PyTorch 및 TensorFlow 교육 스크립트에 추가 할 수 있으며 Amazon SageMaker가 선택한 방법을 적용하여 모델을 더 빠르게 교육 할 수 있습니다. SageMaker는 GPU 인스턴스 간의 통신을 최소화하면서 각 GPU의 계산 균형을 맞추기 위해 그래프 파티셔닝 알고리즘을 사용하여 모델을 분할하는 최상의 접근 방식을 결정합니다.
분산 트레이닝 시작하기
분산 트레이닝 라이브러리는 Distributed Data Parallel과 Distributed Model Parallel로 구성되어 있습니다.
• Distributed Data Parallel
◦ 많은 양의 데이터로 모델을 학습 할 때 기계 학습 실무자는 학습 시간을 줄이기 위해 분산 학습으로 전환하는 경우가 많습니다. 시간이 중요한 경우에 비즈니스 요구 사항은 가능한 한 빨리 또는 최소한 제한된 기간 내에 교육을 완료하는 것입니다. 그런 다음 분산 학습은 컴퓨팅 인스턴스의 여러 GPU뿐만 아니라 여러 GPU가있는 여러 인스턴스의 여러 노드 클러스터를 사용하도록 확장됩니다. 클러스터 크기가 증가함에 따라 성능이 크게 저하됩니다. 이러한 성능 저하는 주로 클러스터에있는 노드 간의 통신 오버 헤드로 인해 발생합니다.
◦ SageMaker Distributed Data Parallel(SMD)은 분산 교육을 위해 SageMaker 분산 모델 병렬 (SMP) 및 SageMaker 데이터 병렬 (SDP)의 두 가지 옵션을 제공합니다.
◦ https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel.html
• Distributed Model Parallel
◦ Amazon SageMaker Distributed Model Parallel(SMP)은 이전에는 GPU 메모리 제한으로 인해 훈련하기 어려웠던 대규모 딥 러닝 모델을 훈련하기위한 모델 병렬 처리 라이브러리입니다. SMP는 여러 GPU 및 인스턴스에서 모델을 자동으로 효율적으로 분할하고 모델 학습을 조정하므로 더 많은 매개 변수로 더 큰 모델을 생성하여 예측 정확도를 높일 수 있습니다.
◦ SMP를 사용하여 최소한의 코드 변경으로 기존 TensorFlow 및 PyTorch 워크로드를 여러 GPU로 자동 분할 할 수 있습니다. SageMaker SDK를 통해 SMP API에 액세스 할 수 있습니다.
◦ https://docs.aws.amazon.com/sagemaker/latest/dg/model-parallel.html
참고 레퍼런스
https://aws.amazon.com/about-aws/whats-new/2020/12/introducing-distributed-training-on-amazon-sagemaker/
Amazon SageMaker Debugger
Amazon SageMaker Debugger는 효율적인 리소스 활용을 위해 시스템 리소스를 실시간으로 모니터링하는 서비스입니다. 이번 2020 RE:Invent에서 자동 권장 사항을 통해 학습 작업에 대한 리소스를 다시 할당 할 수 있도록 학습을 개선하고 시간과 비용을 줄일 수 있는 새로운 기능을 발표되었습니다.
Amazon SageMaker Debugger는 Learning Gradient 및 Weight와 같은 실시간 메트릭을 캡처하여 ML 모델을 보다 빠르게 g학습 할 수 있도록 함으로써 손실, 과적합, 과적합 등의 이상 징후를 수정할 수 있도록 하는 Amazon SageMaker의 기능입니다. SageMaker Debugger는 규칙이라는 기본 제공 기술을 제공하여 ML 모델이 90% 이상의 정확도로 학습했음에도 불구하고 올바른 트래픽 신호를 왼쪽에서 예측하는 이유와 같은 교육 작업의 성공에 중요한 텐서를 포함하여 배출된 데이터를 쉽게 분석할 수 있도록 합니다.
새로운 프로파일링 기능을 통해 이제 SageMaker Debugger는 CPU, GPU, 네트워크, I/O 및 메모리와 같은 시스템 리소스를 자동으로 모니터링하여 교육 작업에 대한 완벽한 리소스 활용도를 제공합니다. 또한 전체 교육 작업 또는 그 일부를 프로파일링하여 교육 작업의 여러 단계에서 세부적인 프레임워크 측정 기준을 제시할 수 있습니다.
프레임워크 메트릭은 CPU 및 GPU의 단계 기간, 데이터 로드, 사전 처리, 운영자 실행 시간 등 교육 스크립트 내에서 캡처되는 메트릭입니다. SageMaker Debugger는 GPU 활용률이 0으로 떨어지는 등의 문제로 발생할 수 있는 근본 원인을 식별하는 데 도움이 되는 시스템 및 프레임워크 메트릭을 상호 연결하여 교육 스크립트를 검사하고 문제를 적절하게 해결할 수 있도록 합니다. 프로파일링 보고서의 권장 사항에 따라 리소스를 재할당할 수 있으므로 교육 시간이 단축되고 비용이 절감됩니다. 메트릭과 통찰력은 SageMaker Python SDK를 사용하거나 Amazon SageMaker Studio를 통해 시각적으로 캡처 및 모니터링됩니다.
Amazon SageMaker Debugger 시작하기
이 예제는 기계 학습 및 딥 러닝 알고리즘 교육을위한 디버깅 및 모니터링 기능을 허용하는 SageMaker 디버거를 제공하고 소개합니다. 이러한 노트북은 특정 프레임 워크에 중점을 두지 만 Amazon SageMaker Debugger가 지원하는 모든 프레임 워크에서 동일한 접근 방식이 작동합니다. 아래 노트북은 검토를 권장하는 순서대로 나열되어 있습니다.
https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-debugger
참고 레퍼런스
https://aws.amazon.com/about-aws/whats-new/2020/12/announcing-new-capabilities-for-amazon-sagemaker-debugger-with-real-time-monitoring-of-system-resources-and-profiling-training-jobs/