Amazon SageMaker 자동 모델 튜닝 PlatoBlockchain 데이터 인텔리전스로 하이퍼파라미터를 최적화하세요. 수직 검색. 일체 포함.

Amazon SageMaker 자동 모델 튜닝으로 하이퍼파라미터 최적화

기계 학습(ML) 모델이 전 세계를 강타하고 있습니다. 그들의 성능은 올바른 교육 데이터를 사용하고 올바른 모델과 알고리즘을 선택하는 데 달려 있습니다. 하지만 여기서 끝나지 않습니다. 일반적으로 알고리즘은 일부 설계 결정을 ML 실무자가 특정 데이터 및 작업에 채택하도록 연기합니다. 이러한 지연된 설계 결정은 다음과 같이 나타납니다. 하이퍼 파라미터.

그 이름은 무엇을 의미합니까? ML 학습의 결과물인 모델은 크게 학습 과정에서 학습된 매개변수의 집합체로 볼 수 있습니다. 따라서 ML 교육 프로세스를 구성하는 데 사용되는 매개변수를 매개변수 생성을 설명하는 매개변수인 하이퍼 매개변수라고 합니다. 어쨌든 훈련할 에포크 수, 학습 속도, 의사 결정 트리의 최대 깊이 등과 같이 매우 실용적입니다. 그리고 모델의 궁극적인 성능에 큰 영향을 미치기 때문에 우리는 그것들에 많은 관심을 기울입니다.

올바른 주파수를 찾기 위해 라디오 수신기의 손잡이를 돌리는 것처럼 각 하이퍼파라미터는 성능을 최적화하기 위해 신중하게 조정되어야 합니다. 최적의 값을 찾기 위해 하이퍼파라미터 공간을 검색하는 것을 하이퍼 파라미터 튜닝 or 초 매개 변수 최적화 (HPO), 정확한 예측을 제공하는 모델이 생성되어야 합니다.

이 게시물에서는 다음을 사용하여 첫 번째 HPO 작업을 설정하고 실행합니다. Amazon SageMaker 자동 모델 조정 (AMT). 결과를 탐색하는 데 사용할 수 있는 방법에 대해 배우고 HPO 시도 및 하이퍼파라미터 공간 탐색에 대한 통찰력 있는 시각화를 생성합니다!

Amazon SageMaker 자동 모델 조정

ML 실무자로서 세이지메이커 AMT, 다음에 집중할 수 있습니다.

  • 훈련 일자리 제공
  • 작업에 맞는 올바른 목표 메트릭 정의
  • 하이퍼파라미터 검색 공간 범위 지정

SageMaker AMT가 나머지를 처리하므로 인프라, 교육 작업 오케스트레이션 및 하이퍼파라미터 선택 개선에 대해 생각할 필요가 없습니다.

첫 번째 간단한 HPO 작업에 SageMaker AMT를 사용하여 XGBoost 알고리즘을 훈련하고 조정하는 것으로 시작하겠습니다. 우리는 귀하의 AMT 여정이 실용적이고 실용적이기를 원하므로 다음과 같은 예를 공유했습니다. GitHub 저장소. 이 게시물은 1_tuning_of_builtin_xgboost.ipynb 공책.

다음 게시물에서는 최고의 하이퍼파라미터를 찾는 개념을 확장하고 검색 공간에 대한 학습과 모델이 민감한 하이퍼파라미터 범위를 포함할 것입니다. 또한 함께 배우기 위해 일회성 튜닝 활동을 ML 실무자와의 다단계 대화로 전환하는 방법도 보여줍니다. 계속 지켜봐 주세요(의도된 말장난)!

사전 조건

이 게시물은 HPO에 대해 배우고자 하는 모든 사람을 위한 것이며 해당 주제에 대한 사전 지식이 필요하지 않습니다. 하지만 ML 개념과 Python 프로그래밍에 대한 기본적인 지식은 도움이 됩니다. 최고의 학습 경험을 위해 다음을 적극 권장합니다. 노트북의 각 단계 실행 이 게시물을 읽는 것과 동시에. 그리고 노트북의 마지막에는 조정 결과를 생생하게 만드는 대화형 시각화를 시도할 수도 있습니다.

솔루션 개요

SageMaker AMT를 사용하여 첫 번째 HPO 작업을 실행하기 위한 종단 간 설정을 구축할 것입니다. 튜닝 작업이 완료되면 다음을 통해 결과를 탐색하는 데 사용할 수 있는 몇 가지 방법을 살펴봅니다. AWS 관리 콘솔 AWS SDK 및 API를 통해 프로그래밍 방식으로.

먼저, 지금은 조정하지 않고 독립 실행형 교육 작업을 실행하여 환경 및 SageMaker 교육에 익숙해집니다. 우리는 XGBoost 알고리즘으로 제공되는 많은 알고리즘 중 하나를 사용합니다. SageMaker 내장 알고리즘 (교육 스크립트가 필요하지 않습니다!).

SageMaker 교육이 다음과 같은 방식으로 작동하는 방식을 확인합니다.

  • 인스턴스 시작 및 중지
  • 필요한 컨테이너를 제공합니다.
  • 교육 및 검증 데이터를 인스턴스에 복사합니다.
  • 교육 실행
  • 메트릭 및 로그 수집
  • 학습된 모델 수집 및 저장

그런 다음 AMT로 이동하여 HPO 작업을 실행합니다.

  • AMT로 튜닝 작업을 설정하고 시작합니다.
  • 하이퍼파라미터 공간에서 최적의 값에 대해 자세히 알아볼 수 있도록 각 훈련 작업에 대한 자세한 성능 메트릭과 메타데이터를 추출하는 데 사용할 수 있는 방법을 자세히 살펴봅니다.
  • 시험 결과를 보는 방법을 알려드립니다.
  • 하이퍼파라미터 공간에 대한 귀중한 통찰력을 나타내는 일련의 차트에서 데이터를 시각화하는 도구를 제공합니다.

SageMaker 내장 XGBoost 알고리즘 교육

모든 것은 모델 훈련으로 시작됩니다. 그렇게 함으로써 SageMaker 교육이 어떻게 작동하는지 이해할 수 있습니다.

우리는 SageMaker가 제공하는 속도와 사용 편의성을 활용하고자 합니다. 내장 알고리즘. 훈련을 시작하기 위한 몇 가지 단계만 있으면 됩니다.

  1. 데이터 준비 및 로드 – XGBoost에 대한 입력으로 데이터 세트를 다운로드 및 준비하고 아마존 단순 스토리지 서비스 (Amazon S3) 버킷.
  2. 기본 제공 알고리즘의 이미지 URI를 선택합니다. – SageMaker는 이 URI를 사용하여 훈련 컨테이너를 가져옵니다. 우리의 경우에는 바로 사용할 수 있는 XGBoost 훈련 스크립트가 포함되어 있습니다. 여러 알고리즘 버전이 지원됩니다..
  3. 하이퍼파라미터 정의 – SageMaker는 다음을 정의하는 인터페이스를 제공합니다. 하이퍼 파라미터 우리의 내장 알고리즘을 위해. 이는 오픈 소스 버전에서 사용되는 것과 동일한 하이퍼파라미터입니다.
  4. 추정기 구성 – 인스턴스 유형 및 인스턴스 수와 같은 훈련 매개변수를 정의합니다.
  5. fit() 함수 호출 – 교육 작업을 시작합니다.

다음 다이어그램은 이러한 단계가 함께 작동하는 방식을 보여줍니다.

데이터 제공

ML 교육을 실행하려면 데이터를 제공해야 합니다. Amazon S3를 통해 교육 및 검증 데이터를 SageMaker에 제공합니다.

이 예에서는 단순성을 위해 SageMaker 기본 버킷을 사용하여 데이터를 저장합니다. 그러나 다음 값을 원하는 대로 자유롭게 사용자 지정할 수 있습니다.

sm_sess = sagemaker.session.Session([..])

BUCKET = sm_sess.default_bucket()
PREFIX = 'amt-visualize-demo'
output_path = f's3://{BUCKET}/{PREFIX}/output'

노트북에서 공개 데이터 세트를 사용하고 데이터를 로컬에 저장합니다. data 예배 규칙서. 그런 다음 교육 및 검증 데이터를 Amazon S3에 업로드합니다. 나중에 이러한 위치에 대한 포인터를 정의하여 SageMaker Training에 전달합니다.

# acquire and prepare the data (not shown here)
# store the data locally
[..]
train_data.to_csv('data/train.csv', index=False, header=False)
valid_data.to_csv('data/valid.csv', index=False, header=False)
[..]
# upload the local files to S3
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/train/train.csv')).upload_file('data/train.csv')
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/valid/valid.csv')).upload_file('data/valid.csv')

이 게시물에서는 HPO 소개에 집중합니다. 설명을 위해 특정 데이터 세트와 작업을 사용하여 객관적 메트릭의 측정값을 얻은 다음 하이퍼파라미터 선택을 최적화하는 데 사용할 수 있습니다. 그러나 전체 게시물의 경우 데이터나 작업이 중요하지 않습니다. 완전한 그림을 제시하기 위해 우리가 하는 일을 간략하게 설명하겠습니다.
필기 숫자 데이터 세트의 광학 인식 [1] Scikit-learn을 통해. XGBoost는 구조화된 데이터를 위한 탁월한 알고리즘이며 Digits 데이터 세트에도 적용할 수 있습니다. 값은 다음 예에서와 같이 8×8 이미지입니다.
0 a
5
4.

Amazon SageMaker 자동 모델 튜닝 PlatoBlockchain 데이터 인텔리전스로 하이퍼파라미터를 최적화하세요. 수직 검색. 일체 포함.

XGBoost 이미지 URI를 선택합니다.

기본 제공 알고리즘(XGBoost)을 선택한 후 이미지 URI를 검색하고 SageMaker에 전달하여 교육 인스턴스에 로드해야 합니다. 이 단계에서는 다음을 검토합니다. 사용 가능한 버전. 여기에서는 최신 버전의 알고리즘을 제공하는 버전 1.5.1을 사용하기로 결정했습니다. 작업에 따라 ML 실무자는 예를 들어 데이터 준비 단계를 포함하는 자체 교육 스크립트를 작성할 수 있습니다. 그러나 이것은 우리의 경우에는 필요하지 않습니다.

자신만의 교육 스크립트를 작성하고 싶다면 계속 지켜봐 주십시오. 다음 게시물에서 다룰 것입니다! 고유한 사용자 지정 교육 스크립트를 사용하여 SageMaker 교육 작업을 실행하는 방법을 보여드리겠습니다.

지금은 알고리즘, AWS 리전 및 버전 번호를 지정하여 올바른 이미지 URI가 필요합니다.

xgboost_container = sagemaker.image_uris.retrieve('xgboost', region, '1.5-1')

그게 다야. 이제 XGBoost 알고리즘에 대한 참조가 있습니다.

하이퍼파라미터 정의

이제 하이퍼파라미터를 정의합니다. 이러한 값은 모델이 학습되는 방식을 구성하고 궁극적으로 우리가 측정하는 목표 지표(예: 정확도)에 대해 모델이 수행하는 방식에 영향을 미칩니다. 다음 코드 블록은 SageMaker에만 국한되지 않습니다. 우리는 실제로 오픈 소스 버전 SageMaker에서 제공하고 SageMaker에 최적화된 XGBoost의

이러한 각 하이퍼파라미터는 구성 및 조정이 가능하지만 객관적 지표는 multi:softmax 데이터 세트와 해결하려는 문제 유형에 따라 결정됩니다. 우리의 경우 Digits 데이터 세트에는 여러 레이블이 포함되어 있습니다(손으로 쓴 숫자의 관찰은 0 or 1,2,3,4,5,6,7,8,9), 이는 다중 클래스 분류 문제임을 의미합니다.

hyperparameters = {
    'num_class': 10,
    'max_depth': 5,
    'eta':0.2,
    'alpha': 0.2,
    'objective':'multi:softmax',
    'eval_metric':'accuracy',
    'num_round':200,
    'early_stopping_rounds': 5
}

다른 하이퍼파라미터에 대한 자세한 내용은 다음을 참조하십시오. XGBoost 하이퍼 파라미터.

추정기 구성

SageMaker 교육을 위한 상위 수준 인터페이스인 추정기 객체에서 교육을 구성합니다.

다음으로 훈련할 인스턴스 수, 인스턴스 유형(CPU 기반 또는 GPU 기반) 및 연결된 스토리지의 크기를 정의합니다.

estimator = sagemaker.estimator.Estimator(
    image_uri=xgboost_container, 
    hyperparameters=hyperparameters,
    role=role,
    instance_count=1, 
    instance_type='ml.m5.large', 
    volume_size=5, # 5 GB 
    output_path=output_path
)

이제 시작하는 데 필요한 인프라 구성이 있습니다. 나머지는 SageMaker 교육에서 처리합니다.

fit() 함수 호출

이전에 Amazon S3에 업로드한 데이터를 기억하십니까? 이제 이에 대한 참조를 만듭니다.

s3_input_train = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/train', content_type='csv')
s3_input_valid = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/valid', content_type='csv')

전화 fit() 교육을 시작합니다. 방금 생성한 훈련 데이터에 대한 참조를 전달하여 SageMaker 훈련이 훈련 및 검증 데이터를 가리키도록 합니다.

estimator.fit({'train': s3_input_train, 'validation': s3_input_valid})

나중에 HPO를 실행하기 위해 실제로 호출할 필요가 없습니다. fit() 여기. 나중에 HPO에 대한 추정기 객체가 필요하고 HPO 작업 생성으로 바로 이동할 수 있습니다. 그러나 우리는 SageMaker Training에 대해 배우고 단일 교육 작업을 실행하는 방법을 알고 싶기 때문에 여기에서 호출하고 출력을 검토합니다.

학습이 시작되면 다음 스크린샷과 같이 셀 아래에 출력이 표시되기 시작합니다. 출력은 다음에서 사용할 수 있습니다. 아마존 클라우드 워치 이 노트에서도 마찬가지입니다.

검은색 텍스트는 SageMaker 자체의 로그 출력으로, 인스턴스 시작 및 교육 이미지 로드와 같은 교육 오케스트레이션과 관련된 단계를 보여줍니다. 파란색 텍스트는 교육 인스턴스 자체에서 직접 출력됩니다. 교육 데이터를 로드하고 구문 분석하는 과정을 관찰하고 인스턴스에서 실행되는 교육 스크립트에서 직접 교육 진행 상황과 목표 메트릭의 개선을 시각적으로 확인할 수 있습니다.

Jupyter Notebook의 fit() 함수 출력

또한 출력 작업이 끝나면 훈련 기간(초)과 청구 가능한 시간(초)이 표시됩니다.

마지막으로 SageMaker가 훈련 모델을 추정기 객체에 정의된 S3 출력 경로에 업로드하는 것을 볼 수 있습니다. 모델은 추론을 위해 배포할 준비가 되었습니다.

향후 게시물에서는 자체 훈련 컨테이너를 생성하고 내보낼 훈련 지표를 정의할 것입니다. SageMaker가 교육을 위해 어떤 컨테이너를 전달하는지에 관계없이 어떻게 작동하는지 확인할 수 있습니다. 이것은 내장된 알고리즘으로 빠르게 시작하고 나중에 자신만의 맞춤 학습 스크립트를 전달하기로 결정할 때 매우 유용합니다!

현재 및 이전 교육 작업 검사

지금까지 우리는 노트북에서 코드로 작업하고 교육 작업을 SageMaker에 제출했습니다. 관점을 전환하고 SageMaker 콘솔에서 이것이 어떻게 보이는지 확인하기 위해 잠시 노트북을 그대로 두십시오.

SageMaker 교육 작업의 콘솔 보기

SageMaker는 실행한 교육 작업, 하이퍼파라미터, 알고리즘, 데이터 입력, 청구 가능 시간 및 결과와 같은 구성에 대한 기록을 유지합니다. 이전 스크린샷의 목록에는 XGBoost에 대해 필터링된 가장 최근 훈련 작업이 표시됩니다. 강조 표시된 교육 작업은 노트북에서 방금 교육한 작업으로 이전에 출력을 본 작업입니다. 더 많은 정보를 얻기 위해 이 개별 교육 작업에 대해 살펴보겠습니다.

다음 스크린샷은 교육 작업의 콘솔 보기를 보여줍니다.

단일 SageMaker 교육 작업의 콘솔 보기

셀 출력으로 받은 정보를 fit() 추정기에서 정의한 매개변수 및 메타데이터와 함께 SageMaker 콘솔 내의 개별 교육 작업에서 기능을 수행합니다.

이전에 본 훈련 인스턴스의 로그 출력을 상기하십시오. 여기에서도 훈련 작업의 로그에 액세스할 수 있습니다. 모니터 섹션 및 선택 로그 보기.

학습 작업의 모니터링 탭 콘솔 보기

이것은 CloudWatch 내부의 인스턴스 로그를 보여줍니다.

CloudWatch에서 교육 인스턴스 로그의 콘솔 보기

또한 학습 작업을 위해 노트북에 지정한 하이퍼파라미터를 기억하십시오. 교육 작업의 동일한 UI에서도 여기에서 볼 수 있습니다.

SageMaker 교육 작업의 하이퍼파라미터 콘솔 보기

실제로 교육 작업 및 추정기에 대해 이전에 지정한 세부 정보 및 메타데이터는 SageMaker 콘솔의 이 페이지에서 찾을 수 있습니다. 사용된 교육 컨테이너, 교육 및 유효성 검사 데이터 세트의 위치와 같이 교육에 사용된 설정에 대한 유용한 기록이 있습니다.

이 시점에서 이것이 정확히 하이퍼파라미터 최적화와 관련된 이유가 무엇인지 물을 수 있습니다. 관심이 있는 HPO 시험을 검색, 검사 및 더 깊이 파고들 수 있기 때문입니다. 아마도 최상의 결과를 보인 시험이나 흥미로운 행동을 보이는 시험일 것입니다. 우리는 당신이 "흥미롭다"고 정의한 것을 당신에게 맡길 것입니다. 교육 작업을 검사하기 위한 공통 인터페이스를 제공하며 SageMaker Search와 함께 사용할 수 있습니다.

SageMaker AMT가 HPO 작업을 오케스트레이션하지만 HPO 평가판은 모두 개별 SageMaker 교육 작업으로 시작되며 이와 같이 액세스할 수 있습니다.

교육을 다뤘으니 튜닝을 해봅시다!

SageMaker 내장 XGBoost 알고리즘 교육 및 튜닝

XGBoost 모델을 조정하기 위해 기존 하이퍼 매개변수를 재사용하고 탐색하려는 값의 범위를 정의합니다. 하이퍼파라미터 검색 공간 내에서 탐색의 경계를 확장하는 것으로 생각하세요. 튜닝 작업은 검색 공간에서 샘플링하고 새로운 값 조합에 대한 교육 작업을 실행합니다. 다음 코드는 SageMaker AMT가 샘플링해야 하는 하이퍼파라미터 범위를 지정하는 방법을 보여줍니다.

from sagemaker.tuner import IntegerParameter, ContinuousParameter, HyperparameterTuner

hpt_ranges = {
    'alpha': ContinuousParameter(0.01, .5),
    'eta': ContinuousParameter(0.1, .5),
    'min_child_weight': ContinuousParameter(0., 2.),
    'max_depth': IntegerParameter(1, 10)
}

개별 하이퍼파라미터의 범위는 다음과 같이 유형별로 지정됩니다. 연속 매개변수. 이러한 매개변수 범위 선택에 대한 자세한 정보 및 팁은 다음을 참조하십시오. XGBoost 모델 조정.

아직 실험을 실행하지 않았기 때문에 하이퍼파라미터에 적합한 값의 범위를 알지 못합니다. 따라서 우리는 알고리즘에 대한 지식과 내장 알고리즘의 하이퍼파라미터 문서를 사용하여 교육받은 추측으로 시작합니다. 검색 공간을 정의하기 위한 시작점을 정의합니다.

그런 다음 정의된 범위의 하이퍼파라미터에서 튜닝 작업 샘플링을 실행합니다. 결과적으로 어떤 하이퍼파라미터 범위가 좋은 결과를 내는지 알 수 있습니다. 이 지식을 사용하여 사용할 하이퍼파라미터 범위를 좁히거나 넓혀서 검색 공간의 경계를 세분화할 수 있습니다. 결과를 조사하고 시각화하는 다음 및 마지막 섹션에서 시험에서 학습하는 방법을 보여줍니다.

다음 포스트에서 우리는 여정을 계속하고 더 깊이 파고들 것입니다. 또한 검색 공간을 탐색하는 데 사용할 수 있는 몇 가지 전략이 있음을 배웁니다. 이러한 다양한 전략을 비교하면서 후속 HPO 작업을 실행하여 하이퍼파라미터에 대해 훨씬 더 성능이 좋은 값을 찾을 것입니다. 또한 SageMaker AMT로 웜 스타트를 실행하여 이전에 탐색한 검색 공간에서 얻은 지식을 초기 경계 너머 탐색에서 사용하는 방법도 살펴보겠습니다.

이 게시물에서는 좋은 출발점이 될 가능성이 있는 베이지안 검색 전략을 사용하여 단일 HPO 작업의 결과를 분석하고 시각화하는 방법에 중점을 둡니다.

연결된 노트북을 따라가는 경우 단일 내장 XGBoost 교육 작업에 사용한 것과 동일한 추정기를 전달한다는 점에 유의하십시오. 이 추정기 개체는 AMT가 생성하는 새 훈련 작업에 대한 템플릿 역할을 합니다. 그런 다음 AMT는 우리가 정의한 범위 내에서 하이퍼파라미터를 변경합니다.

목표 측정항목을 최대화하고 싶다고 지정하면 validation:accuracy, 우리는 SageMaker AMT에게 교육 인스턴스 로그에서 이러한 메트릭을 찾고 검증 데이터에서 정확도 메트릭을 최대화할 것으로 믿는 하이퍼파라미터 값을 선택하도록 지시합니다. 우리는 적절한 것을 골랐다 XGBoost의 객관적 지표 우리 문서에서.

또한 다음과 같은 병렬화를 활용할 수 있습니다. max_parallel_jobs. 이것은 특히 이전 시도의 결과를 고려(학습)하지 않고 독립적으로 시도를 선택하는 전략의 경우 강력한 도구가 될 수 있습니다. 다음 게시물에서 이러한 다른 전략과 매개 변수를 자세히 살펴보겠습니다. 이 게시물에서는 훌륭한 기본 전략인 베이지안을 사용합니다.

우리는 또한 정의 max_jobs 총 실행 시도 횟수를 정의합니다. 우리의 예에서 벗어나 더 작은 숫자를 사용하여 비용을 절약하십시오.

n_jobs = 50
n_parallel_jobs = 3

tuner_parameters = {
    'estimator': estimator, # The same estimator object we defined above
    'base_tuning_job_name': 'bayesian',
    'objective_metric_name': 'validation:accuracy',
    'objective_type': 'Maximize',
    'hyperparameter_ranges': hpt_ranges,
    'strategy': 'Bayesian',
    'max_jobs': n_jobs,
    'max_parallel_jobs': n_parallel_jobs
}

우리는 다시 한번 전화 fit(), 이전 게시물에서 단일 교육 작업을 시작했을 때와 같은 방식입니다. 그러나 이번에는 estimator 객체가 아닌 튜너 객체에 있습니다. 이렇게 하면 튜닝 작업이 시작되고 AMT가 교육 작업을 시작합니다.

tuner = HyperparameterTuner(**tuner_parameters)
tuner.fit({'train': s3_input_train, 'validation': s3_input_valid}, wait=False)
tuner_name = tuner.describe()['HyperParameterTuningJobName']
print(f'tuning job submitted: {tuner_name}.')

다음 다이어그램은 SageMaker AMT와 함께 HPO를 포함하여 이전 아키텍처를 확장합니다.

SageMaker AMT를 사용한 SageMaker 교육 및 하이퍼파라미터 최적화 개요

HPO 작업이 제출되었음을 확인합니다. 시행 횟수에 따라 다음과 같이 정의됩니다. n_jobs 병렬화 수준에 따라 다소 시간이 걸릴 수 있습니다. 이 예의 경우 병렬화 수준이 30인 경우에만 50회 시도하는 데 최대 3분이 걸릴 수 있습니다.

tuning job submitted: bayesian-221102-2053.

이 조정 작업이 완료되면 SageMaker 콘솔에서 사용할 수 있는 정보를 살펴보겠습니다.

콘솔에서 AMT 작업 조사

다음을 선택하여 SageMaker 콘솔에서 튜닝 작업을 찾아보겠습니다. 트레이닝 탐색 창에서 초매개변수 조정 작업. 그러면 다음 스크린샷과 같이 AMT 작업 목록이 표시됩니다. 여기서 우리는 우리의 bayesian-221102-2053 조정 작업이 완료되었음을 확인합니다.

하이퍼파라미터 조정 작업 페이지의 콘솔 보기. 이미지는 튜닝 항목 1개가 포함된 튜닝 작업의 목록 보기를 보여줍니다.

이 HPO 작업의 결과를 자세히 살펴보겠습니다.

우리는 프로그래밍 방식으로 결과를 추출하는 방법을 탐색했습니다. 수첩. 먼저 다음을 통해 SageMaker Python SDK, SageMaker에 전용 API를 제공하는 더 높은 수준의 오픈 소스 Python 라이브러리입니다. 그럼 통해 보토3, SageMaker 및 기타 AWS 서비스에 대한 하위 수준 API를 제공합니다.

SageMaker Python SDK를 사용하여 HPO 작업의 결과를 얻을 수 있습니다.

sagemaker.HyperparameterTuningJobAnalytics(tuner_name).dataframe()[:10]

이를 통해 다음 스크린샷과 같이 Pandas DataFrame에서 각 시도의 결과를 분석할 수 있었습니다.

HPO 작업에 대해 실행된 트레일의 결과 및 메타데이터를 보여주는 Jupyter Notebook의 Pandas 테이블

이제 관점을 다시 전환하여 SageMaker 콘솔에서 결과가 어떻게 보이는지 살펴보겠습니다. 그런 다음 사용자 지정 시각화를 살펴보겠습니다.

같은 페이지에서 bayesian-221102-2053 튜닝 작업은 튜닝 작업에 대해 실행된 시도 목록을 제공합니다. 여기서 각 HPO 평가판은 SageMaker 교육 작업입니다. 이전에 단일 XGBoost 모델을 교육하고 SageMaker 콘솔에서 교육 작업을 조사했을 때를 기억하십시오. 우리는 여기서 시련에 대해서도 같은 일을 할 수 있습니다.

시련을 조사하면서 우리는 bayesian-221102-2053-048-b59ec7b4 검증 정확도가 약 89.815%인 최고 성능의 모델을 생성했습니다. 다음을 선택하여 어떤 하이퍼파라미터가 이러한 성능으로 이어졌는지 살펴보겠습니다. 최고의 훈련 직업 탭.

실행된 훈련 작업 목록을 보여주는 단일 조정 작업의 콘솔 보기

평가된 최고의 하이퍼파라미터에 대한 자세한 보기를 볼 수 있습니다.

최상의 학습 작업에 대한 세부 정보를 보여주는 단일 조정 작업의 콘솔 보기

우리는 어떤 하이퍼파라미터 값이 이 우수한 성능으로 이어졌는지 즉시 확인할 수 있습니다. 그러나 우리는 더 알고 싶습니다. 당신은 무엇을 추측할 수 있습니까? 우리는 그것을 본다 alpha 대략 0.052456의 값을 가지며 마찬가지로 eta 0.433495로 설정됩니다. 이는 이러한 값이 제대로 작동했음을 알려주지만 하이퍼 매개변수 공간 자체에 대해서는 거의 알려주지 않습니다. 예를 들어, 0.433495가 eta 테스트된 가장 높은 값이거나 더 높은 값을 선택하여 성장 및 모델 개선의 여지가 있는지 여부입니다.

이를 위해서는 하이퍼파라미터의 다른 값이 어떻게 수행되는지 보기 위해 축소하고 훨씬 더 넓은 시야를 확보해야 합니다. 한 번에 많은 데이터를 보는 한 가지 방법은 HPO 시험의 하이퍼파라미터 값을 차트에 표시하는 것입니다. 그렇게 하면 이러한 값이 상대적으로 어떻게 수행되는지 알 수 있습니다. 다음 섹션에서는 SageMaker에서 이 데이터를 가져와서 시각화합니다.

시험 시각화

SageMaker SDK는 탐색을 위한 데이터를 제공하며 노트북은 이를 엿볼 수 있는 정보를 제공합니다. 그러나 그것을 활용하고 시각화하는 방법에는 여러 가지가 있습니다. 이 게시물에서는 다음을 사용하여 샘플을 공유합니다. Altair 시험에 대한 보다 시각적인 개요를 생성하는 데 사용하는 통계 시각화 라이브러리입니다. 이것들은 amtviz 샘플의 일부로 제공되는 패키지:

from amtviz import visualize_tuning_job
visualize_tuning_job(tuner, trials_only=True)

이러한 시각화의 힘은 시간 경과(x축)에 따른 시험의 검증 정확도(y축)를 플로팅할 때 즉시 분명해집니다. 왼쪽의 다음 차트는 시간 경과에 따른 검증 정확도를 보여줍니다. 시간이 지남에 따라 더 많은 시도를 실행함에 따라 모델 성능이 향상되는 것을 분명히 볼 수 있습니다. 이는 베이지안 전략으로 HPO를 실행한 결과로 예상되는 직접적 결과입니다. 다음 게시물에서는 이것이 다른 전략과 어떻게 비교되는지 확인하고 이것이 모든 전략에 해당될 필요는 없음을 관찰합니다.

HPO 트레일을 보여주는 두 개의 차트. 왼쪽 차트는 시간 경과에 따른 검증 정확도를 보여줍니다. 오른쪽 차트는 검증 정확도 값에 대한 밀도 차트를 보여줍니다.

시간 경과에 따른 전반적인 진행 상황을 검토한 후 이제 하이퍼 매개변수 공간을 살펴보겠습니다.

다음 차트는 y축의 유효성 검사 정확도를 보여줍니다. 각 차트는 다음을 보여줍니다. max_depth, alpha, etamin_child_weight x축에 각각. 전체 HPO 작업을 각 차트에 표시했습니다. 각 포인트는 단일 시도이며 각 차트에는 50개의 시도가 모두 포함되지만 각 하이퍼파라미터에 대해 구분됩니다. 이것은 우리의 최고 성능 시험인 #48이 각 차트에서 정확히 하나의 파란색 점으로 표시됨을 의미합니다(다음 그림에서 강조 표시됨). 다른 모든 49개 시도의 맥락에서 성능을 시각적으로 비교할 수 있습니다. 자, 자세히 살펴 보겠습니다.

매력적인! 하이퍼파라미터 공간에서 정의된 범위의 어떤 영역이 가장 성능이 좋은지 즉시 확인할 수 있습니다! 우리를 되새기며 eta 이제 샘플링 값이 0에 가까울수록 성능이 저하되고 경계선인 0.5에 가까울수록 더 나은 결과가 나온다는 것이 분명해졌습니다. 그 반대가 사실인 것 같습니다. alphamax_depth 보다 제한된 선호 값 세트를 갖는 것으로 보입니다. 보고 max_depth, 베이지안 전략을 사용하여 SageMaker AMT가 과거에 잘 작동했다고 학습한 값을 더 자주 샘플링하도록 지시하는 방법도 확인할 수 있습니다.

y축에 유효성 검사 정확도를 표시하는 XNUMX개의 차트가 있으며 각 차트는 x축에 각각 max_depth, alpha, eta, min_child_weight를 표시합니다. 각 데이터 포인트는 단일 HPO 시험을 나타냅니다.

우리의 eta 값이 0.45를 넘어 오른쪽으로 더 탐색할 가치가 있는지 궁금할 수 있습니다. 계속해서 정확도가 낮아지는 건가요, 아니면 여기에 더 많은 데이터가 필요한 건가요? 이러한 궁금증은 첫 번째 HPO 작업을 실행하는 목적의 일부입니다. 하이퍼파라미터 공간의 어느 영역을 더 탐색해야 하는지에 대한 통찰력을 제공합니다.

더 많은 것을 알고 싶고 이 주제에 대한 소개가 우리만큼 흥분된다면 다음 게시물을 계속 지켜봐 주십시오. 여기에서 다양한 HPO 전략에 대해 더 많이 이야기하고 서로 비교하고 자체 Python 스크립트로 교육을 연습합니다.

정리

HPO 실험을 마친 후 원치 않는 비용이 발생하지 않도록 하려면 접두사가 있는 S3 버킷의 모든 파일을 제거해야 합니다. amt-visualize-demo 그리고 또한 Studio 리소스 종료.

노트북에서 다음 코드를 실행하여 이 게시물에서 모든 S3 파일을 제거합니다.

!aws s3 rm s3://{BUCKET}/amt-visualize-demo --recursive

데이터 세트 또는 모델 아티팩트를 유지하려면 코드의 접두사를 다음과 같이 수정할 수 있습니다. amt-visualize-demo/data 데이터만 삭제하거나 amt-visualize-demo/output 모델 아티팩트만 삭제합니다.

결론

이 게시물에서는 SageMaker 내장 버전의 XGBoost 알고리즘을 사용하여 모델을 훈련하고 조정했습니다. SageMaker AMT와 함께 HPO를 사용함으로써 우리는 이 특정 알고리즘 및 데이터 세트에 대해 잘 작동하는 하이퍼파라미터에 대해 배웠습니다.

우리는 하이퍼파라미터 튜닝 작업의 결과를 검토하는 여러 가지 방법을 보았습니다. 최고의 시도의 하이퍼파라미터를 추출하는 것부터 시작하여 시간이 지남에 따라 시도가 어떻게 진행되었고 어떤 하이퍼파라미터 값이 영향을 미치는지 더 깊이 이해하는 방법도 배웠습니다.

SageMaker 콘솔을 사용하여 개별 교육 실행에 대해 자세히 알아보고 로그를 검토하는 방법도 확인했습니다.

그런 다음 축소하여 모든 시도를 함께 보고 다른 시도 및 하이퍼파라미터와 관련하여 성능을 검토했습니다.

우리는 각 시도의 관찰을 기반으로 하이퍼파라미터 공간을 탐색하여 하이퍼파라미터 값의 작은 변화가 모델 성능에 큰 영향을 미칠 수 있음을 확인했습니다. SageMaker AMT를 사용하면 하이퍼파라미터 최적화를 실행하여 우수한 하이퍼파라미터 값을 효율적으로 찾고 모델 성능을 극대화할 수 있습니다.

앞으로는 SageMaker AMT에서 제공하는 다양한 HPO 전략과 자체 사용자 지정 교육 코드를 사용하는 방법을 살펴보겠습니다. 질문이 있거나 다음 게시물에서 다루어야 할 영역을 제안하고 싶다면 의견을 통해 알려주십시오.

그때까지 우리는 당신과 당신의 모델이 행복한 학습과 튜닝을 기원합니다!

참고자료

인용 :

[1] Dua, D. 및 Graff, C. (2019). UCI 머신 러닝 리포지토리 [http://archive.ics.uci.edu/ml]. 캘리포니아 어바인 : 캘리포니아 대학교, 정보 및 컴퓨터 과학부.


저자 소개

Amazon SageMaker 자동 모델 튜닝 PlatoBlockchain 데이터 인텔리전스로 하이퍼파라미터를 최적화하세요. 수직 검색. 일체 포함.앤드류 엘룰 Amazon Web Services의 솔루션 아키텍트입니다. 그는 독일의 중소기업과 함께 일하고 있습니다. 업무 외 시간에 Andrew는 도보나 자전거를 타고 자연을 탐험하는 것을 즐깁니다.

Amazon SageMaker 자동 모델 튜닝 PlatoBlockchain 데이터 인텔리전스로 하이퍼파라미터를 최적화하세요. 수직 검색. 일체 포함.엘리나 레시크 뮌헨에 위치한 솔루션 아키텍트입니다. 그녀의 초점은 금융 서비스 산업의 기업 고객입니다. 여가 시간에 Elina는 교차 학습 및 달리기를 위해 스페인어로 기타 이론을 배우는 것을 좋아합니다.

Amazon SageMaker 자동 모델 튜닝 PlatoBlockchain 데이터 인텔리전스로 하이퍼파라미터를 최적화하세요. 수직 검색. 일체 포함.마리아노 캠프 Amazon Web Services의 수석 솔루션 아키텍트입니다. 그는 기계 학습에 대해 독일의 금융 서비스 고객과 협력하고 있습니다. 여가 시간에 Mariano는 아내와 함께 하이킹을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습