Jadwalkan Pipeline Runs - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jadwalkan Pipeline Runs

Anda dapat menjadwalkan eksekusi Amazon SageMaker Pipelines Anda menggunakan Amazon. EventBridge Amazon SageMaker Pipelines didukung sebagai target di Amazon EventBridge. Ini memungkinkan Anda untuk memulai eksekusi pipa bangunan model Anda berdasarkan peristiwa apa pun di bus acara Anda. Dengan EventBridge, Anda dapat mengotomatiskan eksekusi pipeline dan merespons secara otomatis peristiwa seperti pekerjaan pelatihan atau perubahan status titik akhir. Acara mencakup file baru yang diunggah ke bucket Amazon S3, perubahan status titik akhir Amazon karena drift, dan topik SageMaker Amazon Simple Notification SNS Service ().

Tindakan Pipelines berikut dapat dimulai secara otomatis: 

  • StartPipelineExecution

Untuk informasi selengkapnya tentang penjadwalan SageMaker pekerjaan, lihat Mengotomatisasi dengan SageMaker Amazon. EventBridge

Jadwalkan Pipeline dengan Amazon EventBridge

Untuk memulai eksekusi pipeline dengan Amazon CloudWatch Events, Anda harus membuat EventBridge aturan. Saat membuat aturan untuk acara, Anda menentukan tindakan target yang akan diambil saat EventBridge menerima peristiwa yang cocok dengan aturan. Ketika suatu peristiwa cocok dengan aturan, EventBridge mengirimkan acara ke target yang ditentukan dan memulai tindakan yang ditentukan dalam aturan.

Tutorial berikut menunjukkan cara menjadwalkan eksekusi pipeline dengan EventBridge menggunakan EventBridge konsol atau AWS CLI. 

Prasyarat

  • Peran yang EventBridge dapat diasumsikan dengan SageMaker::StartPipelineExecution izin. Peran ini dapat dibuat secara otomatis jika Anda membuat aturan dari EventBridge konsol; jika tidak, Anda perlu membuat peran ini sendiri. Untuk informasi tentang membuat SageMaker peran, lihat SageMaker Peran.

  • SageMaker Pipeline Amazon untuk menjadwalkan. Untuk membuat SageMaker Pipeline Amazon, lihat Mendefinisikan Pipeline.

Buat EventBridge aturan menggunakan EventBridge konsol

Prosedur berikut menunjukkan cara membuat EventBridge aturan menggunakan EventBridge konsol. 

  1. Navigasikan ke konsol EventBridge tersebut.

  2. Pilih Aturan di sisi kiri.

  3. Pilih Create Rule.

  4. Masukkan nama dan deskripsi untuk aturan Anda.

  5. Pilih bagaimana Anda ingin memulai aturan ini. Anda memiliki pilihan berikut untuk aturan Anda:

    • Pola acara: Aturan Anda dimulai ketika peristiwa yang cocok dengan pola terjadi. Anda dapat memilih pola yang telah ditentukan yang cocok dengan jenis acara tertentu, atau Anda dapat membuat pola kustom. Jika Anda memilih pola yang telah ditentukan, Anda dapat mengedit pola untuk menyesuaikannya. Untuk informasi selengkapnya tentang pola Peristiwa, lihat Pola CloudWatch Peristiwa di Acara.

    • Jadwal: Aturan Anda dimulai secara teratur pada jadwal yang ditentukan. Anda dapat menggunakan jadwal tarif tetap yang dimulai secara teratur untuk jumlah menit, jam, atau minggu tertentu. Anda juga dapat menggunakan ekspresi cron untuk membuat jadwal yang lebih halus, seperti “Senin pertama setiap bulan pukul 8 pagi.” Jadwal tidak didukung pada bus acara khusus atau mitra.

  6. Pilih bus acara yang Anda inginkan.

  7. Pilih target yang akan dipanggil saat acara cocok dengan pola acara Anda atau saat jadwal dimulai. Anda dapat menambahkan hingga 5 target per aturan. Pilih SageMaker Pipeline dalam daftar tarik-turun target.

  8. Pilih pipeline yang ingin Anda mulai dari daftar dropdown pipeline.

  9. Tambahkan parameter untuk diteruskan ke eksekusi pipeline Anda menggunakan nama dan pasangan nilai. Nilai parameter bisa statis atau dinamis. Untuk informasi selengkapnya tentang parameter Amazon SageMaker Pipeline, lihat AWS: :Events: SagemakerPipelineParameters :Rule.

    • Nilai statis diteruskan ke eksekusi pipeline setiap kali pipeline dimulai. Misalnya, jika {"Name": "Instance_type", "Value": "ml.4xlarge"} ditentukan dalam daftar parameter, maka itu dilewatkan sebagai parameter di StartPipelineExecutionRequest setiap kali EventBridge memulai pipeline.

    • Nilai dinamis ditentukan menggunakan JSON jalur. EventBridge mem-parsing nilai dari muatan peristiwa, lalu meneruskannya ke eksekusi pipeline. Misalnya: $.detail.param.value

  10. Pilih peran yang akan digunakan untuk aturan ini. Anda dapat menggunakan peran yang ada atau membuat yang baru.

  11. (Opsional) Tambahkan tag.

  12. Pilih Create untuk menyelesaikan aturan Anda.

Aturan Anda sekarang berlaku dan siap untuk memulai eksekusi pipeline Anda.

Buat EventBridge aturan menggunakan AWS CLI

Prosedur berikut menunjukkan cara membuat EventBridge aturan menggunakan AWS CLI.

  1. Buat aturan yang akan dimulai. Saat membuat EventBridge aturan menggunakan AWS CLI, Anda memiliki dua opsi untuk bagaimana aturan Anda dimulai, pola acara dan jadwal.

    • Pola acara: Aturan Anda dimulai ketika peristiwa yang cocok dengan pola terjadi. Anda dapat memilih pola yang telah ditentukan yang cocok dengan jenis acara tertentu, atau Anda dapat membuat pola kustom. Jika Anda memilih pola yang telah ditentukan, Anda dapat mengedit pola untuk menyesuaikannya.  Anda dapat membuat aturan dengan pola acara menggunakan perintah berikut:

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • Jadwal: Aturan Anda dimulai secara teratur pada jadwal yang ditentukan. Anda dapat menggunakan jadwal tarif tetap yang dimulai secara teratur untuk jumlah menit, jam, atau minggu tertentu. Anda juga dapat menggunakan ekspresi cron untuk membuat jadwal yang lebih halus, seperti “Senin pertama setiap bulan pukul 8 pagi.” Jadwal tidak didukung pada bus acara khusus atau mitra. Anda dapat membuat aturan dengan jadwal menggunakan perintah berikut:

      aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
  2. Tambahkan target untuk dipanggil saat acara cocok dengan pola acara Anda atau saat jadwal dimulai. Anda dapat menambahkan hingga 5 target per aturan.  Untuk setiap target, Anda harus menentukan: 

    • ARN: Sumber ARN daya pipa Anda.

    • PeranARN: ARN Peran EventBridge harus diasumsikan untuk mengeksekusi pipa.

    • Parameter: Parameter SageMaker pipa Amazon untuk dilewati.

  3. Jalankan perintah berikut untuk meneruskan SageMaker pipeline Amazon sebagai target ke aturan Anda menggunakan put-target:

    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>}]} }]"] 

Jadwalkan pipeline dengan SageMaker Python SDK

Bagian berikut menunjukkan cara mengatur izin untuk mengakses EventBridge sumber daya dan membuat jadwal pipeline Anda menggunakan SageMaker PythonSDK.

Izin yang diperlukan

Anda harus memiliki izin yang diperlukan untuk menggunakan penjadwal pipa. Selesaikan langkah-langkah berikut untuk mengatur izin Anda:

  1. Lampirkan kebijakan hak istimewa minimum berikut ke IAM peran yang digunakan untuk membuat pemicu pipeline, atau gunakan AWS kebijakan terkelolaAmazonEventBridgeSchedulerFullAccess.

    { "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. Membangun hubungan kepercayaan EventBridge dengan menambahkan prinsip layanan scheduler.amazonaws.com ke kebijakan kepercayaan peran ini. Pastikan Anda melampirkan kebijakan kepercayaan berikut ke peran eksekusi jika Anda meluncurkan buku catatan di SageMaker Studio.

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

Buat jadwal pipeline

Dengan menggunakan PipelineSchedule konstruktor, Anda dapat menjadwalkan pipeline untuk dijalankan sekali atau pada interval yang telah ditentukan. Jadwal pipa harus dari jenisat,rate, ataucron. Kumpulan jenis penjadwalan ini merupakan perpanjangan dari opsi EventBridge penjadwalan. Untuk informasi selengkapnya tentang cara menggunakan PipelineSchedule class, lihat sagemaker.workflow.triggers. PipelineSchedule. Contoh berikut menunjukkan cara membuat setiap jenis penjadwalan dengan. 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" )
catatan

Jika Anda membuat jadwal satu kali dan perlu mengakses waktu saat ini, gunakan datetime.utcnow() sebagai gantinya. datetime.now() Yang terakhir tidak menyimpan konteks zona saat ini dan menghasilkan waktu yang salah EventBridge.

Pasang pelatuk ke pipa Anda

Untuk melampirkan PipelineSchedule ke pipeline, panggil put_triggers panggilan pada objek pipeline yang Anda buat dengan daftar pemicu. Jika Anda mendapatkan responsARN, Anda berhasil membuat jadwal di akun Anda dan EventBridge mulai memanggil pipeline target pada waktu atau tarif yang ditentukan. Anda harus menentukan peran dengan izin yang benar untuk melampirkan pemicu ke pipeline induk. Jika Anda tidak menyediakannya, Pipelines mengambil peran default yang digunakan untuk membuat pipeline dari file konfigurasi.

Contoh berikut menunjukkan cara melampirkan jadwal ke pipa.

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>)

Jelaskan pemicu saat ini

Untuk mengambil informasi tentang pemicu pipeline yang dibuat, Anda dapat memanggil describe_trigger() API dengan nama pemicu. Perintah ini mengembalikan detail tentang ekspresi jadwal yang dibuat seperti waktu mulai, status diaktifkan, dan informasi berguna lainnya. Cuplikan berikut menunjukkan contoh pemanggilan:

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

Sumber daya pemicu pembersihan

Sebelum menghapus pipeline, bersihkan pemicu yang ada untuk menghindari kebocoran sumber daya di akun Anda. Anda harus menghapus pemicu sebelum menghancurkan pipeline induk. Anda dapat menghapus pemicu Anda dengan meneruskan daftar nama pemicu ke. delete_triggers API Cuplikan berikut menunjukkan cara menghapus pemicu.

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

Waspadai batasan berikut saat Anda menghapus pemicu:

  • Opsi untuk menghapus pemicu dengan menentukan nama pemicu hanya tersedia di Python SageMaker . SDK Menghapus pipeline di CLI atau DeletePipeline API panggilan tidak menghapus pemicu Anda. Akibatnya, pemicu menjadi yatim piatu dan SageMaker mencoba untuk memulai lari untuk pipa yang tidak ada.

  • Juga, jika Anda menggunakan sesi notebook lain atau sudah menghapus target pipeline, bersihkan jadwal yatim piatu melalui penjadwal atau konsol. CLI EventBridge