파이프라인 실행 일정 잡기 - 아마존 SageMaker

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

파이프라인 실행 일정 잡기

Amazon을 사용하여 Amazon SageMaker 모델 구축 파이프라인 실행을 예약할 수 있습니다. EventBridge Amazon SageMaker 모델 구축 파이프라인은 EventBridgeAmazon의 대상으로 지원됩니다. 이를 통해 이벤트 버스의 모든 이벤트를 기반으로 모델 구축 파이프라인의 실행을 시작할 수 있습니다. 를 사용하면 파이프라인 실행을 자동화하고 교육 작업 또는 엔드포인트 상태 변경과 같은 이벤트에 자동으로 대응할 수 있습니다. EventBridge 이벤트에는 Amazon S3 버킷에 업로드되는 새 파일, SageMaker 드리프트로 인한 Amazon 엔드포인트 상태 변경, Amazon 단순 알림 서비스 (SNS) 주제 등이 포함됩니다.

다음 SageMaker 파이프라인 작업을 자동으로 시작할 수 있습니다. 

  • StartPipelineExecution

SageMaker 작업 스케줄링에 대한 자세한 내용은 SageMaker Amazon을 통한 자동화를 참조하십시오. EventBridge

Amazon과 함께 파이프라인 예약하기 EventBridge

Amazon CloudWatch Events로 파이프라인 실행을 시작하려면 EventBridge 규칙을 생성해야 합니다. 이벤트에 대한 규칙을 생성할 때는 규칙과 일치하는 이벤트를 EventBridge 수신했을 때 취할 대상 조치를 지정합니다. 이벤트가 규칙과 일치하면 이벤트를 지정된 대상으로 EventBridge 보내고 규칙에 정의된 작업을 시작합니다.

다음 자습서에서는 EventBridge 콘솔 또는 를 EventBridge 사용하여 파이프라인 실행을 예약하는 방법을 보여줍니다. AWS CLI 

사전 조건

  • SageMaker::StartPipelineExecution권한을 부여받아 맡을 EventBridge 수 있는 역할. EventBridge콘솔에서 규칙을 생성하면 이 역할을 자동으로 생성할 수 있으며, 그렇지 않으면 이 역할을 직접 생성해야 합니다. 역할 생성에 대한 자세한 내용은 SageMaker SageMaker 역할을 참조하십시오.

  • Amazon SageMaker 파이프라인 일정 잡기 Amazon SageMaker 파이프라인을 생성하려면 파이프라인 정의를 참조하십시오.

EventBridge콘솔을 사용하여 EventBridge 규칙을 생성합니다.

다음 절차는 EventBridge 콘솔을 사용하여 EventBridge 규칙을 생성하는 방법을 보여줍니다. 

  1. EventBridge 콘솔로 이동합니다.

  2. 왼쪽에서 규칙을 선택합니다.

  3. Create Rule을 선택합니다.

  4. 규칙의 이름과 설명을 입력합니다.

  5. 이 규칙을 시작하는 방법을 선택합니다. 다음과 같은 선택 사항이 있습니다.

    • 이벤트 패턴: 패턴과 일치하는 이벤트가 발생하면 규칙이 시작됩니다. 특정 유형의 이벤트와 일치하는 사전 정의된 패턴을 선택하거나 사용자 지정 패턴을 만들 수 있습니다. 미리 정의된 패턴을 선택한 경우 패턴을 편집하여 사용자 정의할 수 있습니다. 이벤트 패턴에 대한 자세한 내용은 이벤트의 이벤트 패턴을 참조하십시오. CloudWatch

    • 일정: 규칙은 지정된 일정에 따라 정기적으로 시작됩니다. 지정된 분, 시간 또는 주 동안 정기적으로 시작되는 고정 비율 일정을 사용할 수 있습니다. cron 표현식을 사용하여 “매월 첫 번째 월요일 오전 8시”와 같이 보다 세분화된 일정을 만들 수도 있습니다. 사용자 지정 또는 파트너 이벤트 버스에서는 일정이 지원되지 않습니다.

  6. 원하는 이벤트 버스를 선택합니다.

  7. 이벤트가 이벤트 패턴과 일치하거나 일정이 시작될 때 간접적으로 호출할 대상을 선택합니다. 규칙당 최대 5개의 대상을 추가할 수 있습니다. 대상 드롭다운 목록에서 SageMaker Pipeline을 선택합니다.

  8. 파이프라인 드롭다운 목록에서 시작하려는 파이프라인을 선택합니다.

  9. 이름과 값 쌍을 사용하여 파이프라인 실행에 전달할 파라미터를 추가합니다. 파라미터 값은 정적이거나 동적일 수 있습니다. Amazon SageMaker 파이프라인 파라미터에 대한 자세한 내용은: :EventsAWS: SagemakerPipelineParameters :Rule을 참조하십시오.

    • 파이프라인이 시작될 때마다 정적 값이 파이프라인 실행에 전달됩니다. 예를 들어, 파라미터 목록에서 이 {"Name": "Instance_type", "Value": "ml.4xlarge"} 지정되면 파이프라인이 EventBridge 시작될 StartPipelineExecutionRequest 때마다 파라미터로 전달됩니다.

    • 동적 값은 JSON 경로를 사용하여 지정됩니다. EventBridge 이벤트 페이로드에서 값을 파싱한 다음 파이프라인 실행에 전달합니다. 예: $.detail.param.value

  10. 이 규칙에 사용할 역할을 선택합니다. 기존 역할을 만들거나 새로운 역할을 사용할 수 있습니다.

  11. (선택 사항) 태그를 추가할 수 있습니다.

  12. Create를 선택하면 규칙을 확정할 수 있습니다.

이제 규칙이 적용되어 파이프라인 실행을 시작할 준비가 되었습니다.

를 사용하여 EventBridge 규칙을 생성합니다. AWS CLI

다음 절차는 를 사용하여 EventBridge 규칙을 생성하는 방법을 보여줍니다 AWS CLI.

  1. 시작할 규칙을 생성하세요. 를 사용하여 EventBridge 규칙을 만들 때는 규칙 시작 방법에 대한 두 가지 옵션, 즉 이벤트 패턴 및 일정을 선택할 수 있습니다. AWS CLI

    • 이벤트 패턴: 패턴과 일치하는 이벤트가 발생하면 규칙이 시작됩니다. 특정 유형의 이벤트와 일치하는 사전 정의된 패턴을 선택하거나 사용자 지정 패턴을 만들 수 있습니다. 미리 정의된 패턴을 선택한 경우 패턴을 편집하여 사용자 정의할 수 있습니다.   다음 명령을 사용하면 이벤트 패턴에 규칙을 생성할 수 있습니다.

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • 일정: 규칙은 지정된 일정에 따라 정기적으로 시작됩니다. 지정된 분, 시간 또는 주 동안 정기적으로 시작되는 고정 비율 일정을 사용할 수 있습니다. cron 표현식을 사용하여 “매월 첫 번째 월요일 오전 8시”와 같이 보다 세분화된 일정을 만들 수도 있습니다. 사용자 지정 또는 파트너 이벤트 버스에서는 일정이 지원되지 않습니다. 다음 명령을 사용하면 일정에서도 규칙을 생성할 수 있습니다.

      aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
  2. 이벤트가 이벤트 패턴과 일치하거나 일정이 시작될 때 간접적으로 호출할 대상을 추가합니다. 규칙당 최대 5개의 대상을 추가할 수 있습니다.   각 대상에 대해 다음을 지정해야 합니다. 

    • ARN: ARN 파이프라인의 리소스.

    • 역할ARN: 파이프라인을 실행하는 역할을 EventBridge 맡아야 합니다. ARN

    • 파라미터: 전달할 Amazon SageMaker 파이프라인 파라미터.

  3. 다음 명령을 실행하여 put-targets를 사용하여 Amazon SageMaker 파이프라인을 규칙의 대상으로 전달합니다.

    aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 

SageMaker Python으로 파이프라인 일정 잡기 SDK

다음 섹션에서는 SageMaker Python을 사용하여 EventBridge 리소스에 액세스할 수 있는 권한을 설정하고 파이프라인 일정을 생성하는 방법을 보여줍니다SDK.

필수 권한

파이프라인 스케줄러를 사용하려면 필요한 권한이 있어야 합니다. 권한을 설정하려면 다음 단계를 완료하세요.

  1. 파이프라인 트리거를 생성하는 데 사용된 IAM 역할에 다음과 같은 최소 권한 정책을 연결하거나 AWS 관리형 정책을 사용하십시오. AmazonEventBridgeSchedulerFullAccess

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "scheduler:ListSchedules", "scheduler:GetSchedule", "scheduler:CreateSchedule", "scheduler:UpdateSchedule", "scheduler:DeleteSchedule" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }
  2. 이 역할의 신뢰 정책에 서비스 보안 주체를 EventBridge scheduler.amazonaws.com 추가하여 신뢰 관계를 구축하세요. SageMaker Studio에서 노트북을 실행하는 경우 실행 역할에 다음 신뢰 정책을 연결해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "scheduler.amazonaws.com", "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

파이프라인 일정 만들기

PipelineSchedule생성자를 사용하면 파이프라인이 한 번 또는 미리 정해진 간격으로 실행되도록 스케줄링할 수 있습니다. 파이프라인 스케줄은 atrate, 또는 cron 유형이어야 합니다. 이 스케줄링 유형 세트는 EventBridge 스케줄링 옵션의 확장입니다. PipelineSchedule클래스 사용 방법에 대한 자세한 내용은 sagemaker.workflow.triggers를 참조하십시오. PipelineSchedule. 다음 예제는 를 사용하여 각 스케줄링 유형을 생성하는 방법을 보여줍니다. PipelineSchedule

from sagemaker.workflow.triggers import PipelineSchedule # schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC my_datetime_schedule = PipelineSchedule( name="<schedule-name>", at=datetime(2023, 12, 13, 10, 15, 20) ) # schedules a pipeline run every 5 minutes my_rate_schedule = PipelineSchedule( name="<schedule-name>", rate=(5, "minutes") ) # schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023 my_cron_schedule = PipelineSchedule( name="<schedule-name>", cron="15 10 ? * 6L 2022-2023" )
참고

일회성 일정을 만들고 현재 시간에 액세스해야 하는 경우 대신 를 사용하십시오datetime.utcnow(). datetime.now() 후자는 현재 영역 컨텍스트를 저장하지 않으므로 잘못된 시간이 EventBridge 전달됩니다.

파이프라인에 트리거를 연결합니다.

파이프라인에 PipelineSchedule 연결하려면 생성된 파이프라인 객체에서 트리거 목록을 사용하여 put_triggers 호출을 호출하세요. 응답을 ARN 받으면 계정에 일정이 성공적으로 생성되고 지정된 시간 또는 속도로 대상 파이프라인을 EventBridge 호출하기 시작한 것입니다. 상위 파이프라인에 트리거를 연결하려면 올바른 권한이 있는 역할을 지정해야 합니다. 제공하지 않으면 SageMaker 파이프라인은 구성 파일에서 파이프라인을 생성하는 데 사용된 기본 역할을 가져옵니다.

다음 예제는 파이프라인에 일정을 연결하는 방법을 보여줍니다.

scheduled_pipeline = Pipeline( name="<pipeline-name>", steps=[...], sagemaker_session=<sagemaker-session>, ) custom_schedule = PipelineSchedule( name="<schedule-name>", at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30) ) scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)

현재 트리거에 대해 설명해 주세요.

생성된 파이프라인 트리거에 대한 정보를 검색하려면 트리거 이름을 describe_trigger() API 사용하여 를 호출할 수 있습니다. 이 명령은 생성된 스케줄 표현식에 대한 세부 정보 (예: 시작 시간, 활성화 상태 및 기타 유용한 정보) 를 반환합니다. 다음 스니펫은 예제 호출을 보여줍니다.

scheduled_pipeline.describe_trigger(name="<schedule-name>")

클린업 트리거 리소스

파이프라인을 삭제하기 전에 기존 트리거를 정리하여 계정의 리소스 누수를 방지하세요. 상위 파이프라인을 삭제하기 전에 트리거를 삭제해야 합니다. 트리거 이름 목록을 에 전달하여 트리거를 삭제할 수 있습니다. delete_triggers API 다음 스니펫은 트리거를 삭제하는 방법을 보여줍니다.

pipeline.delete_triggers(trigger_names=["<schedule-name>"])
참고

트리거를 삭제할 때는 다음 제한 사항에 유의하세요.

  • 트리거 이름을 지정하여 트리거를 삭제하는 옵션은 SageMaker SDK Python에서만 사용할 수 있습니다. CLI또는 DeletePipeline API 호출에서 파이프라인을 삭제해도 트리거는 삭제되지 않습니다. 결과적으로 트리거는 분리되어 존재하지 않는 파이프라인에 대한 실행을 SageMaker 시작하려고 시도합니다.

  • 또한 다른 노트북 세션을 사용 중이거나 파이프라인 대상을 이미 삭제한 경우에는 스케줄러 또는 콘솔을 통해 분리된 일정을 정리하십시오. CLI EventBridge