기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모델 훈련
이 단계에서는 훈련 알고리즘을 선택하고 모델에 대한 훈련 작업을 실행합니다. Amazon SageMaker Python SDK
훈련 알고리즘 선택
데이터 집합에 적합한 알고리즘을 선택하려면 일반적으로 다양한 모델을 평가하여 데이터에 가장 적합한 모델을 찾아야 합니다. 단순화를 위해 SageMaker AI Amazon SageMaker AI를 사용한 XGBoost 알고리즘 내장 알고리즘은 모델 사전 평가 없이 이 자습서 전체에서 사용됩니다.
작은 정보
SageMaker AI가 테이블 형식 데이터세트에 적합한 모델을 찾도록 하려면 기계 학습 솔루션을 자동화하는 Amazon SageMaker Autopilot을 사용하세요. 자세한 내용은 SageMaker Autopilot 단원을 참조하십시오.
훈련 작업 생성 및 실행
사용할 모델을 파악한 후 훈련 작업 구성을 시작합니다. 이 자습서에서는 XGBoost 기본 제공 알고리즘을 사용합니다.
모델 훈련 작업을 실행하려면
-
Amazon SageMaker Python SDK
를 가져오고 현재 SageMaker AI 세션에서 기본 정보를 검색하는 것부터 시작하세요. from sagemaker.core.helper.session_helper import Session, get_execution_role sagemaker_session = Session() region = sagemaker_session.boto_region_name print(f"AWS Region: {region}") role = get_execution_role() print(f"RoleArn: {role}")참고
sagemaker.__version__를 실행하여 SageMaker Python SDK 버전을 확인합니다. 이 튜토리얼은sagemaker>=3.0을 기반으로 합니다. SDK가 오래된 경우 다음 명령을 실행하여 최신 버전을 설치합니다.! pip install -qU sagemaker기존 SageMaker Studio 또는 노트북 인스턴스에서 이 설치를 실행하는 경우 버전 업데이트 적용을 완료하려면 커널을 수동으로 새로 고쳐야 합니다.
이는 다음 정보를 반환합니다.
-
region- SageMaker AI 노트북 인스턴스가 실행 중인 현재 AWS 리전입니다. -
role– 노트북 인스턴스에서 사용하는 IAM 역할.
-
-
훈련 구성을 생성하고 XGBoost 알고리즘에 대한 하이퍼파라미터를 설정합니다.
생성자에 직접 전달되는 하이퍼파라미터가 있는
sagemaker.train.ModelTrainer클래스를ModelTrainer사용하여를 생성합니다. 다음 예제 코드에서 ModelTrainer의 이름은 입니다xgb_model_trainer.from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, OutputDataConfig from sagemaker.core import image_uris s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container = image_uris.retrieve("xgboost", region, "1.2-1") print(container) compute = Compute( instance_type='ml.m4.xlarge', instance_count=1, volume_size_in_gb=5 ) xgb_model_trainer = ModelTrainer( training_image=container, role=role, compute=compute, output_data_config=OutputDataConfig(s3_output_path=s3_output_location), hyperparameters={ "max_depth": "5", "eta": "0.2", "gamma": "4", "min_child_weight": "6", "subsample": "0.7", "objective": "binary:logistic", "num_round": "1000" } )SageMaker AI를 구성하려면 다음 파라미터를
ModelTrainer지정합니다.-
training_image– 훈련 컨테이너 이미지 URI를 지정합니다. 이 예에서는 SageMaker AI XGBoost 훈련 컨테이너 URI가image_uris.retrieve를 사용하여 지정됩니다. -
role- SageMaker AI가 사용자를 대신하여 작업을 수행하는 데 사용하는 AWS Identity and Access Management (IAM) 역할입니다(예: 훈련 결과 읽기, Amazon S3에서 모델 아티팩트 호출, Amazon S3에 훈련 결과 쓰기). -
compute- 모델 훈련에 사용할 Amazon EC2 ML 컴퓨팅 인스턴스의 유형과 수를 지정하는Compute구성 객체입니다. 이 훈련 실습에서는 4개의 CPU, 16GB 메모리, Amazon Elastic Block Store(Amazon EBS) 스토리지 및 높은 네트워크 성능을 가진 단일ml.m4.xlarge인스턴스를 사용합니다. EC2 컴퓨팅 인스턴스 유형에 대한 자세한 내용은 Amazon EC2 인스턴스 유형을 참조하세요. 결제에 대한 자세한 내용은 Amazon SageMaker 요금 을 참조하세요. -
hyperparameters- 훈련 알고리즘의 하이퍼파라미터 사전입니다. 모든 값은 문자열이어야 합니다.
작은 정보
합성곱 신경망(CNN) 및 자연어 처리(NLP) 모델과 같은 대규모 딥 러닝 모델의 분산 훈련을 실행하려면 데이터 병렬화 또는 모델 병렬화에 SageMaker AI Distributed를 사용하세요. 자세한 내용은 Amazon SageMaker AI에서의 분산 훈련 단원을 참조하십시오.
작은 정보
SageMaker AI 하이퍼파라미터 최적화 기능을 사용하여 하이퍼파라미터를 조정할 수도 있습니다. 자세한 내용은 SageMaker AI로 자동 모델 튜닝 단원을 참조하십시오.
-
-
훈련을 위한 데이터 입력을 구성합니다.
InputData클래스를 사용하여 훈련을 위한 데이터 입력 흐름을 구성합니다. 다음 예제 코드는 데이터 집합을 훈련, 검증 및 테스트 데이터 집합으로 분할합니다.섹션에서 Amazon S3에 업로드한 훈련 및 검증 데이터 집합을 사용하도록InputData객체를 구성하는 방법을 보여줍니다.from sagemaker.train.configs import InputData train_input = InputData( channel_name="train", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/train.csv") ) validation_input = InputData( channel_name="validation", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv") ) -
모델 훈련을 시작합니다.
모델 훈련을 시작하려면 훈련 및 검증 데이터 세트를 사용하여 강사의
train메서드를 호출합니다. 기본적으로train메서드는 진행률 로그를 표시하고 훈련이 완료될 때까지 기다립니다.xgb_model_trainer.train(input_data_config=[train_input, validation_input])모델 훈련에 대한 자세한 정보는 Amazon SageMaker를 사용한 모델 훈련을 참조하세요. 이 자습서 훈련 작업에는 최대 10분이 걸릴 수 있습니다.
훈련 작업이 완료되면 XGBoost 훈련 보고서와 SageMaker Debugger에서 생성된 프로파일링 보고서를 다운로드할 수 있습니다. XGBoost 훈련 보고서는 반복에 따른 손실 함수, 기능 중요도, 오차 행렬, 정확도 곡선 및 기타 훈련 통계 결과와 같은 훈련 진행 상황 및 결과에 대한 통찰력을 제공합니다. 예를 들어, XGBoost 훈련 보고서에서 과적합 문제가 있음을 분명히 나타내는 다음과 같은 손실 곡선을 찾을 수 있습니다.
다음 코드를 실행하여 디버거 훈련 보고서가 생성되는 S3 버킷 URI를 지정하고 보고서가 존재하는지 확인합니다.
training_job = xgb_model_trainer._latest_training_job rule_output_path = training_job.output_data_config.s3_output_path + "/" + training_job.training_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 작업 프로파일링 결과에 대한 요약 및 세부 정보를 보여주는 디버거 프로파일링 보고서의 파일 링크를 반환합니다.
# Note: In V3, debugger rule outputs can be accessed via the SageMaker console # or the boto3 DescribeTrainingJob API (DebugRuleEvaluationStatuses field). # Example using boto3: # import boto3 # sm = boto3.client("sagemaker") # resp = sm.describe_training_job(TrainingJobName=training_job.training_job_name) # rule_statuses = resp["DebugRuleEvaluationStatuses"] profiler_report_name = "ProfilerReport-1234567890" 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 Debugger 섹션을 참조하세요. 모델 파라미터 대한 완전한 분석을 찾으려면 Amazon SageMaker Debugger를 사용한 설명 가능성
예제 노트북을 참조하세요.
이제 훈련된 XGBoost 모델이 생겼습니다. SageMaker AI는 S3 버킷에 모델 아티팩트를 저장합니다. 모델 아티팩트의 위치를 찾으려면 다음 코드를 실행하여 model_data 속성을 인쇄합니다.
xgb_model_trainer._latest_training_job.model_artifacts.s3_model_artifacts
작은 정보
ML 수명 주기의 각 단계(데이터 수집, 모델 훈련 및 조정, 예측을 위해 배포된 ML 모델 모니터링)에서 발생할 수 있는 편향을 측정하려면 SageMaker Clarify를 사용하세요. 자세한 내용은 모델 설명 가능성 섹션을 참조하세요. 종합 예제를 보려면 SageMaker Clarify를 사용한 공정성 및 설명 가능성