파이프라인 실행 - 아마존 SageMaker

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

파이프라인 실행

SageMaker SDKPython을 사용하여 파이프라인 정의를 생성한 후 이를 SageMaker 제출하여 실행을 시작할 수 있습니다. 다음 튜토리얼에서는 파이프라인을 제출하고, 실행을 시작하고, 해당 실행의 결과를 검사하고, 파이프라인을 삭제하는 방법을 보여줍니다.

사전 조건

이 튜토리얼을 시작하려면 다음이 필요합니다.

  • SageMaker 노트북 인스턴스. 

  • SageMaker 파이프라인 파이프라인 정의. 이 튜토리얼에서는 Amazon SageMaker 모델 구축 파이프라인 정의튜토리얼을 완료하여 생성한 파이프라인 정의를 사용하고 있다고 가정합니다.

1단계: 파이프라인 시작

먼저, 파이프라인을 시작해야 합니다.

파이프라인을 시작하려면
  1. JSON파이프라인 정의를 검사하여 형식이 올바른지 확인하세요.

    import json json.loads(pipeline.definition())
  2. 파이프라인 정의를 SageMaker Pipelines 서비스에 제출하여 파이프라인이 없으면 생성하거나 파이프라인이 있으면 업데이트하세요. 전달된 역할은 SageMaker 파이프라인에서 단계에 정의된 모든 작업을 생성하는 데 사용됩니다.

    pipeline.upsert(role_arn=role)
  3. 파이프라인 실행을 시작합니다.

    execution = pipeline.start()

2단계: 파이프라인 실행 검사

다음으로 파이프라인 실행을 검사해야 합니다.

파이프라인 실행을 검사하려면
  1. 파이프라인 실행 상태를 설명하여 파이프라인이 성공적으로 생성되고 시작되었는지 확인합니다.

    execution.describe()
  2. 실행이 마칠 때까지 기다립니다.

    execution.wait()
  3. 실행 단계 및 상태를 나열합니다.

    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'}}}]
  4. 파이프라인 실행이 완료되면 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단계: 파이프라인 실행을 위한 기본 파라미터 재정의

다른 파이프라인 파라미터를 지정하여 기본값을 재정의함으로써 파이프라인을 추가로 실행할 수 있습니다.

기본 파라미터를 재정의하려면
  1. 파이프라인 실행을 생성합니다. 그러면 모델 승인 상태 재정의가 “승인됨”으로 설정된 상태에서 또 다른 파이프라인 실행이 시작됩니다. 즉, RegisterModel 단계에서 생성된 모델 패키지 버전은 프로젝트와 같은 CI/CD 파이프라인을 통해 자동으로 배포할 준비가 됩니다. SageMaker 자세한 내용은 SageMaker 프로젝트를 MLOps 통한 자동화 단원을 참조하십시오.

    execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
  2. 실행이 마칠 때까지 기다립니다.

    execution.wait()
  3. 실행 단계 및 상태를 나열합니다.

    execution.list_steps()
  4. 파이프라인 실행이 완료되면 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단계: 파이프라인 실행 중지 및 삭제

파이프라인 사용을 마치면 진행 중인 실행을 중단하고 파이프라인을 삭제할 수 있습니다.

파이프라인 실행 중지 및 삭제하려면
  1. 파이프라인 실행을 중지합니다.

    execution.stop()
  2. 파이프라인을 삭제합니다.

    pipeline.delete()