4단계: 모델 훈련 - 아마존 SageMaker

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

4단계: 모델 훈련

Amazon SageMaker Python SDK는 Amazon Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon EC2) AWS , Amazon Simple Storage Service (Amazon S3) 와 같은 교육 SageMaker 기능과 인프라에 액세스하는 기계 학습 (ML) 수명 주기를 조정하는 동시에 모델을 학습할 수 있는 프레임워크 추정기 및 일반 추정기를 제공합니다. S3). SageMaker 내장 프레임워크 추정기에 대한 자세한 내용은 Amazon SageMaker Python SDK 설명서의 프레임워크를 참조하십시오. 내장 알고리즘에 대한 자세한 내용은 Amazon SageMaker 내장 알고리즘 또는 사전 학습된 모델 사용을 참조하세요.

훈련 알고리즘 선택

데이터 집합에 적합한 알고리즘을 선택하려면 일반적으로 다양한 모델을 평가하여 데이터에 가장 적합한 모델을 찾아야 합니다. 단순화를 위해 이 자습서 전체에서 모델을 사전 평가할 필요 없이 SageMaker 아마존에서 XGBoost 알고리즘 사용 SageMaker 내장 알고리즘을 사용합니다.

작은 정보

표 형식 데이터세트에 적합한 모델을 SageMaker 찾으려면 기계 학습 솔루션을 자동화하는 Amazon SageMaker Autopilot을 사용하십시오. 자세한 정보는 SageMaker 오토파일럿을 참조하세요.

훈련 작업 생성 및 실행

어떤 모델을 사용할지 결정했으면 학습용 추정기 구성을 시작하십시오. SageMaker 이 자습서에서는 일반 추정기에 XGBoost 내장 알고리즘을 사용합니다. SageMaker

모델 훈련 작업을 실행하려면
  1. Amazon SageMaker Python SDK를 가져오고 현재 SageMaker 세션에서 기본 정보를 검색하는 것부터 시작하십시오.

    import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))

    이는 다음 정보를 반환합니다.

    • region— SageMaker 노트북 인스턴스가 실행 중인 현재 AWS 지역.

    • role – 노트북 인스턴스에서 사용하는 IAM 역할.

    참고

    sagemaker.__version__ 실행하여 SageMaker Python SDK 버전을 확인합니다. 이 튜토리얼은 sagemaker>=2.20을 기반으로 합니다. SDK가 오래된 경우 다음 명령을 실행하여 최신 버전을 설치합니다.

    ! pip install -qU sagemaker

    기존 SageMaker Studio 또는 노트북 인스턴스에서 이 설치를 실행하는 경우 버전 업데이트 적용을 완료하려면 커널을 수동으로 새로 고쳐야 합니다.

  2. sagemaker.estimator.Estimator 클래스를 사용하여 XGBoost 추정기를 생성합니다. 다음 예제 코드에서는 XGBoost 추정기의 이름을 xgb_model로 지정합니다.

    from sagemaker.debugger import Rule, ProfilerRule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[ Rule.sagemaker(rule_configs.create_xgboost_report()), ProfilerRule.sagemaker(rule_configs.ProfilerReport()) ] )

    SageMaker 추정기를 구성하려면 다음 파라미터를 지정하십시오.

    • image_uri – 훈련 컨테이너 이미지 URI를 지정합니다. 이 예제에서 SageMaker XGBoost 훈련 컨테이너 URI는 를 사용하여 지정됩니다. sagemaker.image_uris.retrieve

    • role— 사용자를 대신하여 작업을 수행하는 데 SageMaker 사용하는 AWS Identity and Access Management (IAM) 역할 (예: 교육 결과 읽기, Amazon S3에서 모델 아티팩트 호출, Amazon S3에 교육 결과 작성)

    • instance_countinstance_type– 모델 훈련에 사용할 Amazon EC2 ML 컴퓨팅 인스턴스의 유형 및 수입니다. 이 훈련 실습에서는 4개의 CPU, 16GB 메모리, Amazon Elastic Block Store(Amazon EBS) 스토리지 및 높은 네트워크 성능을 가진 단일 ml.m4.xlarge인스턴스를 사용합니다. EC2 컴퓨팅 인스턴스 유형에 대한 자세한 내용은 Amazon EC2 인스턴스 유형을 참조하세요. 청구에 대한 자세한 내용은 Amazon SageMaker 요금을 참조하십시오.

    • volume_size – 훈련 인스턴스에 연결할 EBS 스토리지 볼륨의 크기(GB)입니다. File 모드를 사용하는 경우(기본적으로 File모드가 켜져 있음) 이 모드는 훈련 데이터를 저장할 수 있을 정도로 커야 합니다. 이 파라미터를 지정하지 않으면 기본값은 30입니다.

    • output_path— 모델 아티팩트와 교육 결과를 SageMaker 저장하는 S3 버킷의 경로.

    • sagemaker_session— 교육 작업에서 사용하는 SageMaker API 작업 및 기타 AWS 서비스와의 상호 작용을 관리하는 세션 객체입니다.

    • rules— SageMaker 디버거 내장 규칙 목록을 지정합니다. 이 예제에서 create_xgboost_report()규칙은 훈련 진행 상황 및 결과에 대한 통찰력을 제공하는 XGBoost 보고서를 생성하고, ProfilerReport()규칙은 EC2 컴퓨팅 리소스 사용률에 관한 보고서를 생성합니다. 자세한 정보는 SageMaker 디버거 XGBoost 교육 보고서을 참조하세요.

    작은 정보

    CNN (컨벌루션 신경망) 및 NLP (자연어 처리) 모델과 같은 대형 딥 러닝 모델의 SageMaker 분산 훈련을 실행하려면 데이터 병렬화 또는 모델 병렬화에 Distributed를 사용하십시오. 자세한 정보는 아마존에서의 분산 교육 SageMaker을 참조하세요.

  3. 예측기의 set_hyperparameters메서드를 호출하여 XGBoost 알고리즘의 하이퍼파라미터를 설정합니다. XGBoost 하이퍼파라미터의 전체 목록은 XGBoost 하이퍼파라미터을 참조하세요.

    xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )
    작은 정보

    하이퍼파라미터 최적화 기능을 사용하여 하이퍼파라미터를 조정할 수도 있습니다. SageMaker 자세한 정보는 를 사용하여 자동 모델 튜닝을 수행하십시오. SageMaker 을 참조하세요.

  4. TrainingInput 클래스를 사용하여 훈련을 위한 데이터 입력 흐름을 구성합니다. 다음 예제 코드는 데이터 집합을 훈련, 검증 및 테스트 데이터 집합으로 분할합니다.섹션에서 Amazon S3에 업로드한 훈련 및 검증 데이터 집합을 사용하도록 TrainingInput객체를 구성하는 방법을 보여줍니다.

    from sagemaker.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" )
  5. 모델 훈련을 시작하려면 훈련 및 검증 데이터 집합을 사용하여 추정기의 fit메서드를 호출하세요. wait=True을 설정하면 fit메서드는 진행 로그를 표시하고 훈련이 완료될 때까지 기다립니다.

    xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)

    모델 훈련에 대한 자세한 정보는 Amazon에서 모델 학습시키기 SageMaker을 참조하세요. 이 자습서 훈련 작업에는 최대 10분이 걸릴 수 있습니다.

    훈련 작업이 완료되면 디버거에서 생성한 XGBoost 훈련 보고서와 프로파일링 보고서를 다운로드할 수 있습니다. SageMaker XGBoost 훈련 보고서는 반복에 따른 손실 함수, 기능 중요도, 오차 행렬, 정확도 곡선 및 기타 훈련 통계 결과와 같은 훈련 진행 상황 및 결과에 대한 통찰력을 제공합니다. 예를 들어, XGBoost 훈련 보고서에서 과적합 문제가 있음을 분명히 나타내는 다음과 같은 손실 곡선을 찾을 수 있습니다.

    다음 코드를 실행하여 디버거 훈련 보고서가 생성되는 S3 버킷 URI를 지정하고 보고서가 존재하는지 확인합니다.

    rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive

    디버거 XGBoost 훈련 및 프로파일링 보고서를 현재 WorkSpace에 다운로드하세요.

    ! aws s3 cp {rule_output_path} ./ --recursive

    다음 IPython 스크립트를 실행하여 XGBoost 훈련 보고서의 파일 링크를 가져오세요.

    from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))

    다음 IPython 스크립트는 EC2 인스턴스 리소스 사용률, 시스템 병목 현상 감지 결과 및 python 작업 프로파일링 결과에 대한 요약 및 세부 정보를 보여주는 디버거 프로파일링 보고서의 파일 링크를 반환합니다.

    profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
    작은 정보

    HTML 보고서가 JupyterLab 뷰에 플롯을 렌더링하지 않는 경우 보고서 상단에서 Trust HTML을 선택해야 합니다.

    과적합, 기울기 소멸 등 학습 문제 및 모델 수렴을 방해하는 기타 문제를 식별하려면 SageMaker 디버거를 사용하여 ML 모델을 프로토타이핑하고 학습하는 동안 자동화된 조치를 취하십시오. 자세한 정보는 Amazon SageMaker 디버거를 사용하여 모델 성능을 디버깅하고 개선하십시오.을 참조하세요. 모델 파라미터에 대한 완전한 분석을 찾으려면 Amazon SageMaker Debugger를 사용한 설명 가능성 예제 노트북을 참조하십시오.

이제 훈련된 XGBoost 모델이 생겼습니다. SageMaker 모델 아티팩트를 S3 버킷에 저장합니다. 모델 아티팩트의 위치를 찾으려면 다음 코드를 실행하여 xgb_model추정기의 model_data 속성을 인쇄하세요.

xgb_model.model_data
작은 정보

ML 라이프사이클의 각 단계 (데이터 수집, 모델 교육 및 조정, 예측을 위해 배포된 ML 모델 모니터링) 에서 발생할 수 있는 편향을 측정하려면 Clarify를 사용하십시오 SageMaker . 자세한 정보는 모델 설명 가능성을 참조하세요. 예제는 Clarify를 사용한 SageMaker 공정성 및 설명 가능성 end-to-end 예제 노트북을 참조하세요.