Buat Tindakan pada Aturan Menggunakan Amazon CloudWatch dan AWS Lambda - Amazon SageMaker

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

Buat Tindakan pada Aturan Menggunakan Amazon CloudWatch dan AWS Lambda

Amazon CloudWatch mengumpulkan log pekerjaan pelatihan SageMaker model Amazon dan log pekerjaan pemrosesan aturan Amazon SageMaker Debugger. Konfigurasikan Debugger dengan Amazon CloudWatch Events dan AWS Lambda untuk mengambil tindakan berdasarkan status evaluasi aturan Debugger.

CloudWatch Log untuk Aturan Debugger dan Pekerjaan Pelatihan

Untuk menemukan log pekerjaan pelatihan dan log pekerjaan aturan Debugger
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi kiri di bawah simpul Log, pilih Grup Log.

  3. Dalam daftar grup log, lakukan hal berikut:

    • Pilih TrainingJobs/aws/sagemaker/ untuk log pekerjaan pelatihan.

    • Pilih ProcessingJobs/aws/sagemaker/ untuk log pekerjaan aturan Debugger.

Anda dapat menggunakan status pekerjaan aturan pelatihan dan Debugger di CloudWatch log untuk mengambil tindakan lebih lanjut ketika ada masalah pelatihan.

Untuk informasi selengkapnya tentang memantau pekerjaan pelatihan yang digunakan CloudWatch, lihat Memantau Amazon SageMaker.

Mengatur Debugger untuk Pengakhiran Pekerjaan Pelatihan Otomatis Menggunakan CloudWatch dan Lambda

Aturan Debugger memantau status pekerjaan pelatihan, dan aturan CloudWatch Acara mengawasi status evaluasi pekerjaan pelatihan aturan Debugger.

Langkah 1: Buat Fungsi Lambda

Untuk membuat fungsi Lambda
  1. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  2. Di panel navigasi kiri, pilih Fungsi dan kemudian pilih Buat fungsi.

  3. Pada halaman Create function, pilih Author from scratch option.

  4. Di bagian Informasi dasar, masukkan nama Fungsi (misalnya, debugger-rule-stop-training-job).

  5. Untuk Waktu pengoperasian, pilih Python 3.7.

  6. Untuk Izin, perluas opsi tarik-turun, dan pilih Ubah peran eksekusi default.

  7. Untuk peran Eksekusi, pilih Gunakan peran yang ada dan pilih peran IAM yang Anda gunakan untuk pekerjaan pelatihan. SageMaker

    catatan

    Pastikan Anda menggunakan peran eksekusi dengan AmazonSageMakerFullAccess dan AWSLambdaBasicExecutionRole terlampir. Jika tidak, fungsi Lambda tidak akan bereaksi dengan benar terhadap perubahan status aturan Debugger dari pekerjaan pelatihan. Jika Anda tidak yakin peran eksekusi mana yang digunakan, jalankan kode berikut di sel notebook Jupyter untuk mengambil output peran eksekusi:

    import sagemaker sagemaker.get_execution_role()
  8. Di bagian bawah halaman, pilih Buat Fungsi.

Gambar berikut menunjukkan contoh halaman Create fungsi dengan bidang input dan pilihan selesai.

Buat halaman Fungsi.

Langkah 2: Konfigurasikan fungsi Lambda

Untuk mengonfigurasi fungsi Lambda
  1. Di bagian Kode fungsi pada halaman konfigurasi, tempel skrip Python berikut di panel editor kode Lambda. lambda_handlerFungsi ini memantau status evaluasi aturan Debugger yang dikumpulkan oleh CloudWatch dan memicu operasi API. StopTrainingJob The AWS SDK for Python (Boto3) client for SageMaker menyediakan metode tingkat tinggistop_training_job, yang memicu operasi StopTrainingJob API.

    import json import boto3 import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): training_job_name = event.get("detail").get("TrainingJobName") logging.info(f'Evaluating Debugger rules for training job: {training_job_name}') eval_statuses = event.get("detail").get("DebugRuleEvaluationStatuses", None) if eval_statuses is None or len(eval_statuses) == 0: logging.info("Couldn't find any debug rule statuses, skipping...") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } # should only attempt stopping jobs with InProgress status training_job_status = event.get("detail").get("TrainingJobStatus", None) if training_job_status != 'InProgress': logging.debug(f"Current Training job status({training_job_status}) is not 'InProgress'. Exiting") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } client = boto3.client('sagemaker') for status in eval_statuses: logging.info(status.get("RuleEvaluationStatus") + ', RuleEvaluationStatus=' + str(status)) if status.get("RuleEvaluationStatus") == "IssuesFound": secondary_status = event.get("detail").get("SecondaryStatus", None) logging.info( f'About to stop training job, since evaluation of rule configuration {status.get("RuleConfigurationName")} resulted in "IssuesFound". ' + f'\ntraining job "{training_job_name}" status is "{training_job_status}", secondary status is "{secondary_status}"' + f'\nAttempting to stop training job "{training_job_name}"' ) try: client.stop_training_job( TrainingJobName=training_job_name ) except Exception as e: logging.error( "Encountered error while trying to " "stop training job {}: {}".format( training_job_name, str(e) ) ) raise e return None

    Untuk informasi selengkapnya tentang antarmuka editor kode Lambda, lihat Membuat fungsi menggunakan editor konsol AWS Lambda.

  2. Lewati semua pengaturan lainnya dan pilih Simpan di bagian atas halaman konfigurasi.

Langkah 3: Buat Aturan CloudWatch Acara dan Tautkan ke Fungsi Lambda untuk Debugger

Untuk membuat aturan CloudWatch Acara dan menautkan ke fungsi Lambda untuk Debugger
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi kiri, pilih Aturan di bawah simpul Peristiwa.

  3. Pilih Buat aturan.

  4. Di bagian Sumber Peristiwa pada halaman Langkah 1: Buat aturan, pilih SageMakerNama Layanan, dan pilih Perubahan Status Pekerjaan SageMaker Pelatihan untuk Jenis Acara. Pratinjau Pola Peristiwa akan terlihat seperti contoh string JSON berikut:

    { "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] }
  5. Di bagian Target, pilih Tambahkan target*, dan pilih fungsi debugger-rule-stop-trainingLambda -job yang Anda buat. Langkah ini menautkan aturan CloudWatch Peristiwa dengan fungsi Lambda.

  6. Pilih Konfigurasikan detail dan buka halaman Langkah 2: Konfigurasikan detail aturan.

  7. Tentukan nama definisi CloudWatch aturan. Misalnya, debugger-cw-event-rule.

  8. Pilih Buat aturan untuk menyelesaikan.

  9. Kembali ke halaman konfigurasi fungsi Lambda dan segarkan halaman. Konfirmasikan bahwa itu dikonfigurasi dengan benar di panel Designer. Aturan CloudWatch Peristiwa harus didaftarkan sebagai pemicu fungsi Lambda. Desain konfigurasi akan terlihat seperti contoh berikut:

    Panel desainer untuk CloudWatch konfigurasi.

Jalankan Contoh Notebook untuk Menguji Pemutusan Pekerjaan Pelatihan Otomatis

Anda dapat menjalankan contoh notebook berikut, yang disiapkan untuk bereksperimen dengan menghentikan pekerjaan pelatihan menggunakan aturan bawaan Debugger.

Nonaktifkan Aturan CloudWatch Acara untuk Berhenti Menggunakan Pemutusan Pekerjaan Pelatihan Otomatis

Jika Anda ingin menonaktifkan pemutusan pekerjaan pelatihan otomatis, Anda harus menonaktifkan aturan CloudWatch Acara. Di panel Lambda Designer, pilih blok EventBridge (CloudWatch Events) yang ditautkan ke fungsi Lambda. Ini menunjukkan EventBridgepanel di bawah panel Designer (misalnya, lihat tangkapan layar sebelumnya). Pilih kotak centang di sebelah EventBridge (CloudWatch Acara): debugger-cw-event-rule, lalu pilih Nonaktifkan. Jika Anda ingin menggunakan fungsionalitas penghentian otomatis nanti, Anda dapat mengaktifkan aturan CloudWatch Acara lagi.