기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
파이프라인 실행
파이프라인의 단계를 지시된 비순환 그래프(DAG)로 정의한 후 파이프라인을 실행하여 에 정의된 단계를 실행할 수 있습니다DAG. 다음 연습에서는 Amazon SageMaker Studio의 시각적 편집기 또는 Amazon SageMaker Python 을 drag-and-drop 사용하여 Amazon SageMaker 파이프라인을 실행하는 방법을 보여줍니다SDK.
파이프라인의 새 실행을 시작하려면 다음을 수행합니다.
SageMaker Python 을 사용하여 파이프라인 정의를 생성한 후 SDK에 제출하여 실행 SageMaker 을 시작할 수 있습니다. 다음 튜토리얼에서는 파이프라인을 제출하고, 실행을 시작하고, 해당 실행의 결과를 검사하고, 파이프라인을 삭제하는 방법을 보여줍니다.
사전 조건
이 튜토리얼을 시작하려면 다음이 필요합니다.
-
SageMaker 노트북 인스턴스입니다.
-
파이프라인 파이프라인 정의입니다. 이 튜토리얼에서는 파이프라인 정의튜토리얼을 완료하여 생성한 파이프라인 정의를 사용하고 있다고 가정합니다.
1단계: 파이프라인 시작
먼저, 파이프라인을 시작해야 합니다.
파이프라인을 시작하려면
-
JSON 파이프라인 정의를 검사하여 형식이 올바른지 확인합니다.
import json json.loads(pipeline.definition())
-
파이프라인 정의가 없는 경우 파이프라인 서비스에 제출하여 파이프라인을 생성하거나, 없는 경우 파이프라인을 업데이트합니다. 에 전달된 역할은 파이프라인에서 단계에 정의된 모든 작업을 생성하는 데 사용됩니다.
pipeline.upsert(role_arn=role)
-
파이프라인 실행을 시작합니다.
execution = pipeline.start()
2단계: 파이프라인 실행 검사
다음으로 파이프라인 실행을 검사해야 합니다.
파이프라인 실행을 검사하려면
-
파이프라인 실행 상태를 설명하여 파이프라인이 성공적으로 생성되고 시작되었는지 확인합니다.
execution.describe()
-
실행이 마칠 때까지 기다립니다.
execution.wait()
-
실행 단계 및 상태를 나열합니다.
execution.list_steps()
출력은 다음과 같아야 합니다.
[{'StepName': 'AbaloneTransform', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}}, {'StepName': 'AbaloneRegisterModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}}, {'StepName': 'AbaloneCreateModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}}, {'StepName': 'AbaloneMSECond', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Condition': {'Outcome': 'True'}}}, {'StepName': 'AbaloneEval', 'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}}, {'StepName': 'AbaloneTrain', 'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}}, {'StepName': 'AbaloneProcess', 'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
-
파이프라인 실행이 완료되면 Amazon S3에서 결과
evaluation.json
파일을 다운로드하여 보고서를 검사합니다.evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)
3단계: 파이프라인 실행을 위한 기본 파라미터 재정의
다른 파이프라인 파라미터를 지정하여 기본값을 재정의함으로써 파이프라인을 추가로 실행할 수 있습니다.
기본 파라미터를 재정의하려면
-
파이프라인 실행을 생성합니다. 그러면 모델 승인 상태 재정의가 “승인됨”으로 설정된 상태에서 또 다른 파이프라인 실행이 시작됩니다. 즉,
RegisterModel
단계에서 생성된 모델 패키지 버전은 SageMaker 프로젝트와 같은 CI/CD 파이프라인을 통해 자동으로 배포할 수 있습니다. 자세한 내용은 MLOps SageMaker 프로젝트를 통한 자동화 단원을 참조하십시오.execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
-
실행이 마칠 때까지 기다립니다.
execution.wait()
-
실행 단계 및 상태를 나열합니다.
execution.list_steps()
-
파이프라인 실행이 완료되면 Amazon S3에서 결과
evaluation.json
파일을 다운로드하여 보고서를 검사합니다.evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)
4단계: 파이프라인 실행 중지 및 삭제
파이프라인 사용을 마치면 진행 중인 실행을 중단하고 파이프라인을 삭제할 수 있습니다.
파이프라인 실행 중지 및 삭제하려면
-
파이프라인 실행을 중지합니다.
execution.stop()
-
파이프라인을 삭제합니다.
pipeline.delete()