모델 훈련 - Amazon SageMaker AI

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

모델 훈련

이 단계에서는 훈련 알고리즘을 선택하고 모델에 대한 훈련 작업을 실행합니다. Amazon SageMaker PythonSDK은 모델을 훈련시키는 동시에 훈련을 위한 SageMaker AI 기능과 Amazon Elastic Container Registry(Amazon ), Amazon Elastic Compute Cloud(Amazon ECR), EC2Amazon Simple Storage Service(Amazon S3)와 같은 AWS 인프라에 액세스하는 기계 학습(ML) 수명 주기를 오케스트레이션하는 프레임워크 예측기 및 일반 예측기를 제공합니다. SageMaker AI 기본 제공 프레임워크 예측기에 대한 자세한 내용은 Amazon SageMaker Python SDK 설명서의 프레임워크를 참조하세요. 내장 알고리즘에 대한 자세한 내용은 Amazon의 기본 제공 알고리즘 및 사전 훈련된 모델 SageMaker을 참조하세요.

훈련 알고리즘 선택

데이터 집합에 적합한 알고리즘을 선택하려면 일반적으로 다양한 모델을 평가하여 데이터에 가장 적합한 모델을 찾아야 합니다. 간소화를 위해 SageMaker AI XGBoost Amazon SageMaker AI를 사용한 알고리즘 기본 제공 알고리즘은 모델의 사전 평가 없이이 자습서 전체에서 사용됩니다.

작은 정보

SageMaker AI가 테이블 형식의 데이터 세트에 적합한 모델을 찾으려면 기계 학습 솔루션을 자동화하는 Amazon SageMaker Autopilot을 사용하세요. 자세한 내용은 SageMaker Autopilot 단원을 참조하십시오.

훈련 작업 생성 및 실행

사용할 모델을 파악한 후 훈련을 위한 SageMaker AI 예측기 구성을 시작합니다. 이 자습서에서는 SageMaker AI 일반 예측기에 XGBoost 내장된 알고리즘을 사용합니다.

모델 훈련 작업을 실행하려면
  1. Amazon SageMaker PythonSDK을 가져오고 현재 SageMaker AI 세션에서 기본 정보를 검색하여 시작합니다.

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

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

    • region - SageMaker AI 노트북 인스턴스가 실행 중인 현재 AWS 리전입니다.

    • role - 노트북 인스턴스에서 사용하는 IAM 역할입니다.

    참고

    를 실행하여 SageMaker Python SDK 버전을 확인합니다sagemaker.__version__. 이 튜토리얼은 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 AI 예측기를 구성하려면 다음 파라미터를 지정합니다.

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

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

    • instance_countinstance_type - 모델 훈련에 사용할 Amazon EC2 ML 컴퓨팅 인스턴스의 유형 및 수입니다. 이 훈련 연습에서는 4GB, CPUs16GB의 메모리, Amazon Elastic Block Store(AmazonEBS) 스토리지, 높은 네트워크 성능을 갖춘 단일 ml.m4.xlarge 인스턴스를 사용합니다. EC2 컴퓨팅 인스턴스 유형에 대한 자세한 내용은 Amazon EC2 인스턴스 유형을 참조하세요. 결제에 대한 자세한 내용은 Amazon SageMaker AI 요금을 참조하세요.

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

    • output_path - SageMaker AI가 모델 아티팩트와 훈련 결과를 저장하는 S3 버킷의 경로입니다.

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

    • rules - SageMaker Debugger 기본 제공 규칙 목록을 지정합니다. 이 예제에서 create_xgboost_report() 규칙은 훈련 진행 상황 및 결과에 대한 인사이트를 제공하는 XGBoost 보고서를 생성하고, ProfilerReport() 규칙은 EC2 컴퓨팅 리소스 사용률에 대한 보고서를 생성합니다. 자세한 내용은 SageMaker 에 대한 디버거 대화형 보고서 XGBoost 단원을 참조하십시오.

    작은 정보

    컨볼루션 신경망(CNN) 및 자연어 처리(NLP) 모델과 같은 대규모 딥 러닝 모델의 분산 훈련을 실행하려면 데이터 병렬화 또는 모델 병렬화에 SageMaker AI Distributed를 사용합니다. 자세한 내용은 Amazon SageMaker AI의 분산 훈련 단원을 참조하십시오.

  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 AI 하이퍼파라미터 최적화 기능을 사용하여 하이퍼파라미터를 조정할 수도 있습니다. 자세한 내용은 SageMaker AI를 사용한 자동 모델 튜닝 단원을 참조하십시오.

  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분이 걸릴 수 있습니다.

    훈련 작업이 완료되면 SageMaker Debugger에서 생성한 XGBoost 훈련 보고서와 프로파일링 보고서를 다운로드할 수 있습니다. XGBoost 훈련 보고서는 반복, 기능 중요도, 혼동 행렬, 정확도 곡선 및 기타 훈련 통계 결과와 관련된 손실 함수와 같은 훈련 진행 상황 및 결과에 대한 인사이트를 제공합니다. 예를 들어 훈련 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

    Debugger XGBoost 훈련 및 프로파일링 보고서를 현재 작업 영역에 다운로드합니다.

    ! 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 작업 프로파일링 결과에 대한 요약 및 세부 정보를 보여주는 Debugger 프로파일링 보고서의 파일 링크를 반환합니다.

    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 보기에서 플롯을 렌더링하지 않는 경우 보고서 상단에서 신뢰를 HTML 선택해야 합니다.

    과적합, 그라데이션 소실 및 모델 수렴을 방지하는 기타 문제와 같은 훈련 문제를 식별하려면 SageMaker Debugger를 사용하고 자동화된 작업을 수행하는 동시에 ML 모델을 프로토타입화하고 훈련합니다. 자세한 내용은 Amazon SageMaker 디버거 단원을 참조하십시오. 모델 파라미터에 대한 전체 분석을 찾으려면 Amazon SageMaker Debugger를 사용한 설명 가능성 예제 노트북을 참조하세요.

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

xgb_model.model_data
작은 정보

ML 수명 주기의 각 단계(데이터 수집, 모델 훈련 및 튜닝, 예측을 위해 배포된 ML 모델의 모니터링)에서 발생할 수 있는 편향을 측정하려면 SageMaker Clarify를 사용합니다. 자세한 내용은 모델 설명 가능성 단원을 참조하십시오. 예제 end-to-end는 SageMaker Clarify를 사용한 공정성 및 설명 가능성 예제 노트북을 참조하세요.