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
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Di panel navigasi kiri di bawah simpul Log, pilih Grup Log.
-
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
Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Di panel navigasi kiri, pilih Fungsi dan kemudian pilih Buat fungsi.
-
Pada halaman Create function, pilih Author from scratch option.
-
Di bagian Informasi dasar, masukkan nama Fungsi (misalnya, debugger-rule-stop-training-job).
-
Untuk Waktu pengoperasian, pilih Python 3.7.
-
Untuk Izin, perluas opsi tarik-turun, dan pilih Ubah peran eksekusi default.
-
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
danAWSLambdaBasicExecutionRole
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()
-
Di bagian bawah halaman, pilih Buat Fungsi.
Gambar berikut menunjukkan contoh halaman Create fungsi dengan bidang input dan pilihan selesai.
Langkah 2: Konfigurasikan fungsi Lambda
Untuk mengonfigurasi fungsi Lambda
-
Di bagian Kode fungsi pada halaman konfigurasi, tempel skrip Python berikut di panel editor kode Lambda.
lambda_handler
Fungsi 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 operasiStopTrainingJob
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.
-
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
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Di panel navigasi kiri, pilih Aturan di bawah simpul Peristiwa.
-
Pilih Buat aturan.
-
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" ] }
-
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.
-
Pilih Konfigurasikan detail dan buka halaman Langkah 2: Konfigurasikan detail aturan.
-
Tentukan nama definisi CloudWatch aturan. Misalnya, debugger-cw-event-rule.
-
Pilih Buat aturan untuk menyelesaikan.
-
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:
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.
-
Amazon SageMaker Debugger - Bereaksi terhadap CloudWatch Peristiwa dari Aturan
Notebook contoh ini menjalankan pekerjaan pelatihan yang memiliki masalah gradien menghilang. Aturan VanishingGradient bawaan Debugger digunakan saat membuat estimator. SageMaker TensorFlow Ketika aturan Debugger mendeteksi masalah, pekerjaan pelatihan dihentikan.
-
Mendeteksi Pelatihan yang Terhenti dan Memanggil Tindakan Menggunakan SageMaker Aturan Debugger
Notebook contoh ini menjalankan skrip pelatihan dengan baris kode yang memaksanya untuk tidur selama 10 menit. Aturan StalledTrainingRule bawaan Debugger memanggil masalah dan menghentikan pekerjaan pelatihan.
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.