단계 추가 - Amazon SageMaker AI

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

단계 추가

다음은 각 단계 유형의 요구 사항을 설명하고 해당 단계의 예시 구현을 제공하며 Pipelines에 단계를 추가하는 방법을 설명합니다. 이는 필요한 리소스와 입력을 제공하지 않으므로 작동하는 구현이 아닙니다. 이러한 단계를 구현하는 자습서는 Pipelines 작업섹션을 참조하세요.

참고

로컬 기계 학습 코드에서 @step 데코레이터를 사용하여 파이프라인 단계로 변환하여 단계를 만들 수도 있습니다. 자세한 내용은 @step 데코레이터 단원을 참조하십시오.

Amazon SageMaker Pipelines은 다음 단계 유형을 지원합니다.

@step 데코레이터

파이프라인 UI에서 drag-and-drop 고급 SageMaker AI 기능 또는 기타 AWS 서비스를 활용하는 사용자 지정 ML 작업을 오케스트레이션하려면를 사용합니다코드 실행 단계.

@step 데코레이터를 사용하여 로컬 기계 학습 코드에서 단계를 만들 수 있습니다. 코드를 테스트한 후 @step 데코레이터로 주석을 달아 함수를 SageMaker AI 파이프라인 단계로 변환할 수 있습니다. 파이프라인은 @step으로 데코레이션된 함수의 출력을 파이프라인에 단계로 전달할 때 파이프라인을 만들고 실행합니다. 또한 하나 이상의 @step장식 함수와 기존 SageMaker AI DAG 파이프라인 단계를 포함하는 다단계 파이프라인을 생성할 수 있습니다. @step 데코레이터로 단계를 만드는 방법에 대한 자세한 내용은 Lift-and-shift @step 데코레이터가 있는 Python 코드 섹션을 참조하세요.

파이프라인 drag-and-drop UI에서 코드 실행 단계를 사용하여 자체 코드를 파이프라인 단계로 실행할 수 있습니다. 파이프라인의 일부로 실행할 Python 함수, 스크립트 또는 노트북을 업로드할 수 있습니다. 고급 SageMaker AI 기능 또는 기타 AWS 서비스를 활용하는 사용자 지정 ML 작업을 오케스트레이션하려면이 단계를 사용해야 합니다.

코드 실행 단계는 Amazon SageMaker AI용 기본 Amazon S3 버킷에 파일을 업로드합니다. 이 버킷에는 필요한 교차 오리진 리소스 공유(CORS) 권한이 설정되어 있지 않을 수 있습니다. CORS 권한 구성에 대한 자세한 내용은 섹션을 참조하세요CORS 입력 이미지 데이터에 대한 요구 사항.

코드 실행 단계에서는 Amazon SageMaker 훈련 작업을 사용하여 코드를 실행합니다. IAM 역할에 sagemaker:DescribeTrainingJobsagemaker:CreateTrainingJob API 권한이 있는지 확인합니다. Amazon SageMaker AI에 필요한 모든 권한과 설정 방법에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker AI API 권한: 작업, 권한 및 리소스 참조.

파이프라인 디자이너를 사용하여 파이프라인에 코드 실행 단계를 추가하려면 다음을 수행합니다.

  1. 의 지침에 따라 Amazon SageMaker Studio 콘솔을 엽니다Amazon SageMaker Studio 시작.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 코드 실행을 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 코드 실행 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다.

  8. 단일 파일을 업로드하여 여러 아티팩트가 포함된 압축 폴더를 실행하거나 업로드할 수 있습니다.

  9. 단일 파일 업로드의 경우 노트북, Python 함수 또는 스크립트에 대한 파라미터를 선택적으로 제공할 수 있습니다.

  10. Python 함수를 제공할 때 핸들러를 file.py:<function_name> 형식으로 제공해야 합니다.

  11. 압축 폴더 업로드의 경우 코드에 대한 상대 경로를 제공해야 하며, 선택적으로 압축 폴더 내의 requirements.txt 파일 또는 초기화 스크립트에 대한 경로를 제공할 수 있습니다.

  12. 캔버스에 추가한 코드 실행 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 코드 실행 단계로 드래그하여 엣지를 만듭니다.

  13. 캔버스에 추가한 코드 실행 단계 바로 뒤에 있는 단계가 포함된 경우 코드 실행 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다. 코드 실행 단계의 출력은 Python 함수를 위해 참조할 수 있습니다.

처리 단계를 사용하여 데이터 처리를 위한 처리 작업을 생성합니다. 작업 처리에 대한 자세한 내용은 데이터 처리 및 모델 평가를 참조하세요.

Pipeline Designer

파이프라인 디자이너를 사용하여 파이프라인에 처리 단계를 추가하려면 다음을 수행합니다.

  1. 의 지침에 따라 Amazon SageMaker Studio 콘솔을 엽니다Amazon SageMaker Studio 시작.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 왼쪽 사이드바에서 데이터 처리를 선택하고 캔버스로 드래그합니다.

  5. 캔버스에서 추가한 데이터 처리 단계를 선택합니다.

  6. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.steps를 참조하세요ProcessingStep.

  7. 캔버스에 추가한 데이터 처리 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 데이터 처리 단계로 드래그하여 엣지를 만듭니다.

  8. 캔버스에 추가한 데이터 처리 단계 바로 뒤에 있는 단계가 포함된 경우 데이터 처리 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK

처리 단계에는 프로세서, 처리 코드를 정의하는 Python 스크립트, 처리를 위한 출력 및 작업 인수가 필요합니다. 다음 예제는 ProcessingStep정의를 생성하는 방법을 보여줍니다.

from sagemaker.sklearn.processing import SKLearnProcessor sklearn_processor = SKLearnProcessor(framework_version='1.0-1', role=<role>, instance_type='ml.m5.xlarge', instance_count=1)
from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep inputs = [ ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"), ] outputs = [ ProcessingOutput(output_name="train", source="/opt/ml/processing/train"), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"), ProcessingOutput(output_name="test", source="/opt/ml/processing/test") ] step_process = ProcessingStep( name="AbaloneProcess", step_args = sklearn_processor.run(inputs=inputs, outputs=outputs, code="abalone/preprocessing.py") )

런타임 파라미터 전달

다음 예제에서는 프로세서에서 로 PySpark 런타임 파라미터를 전달하는 방법을 보여줍니다ProcessingStep.

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.spark.processing import PySparkProcessor from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep pipeline_session = PipelineSession() pyspark_processor = PySparkProcessor( framework_version='2.4', role=<role>, instance_type='ml.m5.xlarge', instance_count=1, sagemaker_session=pipeline_session, ) step_args = pyspark_processor.run( inputs=[ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),], outputs=[ ProcessingOutput(output_name="train", source="/opt/ml/processing/train"), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"), ProcessingOutput(output_name="test", source="/opt/ml/processing/test") ], code="preprocess.py", arguments=None, ) step_process = ProcessingStep( name="AbaloneProcess", step_args=step_args, )

처리 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.steps.ProcessingStep 설명서를 참조하세요. 심층 예제는 Amazon SageMaker Pipelines을 사용하여 모델을 훈련 및 평가하기 위한 작업 조정 예제 노트북을 참조하세요. Define a Processing Step for Feature Engineering 섹션에 자세한 정보가 포함되어 있습니다.

훈련 단계를 사용하여 모델을 훈련시키는 훈련 작업을 생성합니다. 훈련 작업에 대한 자세한 내용은 Amazon SageMaker AI로 모델 훈련을 참조하세요.

훈련 단계에는 훈련 및 검증 데이터 입력뿐만 아니라 예측기가 필요합니다.

Pipeline Designer

파이프라인 디자이너를 사용하여 파이프라인에 훈련 단계를 추가하려면 다음을 수행합니다.

  1. 의 지침에 따라 Amazon SageMaker Studio 콘솔을 엽니다Amazon SageMaker Studio 시작.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 모델 훈련을 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 모델 훈련 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.steps를 참조하세요TrainingStep.

  8. 캔버스에 추가한 모델 훈련 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 모델 훈련 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 모델 훈련 단계 바로 뒤에 있는 단계가 포함된 경우 모델 훈련 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK

다음 예제는 TrainingStep정의를 생성하는 방법을 보여줍니다. 훈련 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.steps.TrainingStep 설명서를 참조하세요.

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TrainingStep from sagemaker.xgboost.estimator import XGBoost pipeline_session = PipelineSession() xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session) step_args = xgb_estimator.fit( inputs={ "train": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train" ].S3Output.S3Uri, content_type="text/csv" ), "validation": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "validation" ].S3Output.S3Uri, content_type="text/csv" ) } ) step_train = TrainingStep( name="TrainAbaloneModel", step_args=step_args, )

튜닝 단계를 사용하여 하이퍼파라미터 최적화()라고도 하는 하이퍼파라미터 튜닝 작업을 생성합니다HPO. 하이퍼파라미터 조정 작업은 여러 개의 훈련 작업을 실행하며 각 작업은 모델 버전을 생성합니다. 하이퍼파라미터 튜닝에 대한 자세한 내용은 SageMaker AI를 사용한 자동 모델 튜닝섹션을 참조하세요.

튜닝 작업은 훈련 작업이 시도로 생성된 파이프라인의 SageMaker AI 실험과 연결됩니다. 자세한 내용은 실험 통합 단원을 참조하십시오.

튜닝 단계에는 HyperparameterTuner 및 훈련 입력이 필요합니다. HyperparameterTunerwarm_start_config파라미터를 지정하여 이전 튜닝 작업을 다시 훈련할 수 있습니다. 하이퍼파라미터 튜닝 및 부팅에 대한 자세한 내용은 웜 스타트 하이퍼파라미터 튜닝 작업 실행섹션을 참조하세요.

sagemakerTuningStep.workflow.steps. 클래스의 get_top_model_s3_uri 메서드를 사용하여 최고 성능의 모델 버전 중 하나에서 모델 아티팩트를 가져옵니다. SageMaker AI 파이프라인에서 튜닝 단계를 사용하는 방법을 보여주는 노트북은 sagemaker-pipelines-tuning-step.ipynb를 참조하세요.

중요

튜닝 단계는 Amazon SageMaker Python SDK v2.48.0 및 Amazon SageMaker Studio Classic v3.8.0에 도입되었습니다. 튜닝 단계를 사용하기 전에 Studio Classic을 업데이트해야 합니다. 그렇지 않으면 파이프라인이 표시되지 DAG 않습니다. Studio Classic을 업데이트하려면 SageMaker Studio Classic 종료 및 업데이트 섹션을 참조하세요.

다음 예제는 TuningStep정의를 생성하는 방법을 보여줍니다.

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.tuner import HyperparameterTuner from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TuningStep tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession()) step_tuning = TuningStep( name = "HPTuning", step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data")) )

최적 모델 버전 가져오기

다음 예제에서는 get_top_model_s3_uri메서드를 사용하여 튜닝 작업에서 최적 모델 버전을 가져오는 방법을 보여줍니다. 최대 50개의 상위 수행 버전은에 따라 순위를 매길 수 있습니다HyperParameterTuningJobObjective. top_k 인수는 버전에 대한 인덱스로, top_k=0은 성능이 가장 좋은 버전이고 top_k=49는 성능이 가장 낮은 버전입니다.

best_model = Model( image_uri=image_uri, model_data=step_tuning.get_top_model_s3_uri( top_k=0, s3_bucket=sagemaker_session.default_bucket() ), ... )

튜닝 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.steps.TuningStep 설명서를 참조하세요.

미세 조정은 새 데이터 세트 SageMaker JumpStart 에서 Amazon의 사전 훈련된 파운데이션 모델을 훈련합니다. 전이 학습이라고도 하는 이 프로세스를 통해 더 작은 데이터세트를 사용하고 훈련 시간을 단축하여 정확한 모델을 생성할 수 있습니다. 모델을 미세 조정할 때 기본 데이터세트를 사용하거나 자체 데이터를 선택할 수 있습니다. 에서 파운데이션 모델을 미세 조정하는 방법에 대한 자세한 내용은 섹션을 JumpStart참조하세요모델 미세 조정.

미세 조정 단계에서는 Amazon SageMaker 훈련 작업을 사용하여 모델을 사용자 지정합니다. IAM 역할에 파이프라인에서 미세 조정 작업을 실행할 수 있는 sagemaker:DescribeTrainingJobsagemaker:CreateTrainingJob API 권한이 있는지 확인합니다. Amazon SageMaker AI에 필요한 권한과 설정 방법에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker AI API 권한: 작업, 권한 및 리소스 참조.

drag-and-drop 편집기를 사용하여 파이프라인에 미세 조정 모델 단계를 추가하려면 다음 단계를 수행합니다.

  1. Amazon SageMaker Studio 시작의 지침에 따라 Studio 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 모델 미세 조정을 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 모델 미세 조정 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다.

  8. 캔버스에 추가한 모델 미세 조정 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 모델 미세 조정 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 모델 미세 조정 단계 바로 뒤에 있는 단계가 포함된 경우 모델 미세 조정 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

AutoMLAPI을 사용하여 AutoML 작업을 생성하여 모델을 자동으로 훈련합니다. AutoML 작업에 대한 자세한 내용은 Amazon SageMaker Autopilot을 사용한 모델 개발 자동화를 참조하세요.

참고

현재 AutoML 단계는 앙상블 훈련 모드만 지원합니다.

다음 예제는 AutoMLStep을 사용하여 정의를 생성하는 방법을 보여줍니다.

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.automl_step import AutoMLStep pipeline_session = PipelineSession() auto_ml = AutoML(..., role="<role>", target_attribute_name="my_target_attribute_name", mode="ENSEMBLING", sagemaker_session=pipeline_session) input_training = AutoMLInput( inputs="s3://amzn-s3-demo-bucket/my-training-data", target_attribute_name="my_target_attribute_name", channel_type="training", ) input_validation = AutoMLInput( inputs="s3://amzn-s3-demo-bucket/my-validation-data", target_attribute_name="my_target_attribute_name", channel_type="validation", ) step_args = auto_ml.fit( inputs=[input_training, input_validation] ) step_automl = AutoMLStep( name="AutoMLStep", step_args=step_args, )

최적 모델 버전 가져오기

AutoML 단계에서는 여러 모델 후보를 자동으로 학습시킵니다. 다음과 같이 get_best_auto_ml_model 메서드를 사용하여 AutoML 작업에서 최적의 목표 지표가 있는 모델을 가져옵니다. 또한를 사용하여 모델 아티팩트IAMrole에 액세스해야 합니다.

best_model = step_automl.get_best_auto_ml_model(role=<role>)

자세한 내용은 SageMaker Python의 AutoML 단계를 참조하세요SDK.

ModelStep를 사용하여 SageMaker AI 모델을 생성하거나 등록합니다. 요구 사항에 대한ModelStep 자세한 내용은 sagemaker.workflow.model_step.ModelStep 설명서를 참조하세요.

모델 생성

ModelStep를 사용하여 SageMaker AI 모델을 생성할 수 있습니다. 에는 모델을 생성하는 데 사용해야 하는 SageMaker AI 인스턴스 유형에 대한 모델 아티팩트와 정보가 ModelStep 필요합니다. SageMaker AI 모델에 대한 자세한 내용은 Amazon SageMaker AI로 모델 훈련을 참조하세요.

다음 예제는 ModelStep정의를 생성하는 방법을 보여줍니다.

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.model import Model from sagemaker.workflow.model_step import ModelStep step_train = TrainingStep(...) model = Model( image_uri=pytorch_estimator.training_image_uri(), model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, sagemaker_session=PipelineSession(), role=role, ) step_model_create = ModelStep( name="MyModelCreationStep", step_args=model.create(instance_type="ml.m5.xlarge"), )

모델 등록

를 사용하여 Amazon SageMaker 모델 레지스트리ModelStepsagemaker.model.Model 또는 sagemaker.pipeline.PipelineModel를 등록할 수 있습니다. PipelineModel은 추론 파이프라인은 데이터에 대해 추론 요청을 처리하는 컨테이너로 이루어진 선형 시퀀스로 구성된 모델입니다. 모델을 등록하는 자세한 방법은 Model Registry를 사용한 모델 등록 배포섹션을 참조하세요.

다음 예제에서는 PipelineModel을 등록하는 ModelStep생성 방법을 보여 줍니다.

import time from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.sklearn import SKLearnModel from sagemaker.xgboost import XGBoostModel pipeline_session = PipelineSession() code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix) sklearn_model = SKLearnModel( model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=pipeline_session, py_version='py3' ) xgboost_model = XGBoostModel( model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=pipeline_session, role=role ) from sagemaker.workflow.model_step import ModelStep from sagemaker import PipelineModel pipeline_model = PipelineModel( models=[sklearn_model, xgboost_model], role=role,sagemaker_session=pipeline_session, ) register_model_step_args = pipeline_model.register( content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name='sipgroup', ) step_model_registration = ModelStep( name="AbaloneRegisterModel", step_args=register_model_step_args, )

모델 생성 단계를 사용하여 SageMaker AI 모델을 생성합니다. SageMaker AI 모델에 대한 자세한 내용은 섹션을 참조하세요Amazon을 사용하여 모델 훈련 SageMaker.

모델 생성 단계에는 모델을 생성하는 데 사용해야 하는 SageMaker AI 인스턴스 유형에 대한 모델 아티팩트와 정보가 필요합니다. 다음 예시는 모델 만들기 단계 정의를 만드는 방법을 보여줍니다. 모델 생성 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.steps.CreateModelStep 설명서를 참조하세요.

Pipeline Designer

파이프라인에 모델 만들기 단계를 추가하려면 다음을 수행합니다.

  1. Amazon SageMaker Studio 시작의 지침에 따라 Studio 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 모델 만들기를 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 모델 만들기 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.steps를 참조하세요CreateModelStep.

  8. 캔버스에 추가한 모델 만들기 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 모델 만들기 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 모델 만들기 단계 바로 뒤에 있는 단계가 포함된 경우 모델 만들기 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK
중요

모델 단계를 사용하여 SageMaker AI Python의 v2.90.0부터 모델을 생성하는 것이 좋습니다SDK. CreateModelStep는 이전 버전의 SageMaker Python에서 계속 작동SDK하지만 더 이상 적극적으로 지원되지 않습니다.

from sagemaker.workflow.steps import CreateModelStep step_create_model = CreateModelStep( name="AbaloneCreateModel", model=best_model, inputs=inputs )

모델 등록 단계에서는 모델을 SageMaker 모델 레지스트리에 등록합니다.

Pipeline Designer

파이프라인 디자이너를 사용하여 파이프라인에서 모델을 등록하려면 다음을 수행합니다.

  1. 의 지침에 따라 Amazon SageMaker Studio 콘솔을 엽니다Amazon SageMaker Studio 시작.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 모델 등록을 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 모델 등록 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.step_collections를 참조하세요RegisterModel.

  8. 캔버스에 추가한 모델 등록 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 모델 등록 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 모델 등록 단계 바로 뒤에 있는 단계가 포함된 경우 모델 등록 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK
중요

모델 단계를 사용하여 SageMaker AI Python의 v2.90.0부터 모델을 등록하는 것이 좋습니다SDK. RegisterModel는 SageMaker Python의 이전 버전에서 계속 작동SDK하지만 더 이상 적극적으로 지원되지 않습니다.

RegisterModel 단계를 사용하여 Amazon SageMaker 모델 레지스트리에 sagemaker.model.Model 또는 sagemaker.pipeline.PipelineModel을 등록합니다. PipelineModel은 추론 파이프라인은 데이터에 대해 추론 요청을 처리하는 컨테이너로 이루어진 선형 시퀀스로 구성된 모델입니다.

모델을 등록하는 자세한 방법은 Model Registry를 사용한 모델 등록 배포섹션을 참조하세요. RegisterModel 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.step_collections.RegisterModel 설명서를 참조하세요.

다음 예제에서는 PipelineModel을 등록하는 RegisterModel단계 생성 방법을 보여 줍니다.

import time from sagemaker.sklearn import SKLearnModel from sagemaker.xgboost import XGBoostModel code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix) sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=sagemaker_session, py_version='py3') xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=sagemaker_session, role=role) from sagemaker.workflow.step_collections import RegisterModel from sagemaker import PipelineModel pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session) step_register = RegisterModel( name="AbaloneRegisterModel", model=pipeline_model, content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name='sipgroup', )

model이 제공되지 않은 경우 모델 등록 단계에는 다음 예제와 같이 예측기가 필요합니다.

from sagemaker.workflow.step_collections import RegisterModel step_register = RegisterModel( name="AbaloneRegisterModel", estimator=xgb_train, model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, content_types=["text/csv"], response_types=["text/csv"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name=model_package_group_name, approval_status=model_approval_status, model_metrics=model_metrics )

파이프라인 디자이너에서 모델 배포(엔드포인트) 단계를 사용하여 모델을 엔드포인트에 배포합니다. 새 엔드포인트를 만들거나 기존 엔드포인트를 사용할 수 있습니다. 실시간 추론은 실시간, 대화형, 짧은 지연 시간이 요구되는 추론 워크로드에 적합합니다. 모델을 SageMaker AI 호스팅 서비스에 배포하고 추론에 사용할 수 있는 실시간 엔드포인트를 얻을 수 있습니다. 이러한 엔드포인트는 완전 관리형이며 오토 스케일링을 지원합니다. SageMaker AI의 실시간 추론에 대한 자세한 내용은 섹션을 참조하세요실시간 추론.

파이프라인에 배포 모델 단계를 추가하기 전에 IAM 역할에 다음 권한이 있는지 확인합니다.

  • sagemaker:CreateModel

  • sagemaker:CreateEndpointConfig

  • sagemaker:CreateEndpoint

  • sagemaker:UpdateEndpoint

  • sagemaker:DescribeModel

  • sagemaker:DescribeEndpointConfig

  • sagemaker:DescribeEndpoint

SageMaker AI에 필요한 모든 권한과 설정 방법에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker AI API 권한: 작업, 권한 및 리소스 참조.

편집기에서 drag-and-drop 파이프라인에 모델 배포 단계를 추가하려면 다음 단계를 완료합니다.

  1. Amazon SageMaker Studio 시작의 지침에 따라 Studio 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 모델 배포(엔드포인트)를 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 모델 배포(엔드포인트) 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다.

  8. 캔버스에 추가한 모델 배포(엔드포인트) 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 모델 배포(엔드포인트) 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 모델 배포(엔드포인트) 단계 바로 뒤에 있는 단계가 포함된 경우 모델 배포(엔드포인트) 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

배치 변환을 위한 변환 단계를 사용하여 전체 데이터세트에 대해 추론을 실행합니다. 배치 변환에 대한 자세한 정보는 추론 파이프라인을 사용하여 배치 변환섹션을 참조하세요.

변환 단계에는 배치 변환을 실행하는 데 사용할 변환기와 데이터가 필요합니다. 다음 예시는 변환 단계 정의를 만드는 방법을 보여줍니다. 변환 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.steps.TransformStep 설명서를 참조하세요.

Pipeline Designer

시각적 편집기를 사용하여 파이프라인에 drag-and-drop 배치 변환 단계를 추가하려면 다음을 수행합니다.

  1. Amazon SageMaker Studio 시작의 지침에 따라 Studio 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 모델 배포(배치 변환)을 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 모델 배포(배치 변환) 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.steps를 참조하세요TransformStep.

  8. 캔버스에 추가한 모델 배포(배치 변환) 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 모델 배포(배치 변환) 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 모델 배포(배치 변환) 단계 바로 뒤에 있는 단계가 포함된 경우 모델 배포(배치 변환) 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.transformer import Transformer from sagemaker.inputs import TransformInput from sagemaker.workflow.steps import TransformStep transformer = Transformer(..., sagemaker_session=PipelineSession()) step_transform = TransformStep( name="AbaloneTransform", step_args=transformer.transform(data="s3://amzn-s3-demo-bucket/my-data"), )

조건 단계를 사용하여 단계 속성의 조건을 평가하여 파이프라인에서 다음에 취해야 할 조치를 평가합니다.

조건 단계에는 다음이 필요합니다.

  • 조건 목록

  • 조건이 true로 평가되는 경우 실행할 단계의 목록

  • 조건이 false로 평가되는 경우 실행할 단계의 목록

Pipeline Designer

파이프라인 디자이너를 사용하여 파이프라인에 조건 단계를 추가하려면 다음을 수행합니다.

  1. 의 지침에 따라 Amazon SageMaker Studio 콘솔을 엽니다Amazon SageMaker Studio 시작.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 조건을 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 조건 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.condition_step을 참조하세요ConditionStep.

  8. 캔버스에 추가한 조건 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 조건 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 조건 단계 바로 뒤에 있는 단계가 포함된 경우 조건 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK

다음 예제는 ConditionStep정의를 생성하는 방법을 보여줍니다.

제한 사항

  • Pipelines은 중첩된 조건 단계의 사용을 지원하지 않습니다. 조건 단계를 다른 조건 단계의 입력으로 전달할 수 없습니다.

  • 조건 단계는 두 브랜치에서 동일한 단계를 사용할 수 없습니다. 두 브랜치에 동일한 단계 기능이 필요한 경우 단계를 복제하고 다른 이름을 지정하세요.

from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo from sagemaker.workflow.condition_step import ConditionStep from sagemaker.workflow.functions import JsonGet cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=step_eval.name, property_file=evaluation_report, json_path="regression_metrics.mse.value" ), right=6.0 ) step_cond = ConditionStep( name="AbaloneMSECond", conditions=[cond_lte], if_steps=[step_register, step_create_model, step_transform], else_steps=[] )

요구 사항에 대한ConditionStep 자세한 내용은 sagemaker.workflow.condition_step.ConditionStep API 참조를 참조하세요. 지원되는 조건에 대한 자세한 내용은 SageMaker AI Python SDK 설명서의 Amazon SageMaker Pipelines - 조건을 참조하세요.

Callback 단계를 사용하여 Amazon SageMaker Pipelines에서 직접 제공하지 않는 추가 프로세스와 AWS 서비스를 워크플로에 추가합니다. Callback 단계가 실행되면 다음 절차가 수행됩니다.

  • 파이프라인은 고객 지정 Amazon Simple Queue Service(AmazonSQS) 대기열로 메시지를 보냅니다. 메시지에는 Pipelines에서 생성한 토큰과 고객이 제공한 입력 파라미터 목록이 포함되어 있습니다. 메시지를 보낸 후 Pipelines은 고객의 응답을 기다립니다.

  • 고객이 Amazon SQS 대기열에서 메시지를 검색하고 사용자 지정 프로세스를 시작합니다.

  • 프로세스가 완료되면 고객은 다음 중 하나를 호출APIs하고 파이프라인 생성 토큰을 제출합니다.

  • API 호출로 인해 파이프라인은 파이프라인 프로세스를 계속하거나 프로세스에 실패합니다.

Callback 단계 요구 사항에 대한 자세한 내용은 sagemaker.workflow.callback_step.CallbackStep 설명서를 참조하세요. 전체 솔루션은 콜백 단계를 사용하여 사용자 지정 단계를 포함하도록 SageMaker 파이프라인 확장을 참조하세요.

중요

Callback 단계는 Amazon SageMaker Python SDK v2.45.0 및 Amazon SageMaker Studio Classic v3.6.2에 도입되었습니다. Callback 단계를 사용하기 전에 Studio Classic을 업데이트해야 합니다. 그렇지 않으면 파이프라인이 표시되지 DAG 않습니다. Studio Classic을 업데이트하려면 SageMaker Studio Classic 종료 및 업데이트 섹션을 참조하세요.

다음 샘플은 이전 절차의 구현을 보여줍니다.

from sagemaker.workflow.callback_step import CallbackStep step_callback = CallbackStep( name="MyCallbackStep", sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue", inputs={...}, outputs=[...] ) callback_handler_code = ' import boto3 import json def handler(event, context): sagemaker_client=boto3.client("sagemaker") for record in event["Records"]: payload=json.loads(record["body"]) token=payload["token"] # Custom processing # Call SageMaker AI to complete the step sagemaker_client.send_pipeline_execution_step_success( CallbackToken=token, OutputParameters={...} ) '
참고

CallbackStep의 출력 파라미터는 중첩되지 않아야 합니다. 예를 들어, 중첩된 사전을 출력 파라미터로 사용하는 경우 사전은 단일 문자열로 취급됩니다 (예: {"output1": "{\"nested_output1\":\"my-output\"}"}). 중첩된 값을 제공하는 경우 특정 출력 파라미터를 참조하려고 하면 SageMaker AI는 재시도할 수 없는 클라이언트 오류를 발생시킵니다.

중지 동작

Callback 단계가 실행되는 동안에는 파이프라인 프로세스가 중지되지 않습니다.

실행 Callback 단계를 사용하여 파이프라인 프로세스를 StopPipelineExecution 호출하면 파이프라인은 SQS 대기열에 Amazon SQS 메시지를 보냅니다. SQS 메시지 본문에는 로 설정된 상태 필드가 포함되어 있습니다Stopping. 다음은 SQS 메시지 본문의 예입니다.

{ "token": "26vcYbeWsZ", "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a", "arguments": { "number": 5, "stringArg": "some-arg", "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv" }, "status": "Stopping" }

SQS 메시지를 수신하면 필요한 조치(예: 리소스 정리)를 취하려면 Amazon 메시지 소비자에게 로직을 추가해야 합니다. 그런 다음 SendPipelineExecutionStepSuccess 또는 SendPipelineExecutionStepFailure에 직접 호출을 추가합니다.

Pipelines은 이러한 호출 중 하나를 수신한 경우에만 파이프라인 프로세스를 중지합니다.

Lambda 단계를 사용하여 AWS Lambda 함수를 실행합니다. 기존 Lambda 함수를 실행하거나 SageMaker AI가 새 Lambda 함수를 생성하고 실행할 수 있습니다. SageMaker AI 파이프라인에서 Lambda 단계를 사용하는 방법을 보여주는 노트북은 sagemaker-pipelines-lambda-step.ipynb를 참조하세요.

중요

Lambda 단계는 Amazon SageMaker Python SDK v2.51.0 및 Amazon SageMaker Studio Classic v3.9.1에 도입되었습니다. Lambda 단계를 사용하기 전에 Studio Classic을 업데이트해야 합니다. 그렇지 않으면 파이프라인이 표시되지 DAG 않습니다. Studio Classic을 업데이트하려면 SageMaker Studio Classic 종료 및 업데이트 섹션을 참조하세요.

SageMaker AI는 Lambda 함수를 생성, 업데이트, 호출 및 삭제할 수 있는 sagemaker.lambda_helper.Lambda 클래스를 제공합니다. Lambda에는 다음 서명이 있습니다.

Lambda( function_arn, # Only required argument to invoke an existing Lambda function # The following arguments are required to create a Lambda function: function_name, execution_role_arn, zipped_code_dir, # Specify either zipped_code_dir and s3_bucket, OR script s3_bucket, # S3 bucket where zipped_code_dir is uploaded script, # Path of Lambda function script handler, # Lambda handler specified as "lambda_script.lambda_handler" timeout, # Maximum time the Lambda function can run before the lambda step fails ... )

sagemaker.workflow.lambda_step.LambdaStep 클래스의 lambda_func 인수 유형은 입니다Lambda. 기존 Lambda 함수를 호출하려면 함수의 Amazon 리소스 이름(ARN)을에 제공해야 합니다function_arn. function_arn에 대한 값을 제공하지 않는 경우 handler와 다음 중 하나를 지정해야 합니다.

  • zipped_code_dir - 압축된 Lambda 함수의 경로

    s3_bucket - zipped_code_dir이 업로드될 Amazon S3 버킷

  • script - Lambda 함수 스크립트 파일의 경로

다음 예제는 기존 Lambda 함수를 호출하는 Lambda단계 정의를 생성하는 방법을 보여줍니다.

from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda" ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )

다음 예제는 Lambda 함수 스크립트를 사용하여 Lambda 함수를 생성하고 호출하는 Lambda단계 정의를 생성하는 방법을 보여줍니다.

from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_name="split-dataset-lambda", execution_role_arn=execution_role_arn, script="lambda_script.py", handler="lambda_script.lambda_handler", ... ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )

입력 및 출력

Lambda 함수에 입력 또는 출력이 있는 경우 해당 입력 또는 출력도 Lambda단계에서 정의해야 합니다.

참고

입력 및 출력 파라미터는 중첩되지 않아야 합니다. 예를 들어, 중첩된 사전을 출력 파라미터로 사용하는 경우 사전은 단일 문자열로 취급됩니다 (예: {"output1": "{\"nested_output1\":\"my-output\"}"}).중첩된 값을 제공하고 나중에 참조하려고 하면 재시도할 수 없는 클라이언트 오류가 발생합니다.

Lambda 단계 정의 시, inputs은 키-값 쌍의 딕셔너리여야 합니다. inputs 사전의 각 값은 프리미티브 유형(문자열, 정수 또는 부동)이어야 합니다. 중첩된 개체는 지원되지 않습니다. 정의되지 않은 상태로 두면 inputs기본값은 None입니다.

outputs 값은 키 목록이어야 합니다. 이 키는 Lambda함수 출력에 정의된 사전을 참조합니다. inputs과 마찬가지로 이러한 키는 프리미티브 유형이어야 하며 중첩된 객체는 지원되지 않습니다.

타임아웃 및 중지 동작

Lambda 클래스에는 Lambda 함수를 실행할 수 있는 최대 시간을 지정하는 timeout인수가 있습니다. 기본값은 120초이며 최대값은 10분입니다. 제한 시간에 도달했을 때 Lambda 함수가 실행 중이면 Lambda 단계는 실패하지만 Lambda 함수는 계속 실행됩니다.

Lambda 단계에서 호출한 Lambda 함수를 중지할 수 없기 때문에 Lambda 단계가 실행되는 동안에는 파이프라인 프로세스를 중지할 수 없습니다. Lambda 함수가 실행되는 동안 프로세스를 중지하면 파이프라인은 함수가 완료될 때까지 또는 제한 시간에 도달할 때까지 기다립니다. 둘 중 어느 상황이 먼저 발생하는지에 따라 달라집니다. 그런 다음 프로세스가 중지됩니다. Lambda 함수가 완료되면 파이프라인 프로세스 상태는 Stopped입니다. 제한 시간에 도달하면 파이프라인 프로세스 상태는 Failed입니다.

ClarifyCheck단계를 사용하여 바이어스 분석 및 모델 설명 가능성에 대해 이전 기준 대비 기준 드리프트 검사를 수행할 수 있습니다. 그런 다음 model.register()메서드로 기준을 생성 및 등록하고 해당 메서드의 결과를 step_args을 사용하여 모델 단계에 전달할 수 있습니다. Amazon SageMaker Model Monitor는 이러한 드리프트 검사 기준을 모델 엔드포인트에 사용할 수 있습니다. 따라서 기준 제안을 별도로 수행할 필요가 없습니다.

ClarifyCheck 단계에서는 모델 레지스트리에서 드리프트 검사의 기준을 가져올 수도 있습니다. 이 ClarifyCheck 단계에서는 SageMaker Clarify 사전 구축 컨테이너를 사용합니다. 이 컨테이너는 제약 조건 제안 및 주어진 기준에 대한 제약 조건 검증을 비롯한 다양한 모델 모니터링 기능을 제공합니다. 자세한 내용은 사전 구축된 SageMaker Clarify 컨테이너 단원을 참조하십시오.

ClarifyCheck 단계 구성

파이프라인에서 사용할 때마다 사용 가능한 검사 유형 중 하나만을 수행하도록 ClarifyCheck단계를 구성할 수 있습니다.

  • 데이터 바이어스 검사

  • 모델 바이어스 검사

  • 모델 설명 가능성 검사

그러기 위해 clarify_check_config 파라미터를 다음 검사 유형 값 중 하나로 설정합니다.

  • DataBiasCheckConfig

  • ModelBiasCheckConfig

  • ModelExplainabilityCheckConfig

ClarifyCheck 단계에서는 SageMaker AI Clarify 사전 구축 컨테이너를 실행하는 처리 작업을 시작하고 검사 및 처리 작업을 위한 전용 구성이 필요합니다. ClarifyCheckConfigCheckJobConfig는 이러한 구성에 대한 헬퍼 함수입니다. 이러한 헬퍼 함수는 SageMaker Clarify 처리 작업이 모델 편향, 데이터 편향 또는 모델 설명 가능성을 확인하기 위해 계산하는 방식과 일치합니다. 자세한 내용은 편향 분석 및 설명 가능성을 위한 SageMaker Clarify 처리 작업 실행 단원을 참조하십시오.

드리프트 검사의 단계 동작 제어

ClarifyCheck 단계의 동작을 제어하려면 다음 두 개의 부울 플래그가 필요합니다.

  • skip_check: 이 파라미터는 이전 기준에 대한 드리프트 검사를 건너뛰었는지 여부를 나타냅니다. False로 설정된 경우 구성된 검사 유형의 이전 기준을 사용할 수 있어야 합니다.

  • register_new_baseline: 이 파라미터는 BaselineUsedForDriftCheckConstraints단계 속성을 통해 새로 계산된 기준에 액세스할 수 있는지 여부를 나타냅니다. False로 설정된 경우 구성된 검사 유형의 이전 기준 역시 사용할 수 있어야 합니다. BaselineUsedForDriftCheckConstraints 속성을 통해 액세스할 수 있습니다.

자세한 내용은 Amazon SageMaker Pipelines의 ClarifyCheck 및 QualityCheck 단계를 사용한 기준 계산, 드리프트 감지 및 수명 주기섹션을 참조하세요.

기준 작업

선택적으로 model_package_group_name을 지정하여 기존 기준을 찾을 수 있습니다. 그런 다음 ClarifyCheck 단계는 모델 패키지 그룹의 승인된 최신 모델 패키지에서 DriftCheckBaselines을 가져옵니다.

또는 supplied_baseline_constraints파라미터를 통해 이전 기준을 제공할 수 있습니다. model_package_group_name, supplied_baseline_constraints를 모두 지정하는 경우 ClarifyCheck단계에서는 supplied_baseline_constraints파라미터로 지정된 기준을 사용합니다.

ClarifyCheck 단계 요구 사항 사용에 대한 자세한 내용은 Amazon SageMaker SageMaker AI SDK for Python sagemaker.workflow.stepsClarifyCheckStep를 참조하세요. 파이프라인에서 ClarifyCheck 단계를 사용하는 방법을 보여주는 Amazon SageMaker Studio Classic 노트북은 sagemaker-pipeline-model-monitor-clarify-steps.ipynb를 참조하세요.

예 데이터 바이어스 검사를 위한 ClarifyCheck단계 생성
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="ml.c5.xlarge", volume_size_in_gb=120, sagemaker_session=sagemaker_session, ) data_bias_data_config = DataConfig( s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri, s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep']), label=0, dataset_type="text/csv", s3_analysis_config_output_path=data_bias_analysis_cfg_output_path, ) data_bias_config = BiasConfig( label_values_or_threshold=[15.0], facet_name=[8], facet_values_or_threshold=[[0.5]] ) data_bias_check_config = DataBiasCheckConfig( data_config=data_bias_data_config, data_bias_config=data_bias_config, )h data_bias_check_step = ClarifyCheckStep( name="DataBiasCheckStep", clarify_check_config=data_bias_check_config, check_job_config=check_job_config, skip_check=False, register_new_baseline=False supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json", model_package_group_name="MyModelPackageGroup" )

QualityCheck 단계를 사용하여 파이프라인의 데이터 품질 또는 모델 품질에 대한 이전 기준과 비교하여 기준 제안 및 드리프트 검사를 수행합니다. 그런 다음 model.register() 메서드로 기준을 생성 및 등록하고 해당 메서드의 결과를 step_args를 사용하여 모델 단계에 전달할 수 있습니다.

Model Monitor는 이러한 기준을 모델 엔드포인트의 드리프트 검사에 사용할 수 있으므로 기준 제안을 별도로 수행할 필요가 없습니다. QualityCheck 단계에서는 모델 레지스트리에서 드리프트 검사의 기준을 가져올 수도 있습니다. 이 QualityCheck 단계에서는 Amazon SageMaker AI Model Monitor 사전 구축 컨테이너를 활용합니다. 이 컨테이너에는 제약 조건 제안, 통계 생성, 주어진 기준에 대한 제약 조건 검증을 비롯한 다양한 모델 모니터링 기능이 있습니다. 자세한 내용은 Amazon SageMaker Model Monitor 사전 구축 컨테이너 단원을 참조하십시오.

QualityCheck 단계 구성

파이프라인에서 사용할 때마다 사용 가능한 검사 유형 중 하나만을 실행하도록 QualityCheck 단계를 구성할 수 있습니다.

  • 데이터 품질 검사

  • 모델 품질 검사

다음 검사 유형 값 중 하나로 quality_check_config파라미터를 설정하여 이 작업을 수행합니다.

  • DataQualityCheckConfig

  • ModelQualityCheckConfig

QualityCheck 단계에서는 Model Monitor 사전 빌드된 컨테이너를 실행하는 처리 작업을 시작하며 검사 및 처리 작업을 위한 전용 구성이 필요합니다. QualityCheckConfigCheckJobConfig는 이러한 구성에 대한 도우미 함수입니다. 이러한 도우미 함수는 Model Monitor가 모델 품질 또는 데이터 품질 모니터링을 위한 기준을 만드는 방식에 부합합니다. 모델 모니터 기준 제안에 대한 자세한 내용은 기준 생성, 모델 품질 기준 만들기섹션을 참조하세요.

드리프트 검사의 단계 동작 제어

QualityCheck 단계의 동작을 제어하려면 다음 두 개의 부울 플래그가 필요합니다.

  • skip_check: 이 파라미터는 이전 기준에 대한 드리프트 검사를 건너뛰었는지 여부를 나타냅니다. False로 설정된 경우 구성된 검사 유형의 이전 기준을 사용할 수 있어야 합니다.

  • register_new_baseline: 이 파라미터는 단계 속성 BaselineUsedForDriftCheckConstraintsBaselineUsedForDriftCheckStatistics를 통해 새로 계산된 기준에 액세스할 수 있는지 여부를 나타냅니다. False로 설정된 경우 구성된 검사 유형의 이전 기준 역시 사용할 수 있어야 합니다. BaselineUsedForDriftCheckConstraintsBaselineUsedForDriftCheckStatistics속성을 통해 이러한 속성에 액세스할 수 있습니다.

자세한 내용은 Amazon SageMaker Pipelines의 ClarifyCheck 및 QualityCheck 단계를 사용한 기준 계산, 드리프트 감지 및 수명 주기섹션을 참조하세요.

기준 작업

supplied_baseline_statisticssupplied_baseline_constraints 파라미터를 통해 직접 이전 기준을 지정할 수 있습니다. 또한 model_package_group_name을 지정할 수 있으며, QualityCheck 단계는 모델 패키지 그룹의 승인된 최신 모델 패키지에서 DriftCheckBaselines을 가져옵니다.

다음을 지정하면 QualityCheck 단계는 QualityCheck 단계의 검사 유형에서 supplied_baseline_constraintssupplied_baseline_statistics으로 지정된 기준을 사용합니다.

  • model_package_group_name

  • supplied_baseline_constraints

  • supplied_baseline_statistics

QualityCheck 단계 요구 사항 사용에 대한 자세한 내용은 Amazon SageMaker SageMaker AI SDK for Pythonsagemaker.workflow.stepsQualityCheckStep를 참조하세요. 파이프라인에서 QualityCheck 단계를 사용하는 방법을 보여주는 Amazon SageMaker Studio Classic 노트북은 sagemaker-pipeline-model-monitor-clarify-steps.ipynb를 참조하세요.

예 데이터 품질 검사를 위한 QualityCheck단계 생성
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="ml.c5.xlarge", volume_size_in_gb=120, sagemaker_session=sagemaker_session, ) data_quality_check_config = DataQualityCheckConfig( baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri, dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"), output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep']) ) data_quality_check_step = QualityCheckStep( name="DataQualityCheckStep", skip_check=False, register_new_baseline=False, quality_check_config=data_quality_check_config, check_job_config=check_job_config, supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json", supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json", model_package_group_name="MyModelPackageGroup" )

Amazon SageMaker Pipelines EMR 단계를 사용하여 다음을 수행합니다.

Amazon에 대한 자세한 내용은 Amazon 시작하기를 EMR참조하세요. EMR

이 EMR 단계에서는 Amazon EMR 클러스터에서 사용하는 JAR 파일의 위치와 전달할 인수를 EMRStepConfig 포함해야 합니다. 또한 실행 중인 EMR 클러스터에서 단계를 실행하려는 경우 Amazon EMR 클러스터 ID를 제공합니다. 클러스터 구성을 전달하여 클러스터가 생성, 관리 및 종료하는 클러스터에서 EMR 단계를 실행할 수도 있습니다. 다음 섹션에는 두 가지 방법을 모두 보여주는 샘플 노트북으로 연결되는 링크와 예제가 포함되어 있습니다.

참고
  • EMR 단계를 수행하려면 파이프라인에 전달된 역할에 추가 권한이 있어야 합니다. AWS 관리형 정책인 AmazonSageMakerPipelinesIntegrations을 파이프라인 역할에 연결하거나 역할에 해당 정책의 권한이 포함되어 있는지 확인합니다.

  • EMR EMR 서버리스에서는 단계가 지원되지 않습니다. 또한 Amazon EMR on 에서는 지원되지 않습니다EKS.

  • 실행 중인 클러스터에서 EMR 단계를 처리하는 경우 다음 상태 중 하나인 클러스터만 사용할 수 있습니다.

    • STARTING

    • BOOTSTRAPPING

    • RUNNING

    • WAITING

  • 실행 중인 클러스터에서 EMR 단계를 처리하는 경우 EMR 클러스터의 PENDING 상태에서 최대 256EMR개의 단계를 가질 수 있습니다.이 제한을 초과하여 제출된 EMR 단계는 파이프라인 실행 실패를 초래합니다. 파이프라인 단계에 대한 재시도 정책 사용을 고려해 볼 수 있습니다.

  • 클러스터 ID와 클러스터 구성 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

  • 이 EMR 단계는 Amazon을 사용하여 EMR 단계 또는 클러스터 상태의 변경 사항을 EventBridge 모니터링합니다. 실행 중인 클러스터에서 Amazon EMR 작업을 처리하는 경우이 EMR 단계에서는 SageMakerPipelineExecutionEMRStepStatusUpdateRule 규칙을 사용하여 EMR 단계 상태를 모니터링합니다. EMR 단계가 생성한 클러스터에서 작업을 처리하는 경우이 단계에서는 SageMakerPipelineExecutionEMRClusterStatusRule 규칙을 사용하여 클러스터 상태의 변경 사항을 모니터링합니다. AWS 계정에 이러한 EventBridge 규칙 중 하나가 표시되면 삭제하지 마십시오. 그렇지 않으면 EMR 단계가 완료되지 않을 수 있습니다.

실행 중인 Amazon EMR 클러스터에서 새 작업 시작

실행 중인 Amazon EMR 클러스터에서 새 작업을 시작하려면 클러스터 ID를의 cluster_id 인수에 문자열로 전달합니다EMRStep. 다음 예에서는 이 절차를 보여 줍니다.

from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_config = EMRStepConfig( jar="jar-location", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) step_emr = EMRStep ( name="EMRSampleStep", # required cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster step_config=emr_config, # required display_name="My EMR Step", description="Pipeline step to execute EMR job" )

전체 예제를 안내하는 샘플 노트북은 Pipelines EMR Step With Running EMR Cluster를 참조하세요.

새 Amazon EMR 클러스터에서 새 작업 시작

EMRStep이 사용자를 대신해 만드는 새 클러스터에서 새 작업을 시작하려면 클러스터 구성을 딕셔너리로 제공합니다. 사전은 RunJobFlow 요청과 동일한 구조를 가져야 합니다. 하지만 클러스터 구성에 다음 필드를 포함시키지 마세요.

  • [Name]

  • [Steps]

  • [AutoTerminationPolicy]

  • [Instances][KeepJobFlowAliveWhenNoSteps]

  • [Instances][TerminationProtected]

다른 모든 RunJobFlow인수는 클러스터 구성에서 사용할 수 있습니다. 요청 구문에 대한 자세한 내용은 섹션을 참조하세요RunJobFlow.

다음 예제에서는 클러스터 구성을 EMR 단계 정의에 전달합니다. 그러면 새 EMR 클러스터에서 새 작업을 시작하는 단계가 표시됩니다. 이 예제의 EMR 클러스터 구성에는 기본 및 코어 EMR 클러스터 노드에 대한 사양이 포함되어 있습니다. Amazon EMR 노드 유형에 대한 자세한 내용은 노드 유형 이해: 기본, 코어 및 작업 노드를 참조하세요.

from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_step_config = EMRStepConfig( jar="jar-location", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) # include your cluster configuration as a dictionary emr_cluster_config = { "Applications": [ { "Name": "Spark", } ], "Instances":{ "InstanceGroups":[ { "InstanceRole": "MASTER", "InstanceCount": 1, "InstanceType": "m5.2xlarge" }, { "InstanceRole": "CORE", "InstanceCount": 2, "InstanceType": "m5.2xlarge" } ] }, "BootstrapActions":[], "ReleaseLabel": "emr-6.6.0", "JobFlowRole": "job-flow-role", "ServiceRole": "service-role" } emr_step = EMRStep( name="emr-step", cluster_id=None, display_name="emr_step", description="MyEMRStepDescription", step_config=emr_step_config, cluster_config=emr_cluster_config )

전체 예제를 안내하는 샘플 노트북은 Pipelines EMR Step With Cluster Lifecycle Management를 참조하세요.

NotebookJobStep를 사용하여 파이프라인 단계로 SageMaker 노트북 작업을 대화형이 아닌 방식으로 실행합니다. 파이프라인 UI에서 파이프라인 drag-and-drop을 빌드하는 경우를 사용하여 노트북코드 실행 단계을 실행합니다. SageMaker 노트북 작업에 대한 자세한 내용은 섹션을 참조하세요SageMaker 노트북 작업.

에는 최소한 입력 노트북, 이미지 URI 및 커널 이름이 NotebookJobStep 필요합니다. 노트북 작업 단계 요구 사항 및 단계를 사용자 지정하도록 설정할 수 있는 기타 파라미터에 대한 자세한 내용은 sagemaker.workflow.steps를 참조하세요NotebookJobStep.

다음 예시에서는 최소 인수를 사용하여 NotebookJobStep을 정의합니다.

from sagemaker.workflow.notebook_job_step import NotebookJobStep notebook_job_step = NotebookJobStep( input_notebook=input_notebook, image_uri=image_uri, kernel_name=kernel_name )

NotebookJobStep 파이프라인 단계는 SageMaker 노트북 작업으로 처리됩니다. 따라서 tags 인수에 특정 태그를 포함하여 Studio Classic UI 노트북 작업 대시보드에서 실행 상태를 추적합니다. 포함할 태그에 대한 자세한 내용은 Studio UI 대시보드에서 노트북 작업 보기 섹션을 참조하세요.

또한 SageMaker Python를 사용하여 노트북 작업을 예약SDK하는 경우 노트북 작업을 실행할 특정 이미지만 지정할 수 있습니다. 자세한 내용은 SageMaker AI Python SDK 노트북 작업에 대한 이미지 제약 조건 단원을 참조하십시오.

원하는 조건 또는 상태가 달성되지 않으면 실패 단계를 사용하여 Amazon SageMaker Pipelines 실행을 중지합니다. 또한 실패 단계를 사용하여 파이프라인 실행 실패의 원인을 나타내는 사용자 지정 오류 메시지를 입력할 수 있습니다.

참고

실패 단계 및 다른 파이프라인 단계를 동시에 실행하면 모든 동시 작업 단계가 완료될 때까지 파이프라인이 종료되지 않습니다.

실패 단계 사용에 대한 제한 사항

  • 다른 단계의 DependsOn 목록에 실패 단계를 추가할 수 없습니다. 자세한 내용은 단계 간 사용자 지정 종속성 단원을 참조하십시오.

  • 다른 단계는 실패 단계를 참조할 수 없습니다. 이는 항상 파이프라인 실행의 마지막 단계입니다.

  • 실패 단계로 끝나는 파이프라인 실행은 재시도할 수 없습니다.

정적 텍스트 문자열 형태로 실패 단계 오류 메시지를 만들 수 있습니다. 또는 파이프라인 파라미터, 인 작업 또는 기타 단계 속성을 사용하여를 사용하는 경우 보다 유용한 오류 메시지를 생성할 수도 있습니다SDK.

Pipeline Designer

파이프라인에 실패 단계를 추가하려면 다음을 수행합니다.

  1. Amazon SageMaker Studio 시작의 지침에 따라 Studio 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 파이프라인을 클릭합니다.

  3. 생성(Create)을 선택합니다.

  4. 비어 있음을 선택합니다.

  5. 왼쪽 사이드바에서 실패를 선택하고 캔버스로 드래그합니다.

  6. 캔버스에서 추가한 실패 단계를 선택합니다.

  7. 오른쪽 사이드바의 설정세부 정보 탭에서 양식을 작성합니다. 이러한 탭의 필드에 대한 자세한 내용은 sagemaker.workflow.fail_step을 참조하세요FailStep.

  8. 캔버스에 추가한 실패 단계 바로 앞에 있는 단계가 포함된 경우 커서를 클릭하고 단계에서 실패 단계로 드래그하여 엣지를 만듭니다.

  9. 캔버스에 추가한 실패 단계 바로 뒤에 있는 단계가 포함된 경우 실패 단계에서 커서를 클릭하고 단계로 드래그하여 엣지를 만듭니다.

SageMaker Python SDK

다음 예제 코드 스니펫은 파이프라인 파라미터로 구성된 ErrorMessageJoin작업을 사용하는 FailStep을 사용합니다.

from sagemaker.workflow.fail_step import FailStep from sagemaker.workflow.functions import Join from sagemaker.workflow.parameters import ParameterInteger mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5) step_fail = FailStep( name="AbaloneMSEFail", error_message=Join( on=" ", values=["Execution failed due to MSE >", mse_threshold_param] ), )