Amazon SageMaker 디버거 모범 사례 - 아마존 SageMaker

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

Amazon SageMaker 디버거 모범 사례

Debugger로 훈련 작업을 실행할 때는 다음 지침을 사용하세요.

기계 학습 프레임워크 선택

기계 학습 프레임워크를 선택하고 SageMaker 사전 구축된 교육 컨테이너 또는 자체 컨테이너를 사용할 수 있습니다. 디버거를 사용하여 교육 및 성능 문제를 감지하고 에서 교육 작업의 학습 진행 상황을 분석할 수 있습니다. SageMaker SageMaker 다양한 기계 학습 프레임워크 환경에 맞게 준비된 사전 구축된 컨테이너를 사용하여 Amazon EC2에서 모델을 학습할 수 있는 옵션을 제공합니다. AWS Deep Learning Containers, SageMaker 교육 컨테이너 및 사용자 지정 컨테이너에서 실행되도록 모든 교육 작업을 조정할 수 있습니다.

Studio Debugger 인사이트 대시보드 사용

Studio Debugger 인사이트 대시보드를 사용하면 훈련 작업을 제어할 수 있습니다. Studio Debugger 대시보드를 사용하여 Amazon EC2 인스턴스의 모델 성능을 제어하고 최적화할 수 있습니다. Amazon EC2 인스턴스에서 실행되는 모든 SageMaker 교육 작업의 경우 Debugger는 리소스 사용률과 기본 모델 출력 데이터 (손실 및 정확도 값) 를 모니터링합니다. Studio Debugger 대시보드를 통해 훈련 작업에 대한 인사이트를 얻고 모델 훈련 성능을 개선하세요. 자세한 내용은 아마존 SageMaker 스튜디오 클래식 익스페리먼트의 아마존 SageMaker 디버거 UI 섹션을 참조하세요.

Debugger 보고서를 다운로드하고 더 많은 인사이트 얻기

사용자는 Debugger 보고서에서 집계된 결과를 보고 인사이트를 얻을 수 있습니다. Debugger는 기본 규칙 분석에서 컬렉션한 훈련 및 프로파일링 결과를 훈련 작업별 보고서로 집계합니다. 사용자는 Debugger 보고서를 통해 훈련 결과에 대한 자세한 정보를 확인할 수 있습니다. 자세한 내용은 SageMaker 디버거 인터랙티브 리포트 섹션을 참조하세요.

훈련 작업에서 데이터를 캡처하여 Amazon S3에 데이터 저장

사용자는 Debugger 후크를 사용하여 출력 텐서를 저장할 수 있습니다. 훈련 스크립트에 맞는 컨테이너와 프레임워크를 선택한 후, Debugger 후크를 사용하여 저장할 텐서와 저장할 디렉터리(예: Amazon S3 버킷)를 구성합니다. Debugger 후크를 사용하면 구성을 빌드하고 이를 계정에 유지하여 후속 분석에 사용할 수 있습니다. 이 경우 가장 개인 정보에 민감한 애플리케이션에서 사용할 수 있도록 보안이 유지됩니다. 자세한 내용은 텐서를 저장하도록 SageMaker 디버거 설정하기 섹션을 참조하세요.

다양한 Debugger 내장 규칙을 사용하여 데이터를 분석하세요.

사용자는 Debugger 내장 규칙을 사용하여 훈련 작업과 병렬로 텐서를 검사할 수 있습니다. 훈련 성능 데이터를 분석하기 위해 Debugger는 비정상적인 훈련 프로세스 동작을 감시하는 내장 규칙을 제공합니다. 예를 들어, Debugger 규칙은 훈련 프로세스에 시스템 병목 현상 문제나 그라데이션 소실, 텐서 폭발, 과적합 또는 과잉 훈련으로 인한 문제가 있는 경우 문제를 감지합니다. 필요한 경우 사용자는 훈련 문제를 정의하는 자체 기준으로 규칙 정의를 만들어 사용자 지정 규칙을 만들 수도 있습니다. 디버거 규칙에 대한 자세한 내용은 Amazon SageMaker Python SDK 사용에 Debugger 기본 제공 규칙 구성 대한 자세한 지침을 참조하십시오. Debugger 기본 규칙의 전체 목록은 Debugger 기본 제공 규칙 목록 섹션을 참조하세요. 사용자 지정 규칙을 생성하려면 훈련 작업 분석을 위한 Debugger 사용자 지정 규칙 만들기 섹션을 참조하세요.

기본 규칙 상태에 따라 조치 취하기

Amazon CloudWatch 이벤트 및 AWS Lambda에서 디버거를 사용할 수 있습니다. 사용자는 규칙 상태에 따라 작업을 자동화할 수 있습니다. 예를 들어 훈련 작업을 조기에 중단하고 이메일이나 문자를 통해 알림을 설정하는 등의 작업을 자동화할 수 있습니다. 디버거 규칙이 문제를 감지하고 "IssuesFound" 평가 상태를 트리거하면 CloudWatch Events는 규칙 상태 변경을 감지하고 Lambda 함수를 호출하여 조치를 취합니다. 훈련 문제에 대한 자동 조치를 구성하려면 CloudWatch Amazon을 사용하여 규칙에 대한 작업을 생성하고 AWS Lambda 섹션을 참조하세요.

SMDebug 클라이언트 라이브러리를 사용하여 데이터를 자세히 살펴보세요.

사용자는 SMDebug 도구를 사용하여 Debugger에서 컬렉션한 훈련 데이터에 액세스하고 분석할 수 있습니다. TrainingJobcreate_trial 클래스는 Debugger에서 저장한 지표와 텐서를 로드합니다. 이러한 클래스는 실시간으로 또는 훈련이 끝난 후 데이터를 분석할 수 있는 확장된 클래스 메서드를 제공합니다. 또한 SMDebug 라이브러리는 프레임워크 지표의 타임라인을 병합하여 다양한 프로파일링을 집계하고, 라인 차트와 히트맵을 통해 시스템 사용률을 추적하고, 히스토그램을 통해 걸음 지속 시간의 이상치를 찾는 등의 시각화 도구를 제공합니다. SMDebug 라이브러리 도구에 대한 자세한 내용은 디버거 Python 클라이언트 라이브러리를 사용하여 데이터 분석 섹션을 참조하세요.

훈련 작업 지표 모니터링 및 분석

CloudWatch Amazon은 고해상도 사용자 지정 지표를 지원하며, 최상의 해상도는 1초입니다. 하지만 해상도가 미세할수록 지표의 수명이 짧아집니다. CloudWatch 1초 주파수 분해능의 경우 CloudWatch 측정치를 3시간 동안 사용할 수 있습니다. CloudWatch 측정치의 해상도 및 수명에 대한 자세한 내용은 Amazon CloudWatch API 참조의 GetMetric통계를 참조하십시오.

훈련 작업을 100밀리초 (0.1초) 까지 세밀한 해상도로 프로파일링하고 언제든지 사용자 지정 분석을 위해 Amazon S3에 교육 지표를 무기한 저장하려는 경우 Amazon Debugger를 사용해 보십시오. SageMaker SageMaker 디버거는 일반적인 학습 문제를 자동으로 감지하는 내장 규칙을 제공합니다. 디버거는 하드웨어 리소스 사용률 문제 (예: CPU, GPU, I/O 병목 현상) 및 비수렴 모델 문제 (예: 과적합, 기울기 소멸, 텐서 폭발) 를 탐지합니다.

SageMaker 또한 디버거는 Studio Classic 및 해당 프로파일링 보고서를 통해 시각화를 제공합니다. CPU 및 GPU 코어의 리소스 사용률을 누적하여 여러 인스턴스에서 평균을 내는 CloudWatch 지표와 달리 디버거는 각 코어의 사용률을 추적합니다. 이를 통해 대규모 컴퓨팅 클러스터로 확장할 때 하드웨어 리소스의 불균형 사용량을 식별할 수 있습니다. 디버거 시각화를 살펴보려면 디버거 인사이트 대시보드 둘러보기, SageMaker 디버거 프로파일링 보고서 안내 및 SMDebug 클라이언트 라이브러리를 사용한 데이터 분석을 참조하십시오.

시스템 사용률 모니터링 및 병목 현상 감지

Amazon SageMaker 디버거 모니터링을 사용하면 Amazon EC2 인스턴스의 하드웨어 시스템 리소스 사용률을 측정할 수 있습니다. 모니터링은 SageMaker 프레임워크 추정기 (TensorFlow PyTorch, 및 MXNet) 및 일반 SageMaker 추정기 (SageMaker 내장 알고리즘 및 자체 사용자 지정 컨테이너) 로 구성된 모든 SageMaker 교육 작업에 사용할 수 있습니다. Debugger에 내장된 모니터링 규칙은 시스템 병목 문제를 감지하고 병목 문제가 감지되면 알려줍니다.

Debugger 시스템 모니터링을 활성화하는 방법을 알아보려면 Amazon Debugger SageMaker Python 모듈을 사용하여 기본 프로파일링을 위한 파라미터로 추정기를 구성합니다. 섹션을 참조하고 시스템 리소스 사용률의 기본 프로파일링을 위한 설정 구성 섹션을 참조하세요.

모니터링에 사용할 수 있는 기본 규칙의 전체 목록은 하드웨어 시스템 리소스 사용률(시스템 메트릭)을 프로파일링하기 위한 디버거 내장 규칙 섹션을 참조하세요.

프로파일링 프레임워크 운영

Amazon SageMaker Debugger 프로파일링을 사용하면 딥 러닝 프레임워크 작업을 프로파일링할 수 있습니다. 교육 컨테이너, SageMaker PyTorch 프레임워크 컨테이너 및 자체 교육 컨테이너를 사용하여 모델 SageMaker TensorFlow 교육을 프로파일링할 수 있습니다. Debugger의 프로파일링 기능을 사용하면 사용자는 훈련 작업을 수행하기 위해 실행되는 Python 연산자와 함수를 자세히 살펴볼 수 있습니다. Debugger는 상세한 프로파일링, Python 프로파일링, 데이터 로더 프로파일링 및 Horovod 분산 훈련 프로파일링을 지원합니다. 사용자는 프로파일링된 타임라인을 병합하여 시스템 병목 현상과 상호 연관시킬 수 있습니다. Debugger에는 훈련 시작 전 데이터 다운로드로 인한 과도한 훈련 초기화 시간, 훈련 루프의 단계 지속 시간 이상치 등 감시 프레임워크 운영 관련 문제를 프로파일링하기 위한 내장 규칙이 있습니다.

프레임워크 프로파일링을 위해 Debugger를 구성하는 방법을 알아보려면 Amazon Debugger SageMaker Python 모듈을 사용하여 기본 프로파일링을 위한 파라미터로 추정기를 구성합니다. 섹션을 참조하고 프레임워크 프로파일링을 위한 구성 섹션을 참조하세요.

프로파일링에 사용할 수 있는 전체 기본 규칙의 전체 목록은 프레임워크 메트릭을 프로파일링하기 위한 디버거 내장 규칙 섹션을 참조하세요.

모델 출력 텐서 디버깅

Deep Learning Containers 및 SageMaker 교육 컨테이너를 사용하는 AWS 딥 러닝 프레임워크에 디버깅을 사용할 수 있습니다. 완전히 지원되는 프레임워크 버전(지원되는 프레임워크 및 알고리즘에서 버전 참조)의 경우 Debugger는 출력 텐서를 컬렉션하기 위한 후크를 자동으로 등록하고 사용자가 훈련 스크립트를 직접 실행할 수 있습니다. 별표 기호가 하나인 버전의 경우 텐서를 컬렉션하려면 후크를 수동으로 등록해야 합니다. Debugger는 사용자가 다양한 프레임워크에서 활용할 수 있는 일반화된 이름을 가진 사전 구성된 텐서 컬렉션을 제공합니다. 출력 텐서 구성을 사용자 지정하려는 경우 CollectionConfig 및 DebuggerHookConfig API 작업과 Amazon SageMaker Python SDK를 사용하여 자체 텐서 컬렉션을 구성할 수도 있습니다. Debugger에 내장된 디버깅 규칙은 출력 텐서를 분석하고 모델이 손실 함수를 최소화하는 데 방해가 되는 모델 최적화 문제를 식별합니다. 예를 들어 규칙은 과적합, 과잉 훈련, 감소하지 않는 손실, 텐서 폭발, 사라지는 그라데이션 등을 식별합니다.

출력 텐서를 디버깅하기 위해 Debugger를 구성하는 방법을 알아보려면 2단계: SageMaker Python SDK를 사용하여 교육 작업 시작 및 디버깅 섹션을 참조하고 텐서를 저장하도록 SageMaker 디버거 설정하기 섹션을 참조하세요.

디버깅에 사용할 수 있는 전체 기본 규칙의 전체 목록은 모델 훈련 데이터(출력 텐서) 디버깅에 필요한 Debugger 기본 제공 규칙 섹션을 참조하세요.