Amazon Web Services 한국 블로그

Amazon SageMaker 모델 학습시 관련 지표에 대한 손쉬운 모니터링과 시각화

데이터 과학자와 개발자는 이제 Amazon SageMaker에서 기계 학습 모델을 학습하는 동안 계산된 지표를 쉽고 빠르게 액세스하고 모니터링하고 시각화할 수 있습니다. 여러분들은 Amazon SageMaker용 AWS 관리 콘솔 또는 Python SDK API를 사용하여 추적할 지표를 지정할 수 있습니다. 모델 학습이 시작되면 Amazon SageMaker는 손실 곡선 및 정확도 곡선과 같은 시계열 곡선을 시각화하기 위해 지정된 지표를 자동으로 실시간 모니터링하고 Amazon CloudWatch 콘솔에 스트리밍합니다. 또한 Python SDK API를 사용하여 프로그래밍 방식으로 지표에 액세스할 수도 있습니다.

모델 학습은 모델이 학습 데이터 세트에서 예를 제시함으로써 예측을 하도록 가르치는 반복적 과정입니다. 일반적으로 학습 알고리즘은 모델이 잘 학습하고 있는지 여부를 진단하는 데 유용한 학습 손실 및 예측 정확도와 같은 몇 가지 지표를 계산하고 발견된 적 없는 데이터에 대한 예측을 하기 위해 일반화합니다. 이 진단은 모델의 하이퍼파라미터를 튜닝하거나 모델이 프로덕션 환경에 배포될 가능성이 있는지 평가할 때 특히 유용합니다.

이제 Amazon SageMaker에서 이러한 지표를 모니터링하고 시각화하는 방법을 보여 주는 몇 가지 예를 살펴보겠습니다.

지표를 기본 지원하는 Amazon SageMaker 알고리즘

모든 Amazon SageMaker 기본 제공 알고리즘은 다양한 모델 학습, 평가 및 검증 지표를 계산하고 생성합니다. 예를 들어 Amazon SageMaker Object2Vec 알고리즘validation:cross_entropy 지표를 생성합니다. Object2Vec은 단어, 구, 문장과 같은 낮은 차원 밀도의 임베딩을 배울 수 있는 관리형 학습 알고리즘입니다. 또한 벡터 공간에 있는 두 개의 임베딩이 얼마나 유사한지를 학습합니다. 이 기법은 텍스트의 특정 문장 쌍이 유사한지 여부를 평가할 때 응용이 가능합니다. 이 알고리즘을 통해 생성되는 validation:cross_entropy 지표는 모델에 의한 예측이 검증 데이터 세트의 실제 레이블에서 벗어나는 정도를 측정합니다. 모델이 잘 학습되는 경우 모델 학습이 진행되면서 cross_entropy가 감소합니다.

이제 AWS Management Console에서의 작업을 단계별로 살펴보겠습니다. 또한 샘플 노트북의 코드 조각을 사용하여 Amazon SageMaker Object2Vec 모델을 학습시키는 방법을 설명합니다.

1단계: Amazon SageMaker에서 학습 작업 시작

샘플 노트북에는 학습 작업을 생성하는 방법에 대한 단계별 지침이 포함되어 있습니다. 학습 알고리즘에 의해 생성되는 모든 지표는 AWS Management Console에서 확인할 수 있습니다. AWS Management Console에서 Amazon SageMaker 콘솔을 열고 왼쪽 탐색 창에서 Training Jobs(학습 작업)를 선택합니다.  그런 다음 학습 작업 이름을 선택하여 학습 작업의 세부 정보 페이지를 엽니다.

학습 작업 세부 정보 페이지에서 Metrics(지표) 섹션이 나타날 때까지 아래로 스크롤하여 학습 알고리즘에 의해 Amazon CloudWatch Logs 및 Amazon CloudWatch Metrics 스트림에 게시된 지표를 모두 찾습니다. 각 지표 옆에 표시되는 정규식 패턴을 사용하여 Amazon SageMaker가 생성한 로그를 Amazon CloudWatch Logs를 통해 빠르게 분석하고 필터링할 수 있습니다.

다음 단계에서는 로그 파일에서 수동으로 구문 분석해야 하는 번거로움 없이 Amazon CloudWatch 지표 대시보드에서 바로 지표를 모니터링하는 방법을 설명합니다.

2단계: Amazon CloudWatch 지표 대시보드에 접속하여 지표 모니터링 및 시각화

이제 학습 작업 세부 정보 페이지에 학습 알고리즘에서 생성되는 지표에 대한 Amazon CloudWatch 지표 대시보드의 직접 링크가 표시됩니다.

링크를 선택하여 Amazon CloudWatch 지표 대시보드로 이동합니다. 이 대시보드를 사용하여 그래프 작성과 시각화를 위한 validation:cross_entropy 지표를 선택합니다.

3단계: Amazon SageMaker Python SDK API를 사용하여 지표 시각화

Amazon SageMaker Jupyter 노트북에서 Amazon SageMaker Python SDK API를 사용하여 지표를 인라인 방식으로 시각화할 수도 있습니다. 다음은 샘플 코드 조각입니다.

%matplotlib inline
from sagemaker.analytics import TrainingJobAnalytics

training_job_name = '<insert job name>'
metric_name = 'validation:cross_entropy'

metrics_dataframe = TrainingJobAnalytics(training_job_name=training_job_name,metric_names=[metric_name]).dataframe()
plt = metrics_dataframe.plot(kind='line', figsize=(12,5), x='timestamp', y='value', style='b.', legend=False)
plt.set_ylabel(metric_name);

4단계: DescribeTrainingJob API 작업 사용

지표의 실행 값을 시각화하는 것 외에, DescribeTrainingJob API 작업을 사용하여 지표의 최종 값에 액세스할 수도 있습니다.

사용자의 자체 학습 알고리즘의 지표 모니터링 및 시각화

Amazon SageMaker에서 TensorFlow 또는 PyTorch 컨테이너를 비롯한 기본 제공 딥러닝 프레임워크 컨테이너 중 하나를 사용하거나 사용자의 자체 컨테이너를 실행하여 모델 학습을 수행하는 경우, 이제 Amazon SageMaker에서 모니터링하고 Amazon CloudWatch 지표 대시보드에 게시할 지표를 손쉽게 지정할 수 있습니다.

Amazon SageMaker 콘솔 사용

콘솔에서 모델 학습 작업을 생성하는 동안 이제 알고리즘 또는 모델 학습 스크립트가 로그에 게시할 정규식 패턴을 지정할 수 있습니다. Amazon SageMaker는 로그의 지표를 자동으로 구문 분석하여 그래프 작성과 시각화를 위해 Amazon CloudWatch 지표 대시보드에 게시합니다.

AWS SDK 사용

또한 CreateTrainingJob API 작업을 사용하여 학습 작업을 생성할 때 추적할 지표에 대해 MetricsDefinition을 추가할 수도 있습니다.

trainingJobParams = {
   "AlgorithmSpecification": { 
      "TrainingImage": "string",
      "TrainingInputMode": "string"
   }, 
...............
...............
MetricDefinitions: [
  {
   "Name": "validation:rmse",
   "Regex": ".*\\[[0-9]+\\].*#011validation-rmse:(\\S+)"
  },
  {
   "Name": "validation:auc",
   "Regex": ".*\\[[0-9]+\\].*#011validation-auc:(\\S+)"
  },
  {
   "Name": "train:auc",
   "Regex": ".*\\[[0-9]+\\]#011train-auc:(\\S+).*"
  }
 ]
...............
...............
}

지금까지 Amazon SageMaker에서 지표를 모니터링하고 시각화하는 방법을 예제를 통해 살펴보았습니다. 이제 여러분들은 앞서 언급한 샘플 노트북을 사용해보거나 여러분이 직접 작성한 학습 알고리즘에 지표 시각화를 추가해볼 수 있습니다. 개발자 가이드에서 기본 제공 Amazon SageMaker 알고리즘에 의해 계산되는 지표의 전체 목록을 참조하거나 개발자 포럼에 질문을 개시할 수도 있습니다. 그럼 즐거운 모델링이 되시기 바랍니다!

Sifei Li는 Amazon AI의 소프트웨어 엔지니어로, Amazon Machine Learning 플랫폼을 구축하고 있으며 Amazon SageMaker의 출시 팀에도 참여했습니다.

 

 

 

 

 

Sumit Thakur는 AWS Machine Learning 플랫폼의 수석 제품 관리자로, 고객이 클라우드에서 기계 학습을 쉽게 시작할 수 있도록 지원하는 제품에 관한 작업을 매우 좋아합니다. 그는 Amazon SageMaker 및 AWS Deep Learning AMI의 제품 관리자입니다. 여가 시간에는 자연을 접하고 공상 과학 TV 시리즈를 시청하는 것을 좋아합니다.

 

 

 

 

Andrew Packer는 Amazon AI의 소프트웨어 엔지니어로, 일반 사용자를 위한 확장성이 뛰어난 분산 기계 학습 인프라스트럭처를 구축하는 데 전념하고 있습니다. 여가 시간에는 기타 연주와 태평양 북서부 지역 탐험을 즐깁니다.

 

 

 

 

이 글은 AWS Machine Learning Blog의 Easily monitor and visualize metrics while training models on Amazon SageMaker의 한국어 번역으로 정도현 AWS 테크니컬 트레이너가 감수하였습니다.