Amazon CloudWatch 메트릭을 사용한 교육 작업 모니터링 및 분석 - 아마존 SageMaker

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

Amazon CloudWatch 메트릭을 사용한 교육 작업 모니터링 및 분석

Amazon SageMaker 교육 작업은 학습 데이터 세트의 예제를 제시하여 모델이 예측을 수행하도록 가르치는 반복적인 프로세스입니다. 일반적으로 훈련 알고리즘은 훈련 오류 및 예측 정확도 등과 같은 여러 지표를 계산합니다. 이러한 지표는 모델이 잘 학습하고 있어 처음 보는 데이터에 대한 예측을 잘 일반화할 수 있는지 여부를 진단하는 데 도움이 됩니다. 교육 알고리즘은 이러한 지표의 값을 로그에 기록하고, 로그가 CloudWatch 실시간으로 SageMaker 모니터링하여 Amazon에 전송합니다. 에서 이러한 지표의 그래프를 보면 교육 작업의 성과를 분석할 수 CloudWatch 있습니다. 또한 훈련 작업이 완료되면 사용자는 DescribeTrainingJob 작업을 호출해 최종 반복에서 계산한 지표 값 목록을 얻을 수 있습니다.

참고

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

작은 정보

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

훈련 지표 정의

SageMaker 교육 작업 로그를 자동으로 CloudWatch 파싱하여 교육 메트릭을 에 보냅니다. 기본적으로 SageMaker 작업 및 엔드포인트 지표에 나열된 시스템 리소스 사용률 지표를 SageMaker 전송합니다. 로그를 구문 분석하고 자체 알고리즘의 교육 작업에서 사용자 지정 메트릭을 보내려면 SageMaker 교육 작업 요청을 구성할 때 지표 이름과 정규 표현식을 전달하여 지표 정의를 지정해야 합니다. SageMaker CloudWatch

SageMaker 콘솔, SageMaker Python SDK 또는 하위 수준 SageMaker API를 사용하여 추적하려는 메트릭을 지정할 수 있습니다.

자체 알고리즘을 사용하는 경우 다음과 같이 하세요.

  • 캡처하려는 지표를 알고리즘이 로그에 쓰는지 확인하세요.

  • 로그를 정확하게 검색하여 전송하려는 메트릭의 값을 캡처하는 정규 표현식을 정의하십시오. CloudWatch

예를 들어 알고리즘이 훈련 오류 및 검증 오류에 대해 다음과 같은 지표를 내보낸다고 가정해 보겠습니다.

Train_error=0.138318; Valid_error=0.324557;

에서 CloudWatch 두 메트릭을 모두 모니터링하려는 경우 지표 정의 사전은 다음 예와 같아야 합니다.

[ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]

앞의 예제에서 정의한 train:error 지표의 regex에서 regex의 첫 부분은 정확한 텍스트 "Train_error="를 찾고, (.*?); 표현식은 첫 번째 세미콜론 문자가 나타날 때까지 모든 문자를 캡처합니다. 이 표현식에서 괄호가 나오면 regex는 그 괄호 안의 내용을 캡처합니다. .는 모든 문자를 의미하고, *는 0 이상을 의미하며 ?는 첫 번째 ; 문자가 나올 때까지만 캡처하라는 의미입니다.

SageMaker Python SDK를 사용하여 지표 정의하기

객체를 Estimator 초기화할 때 지표 이름 및 정규 표현식 목록을 metric_definitions 인수로 CloudWatch 지정하여 전송할 메트릭을 정의합니다. 예를 들어, train:errorvalidation:error 메트릭을 모두 모니터링하려는 경우 Estimator 초기화는 다음 예와 같습니다. CloudWatch

import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="your-own-image-uri", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge', metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

Amazon SageMaker Python SDK 추정기를 사용한 교육에 대한 자세한 내용은 Sagemaker Python SDK on을 참조하십시오. GitHub

콘솔을 사용하여 지표를 정의하십시오. SageMaker

교육 작업을 생성할 때 SageMaker 콘솔에서 ECR의 자체 알고리즘 컨테이너 옵션을 알고리즘 소스로 선택하는 경우 Metrics 섹션에 지표 정의를 추가하십시오. 다음 스크린샷은 예제 지표 이름과 해당 정규 표현식을 추가한 후의 모습을 보여줍니다.

SageMaker로우레벨 API를 사용하여 메트릭을 정의합니다.

CreateTrainingJob작업에 전달하는 AlgorithmSpecification입력 매개 변수 MetricDefinitions 필드에 지표 이름 및 정규 표현식 목록을 CloudWatch 지정하여 전송할 지표를 정의합니다. 예를 들어 CloudWatch, 에서 train:errorvalidation:error 측정치를 모두 모니터링하려는 경우 다음 예제와 같이 AlgorithmSpecification 하면 됩니다.

"AlgorithmSpecification": { "TrainingImage": your-own-image-uri, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ] }

하위 수준 SageMaker API를 사용하여 교육 작업을 정의하고 실행하는 방법에 대한 자세한 내용은 을 참조하십시오 CreateTrainingJob.

교육 Job 지표 모니터링 (CloudWatch 콘솔)

CloudWatch콘솔에서 교육 작업이 생성하는 지표를 실시간으로 모니터링할 수 있습니다.

교육 작업 지표를 모니터링하려면 (CloudWatch 콘솔)
  1. https://console.aws.amazon.com/cloudwatch 에서 CloudWatch 콘솔을 엽니다.

  2. 지표를 선택한 다음 TrainingJobs/aws/sagemaker/를 선택합니다.

  3. 선택하세요. TrainingJobName

  4. 모든 지표 탭에서 모니터링할 훈련 지표의 이름을 선택합니다.

  5. 그래프로 표시된 지표 탭에서 그래프 옵션을 구성합니다. CloudWatch 그래프 사용에 대한 자세한 내용은 Amazon 사용 CloudWatch 설명서의 그래프 지표를 참조하십시오.

훈련 작업 지표 모니터링(SageMaker 콘솔)

SageMaker콘솔을 사용하여 교육 작업이 생성하는 지표를 실시간으로 모니터링할 수 있습니다.

교육 작업 지표를 모니터링하려면 (SageMaker 콘솔)
  1. https://console.aws.amazon.com/sagemaker 에서 SageMaker 콘솔을 엽니다.

  2. 훈련 작업을 선택한 후 지표를 확인하려는 훈련 작업을 선택합니다.

  3. 선택하세요 TrainingJobName.

  4. 사용자는 모니터 섹션에서 인스턴스 사용률 그래프와 알고리즘 지표를 검토할 수 있습니다.

예제: 훈련 및 검증 곡선 보기

일반적으로 모델을 훈련하는 데이터는 훈련 및 검증 데이터 세트로 분할합니다. 훈련 세트를 사용하여 훈련 데이터 세트에 대한 예측을 수행하는 데 사용하는 모델 파라미터를 훈련합니다. 그런 다음 검증 세트에 대한 예측을 계산하여 모델이 얼마나 잘 수행되고 있는지 테스트합니다. 훈련 작업의 성능을 분석하려면 일반적으로 검증 곡선을 기준으로 훈련 곡선을 그래프로 작성합니다.

시간의 흐름에 따른 훈련 및 검증 세트 둘 다에 대한 정확도를 보여주는 그래프는 모델의 성능 향상에 도움이 될 수 있습니다. 예를 들어, 훈련 정확도가 시간이 흐름에 따라 점점 증가하지만 일부 지점에서 검증 정확도가 떨어지기 시작하면 모델이 과적합일 수 있습니다. 이 문제를 해결하려면 사용자는 정규화를 늘리는 등의 방법으로 모델을 조정합니다.

이 예제에서는 SageMaker 노트북 인스턴스의 mage-classification-full-training 예제 노트북 섹션에서 I 예제를 사용할 수 있습니다. SageMaker 노트북 인스턴스가 없는 경우 의 지침에 따라 새로 만드십시오. 1단계: Amazon SageMaker 노트북 인스턴스 생성 원하는 경우 노트북 예제의 엔드-투-엔드 멀티클래스 이미지 분류 예제를 따라할 수 있습니다. GitHub 또한, 훈련 데이터와 모델 출력을 저장하려면 Amazon S3 버킷도 필요합니다.

훈련 및 검증 오류 곡선을 보려면
  1. https://console.aws.amazon.com/sagemaker 에서 콘솔을 엽니다. SageMaker

  2. 노트북노트북 인스턴스를 차례로 선택합니다.

  3. 사용하려는 노트북 인스턴스를 선택한 후 열기를 선택합니다.

  4. 노트북 인스턴스의 대시보드에서 SageMaker예제를 선택합니다.

  5. Amazon 알고리즘 소개 섹션을 펼친 다음 I mage-classification-fulltraining .ipynb 옆의 사용을 선택합니다.

  6. 사본 생성을 선택합니다. SageMaker 노트북 인스턴스에서 I mage-classification-fulltraining .ipynb 노트북의 편집 가능한 사본을 만듭니다.

  7. 노트북의 모든 셀을 추론 섹션까지 실행합니다. 엔드포인트를 배포하거나 이 예제에 대한 추론을 얻을 필요가 없습니다.

  8. 교육 작업이 시작된 후 https://console.aws.amazon.com/cloudwatch 에서 콘솔을 엽니다. CloudWatch

  9. 메트릭을 선택한 다음 TrainingJobs/aws/sagemaker/를 선택합니다.

  10. 선택하세요. TrainingJobName

  11. 모든 지표 탭에서 노트북에서 생성한 훈련 작업에 대한 train:accuracy 지표와 validation:accuracy 지표를 선택합니다.

  12. 그래프에서 지표 값을 보려는 영역을 선택하여 확대합니다. 다음과 같은 예제와 같은 것이 표시되어야 합니다.