

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

# Siapkan Debugger untuk penghentian pekerjaan pelatihan otomatis menggunakan CloudWatch dan Lambda
<a name="debugger-stop-training"></a>

**catatan**  
Amazon SageMaker Debugger tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan seperti biasa. AWS terus berinvestasi dalam peningkatan keamanan dan ketersediaan untuk Debugger, tetapi kami tidak berencana untuk memperkenalkan fitur baru. Untuk informasi selengkapnya, lihat [Perubahan ketersediaan debugger](debugger-availability-change.md). 

Aturan Debugger memantau status pekerjaan pelatihan, dan aturan Acara CloudWatch mengawasi status evaluasi pekerjaan pelatihan aturan Debugger. Bagian berikut menguraikan proses yang diperlukan untuk mengotomatiskan penghentian pekerjaan pelatihan menggunakan CloudWatch dan Lambda.

**Topics**
+ [Langkah 1: Membuat fungsi Lambda](#debugger-lambda-function-create)
+ [Langkah 2: Konfigurasikan fungsi Lambda](#debugger-lambda-function-configure)
+ [Langkah 3: Buat aturan CloudWatch acara dan tautkan ke fungsi Lambda untuk Debugger](#debugger-cloudwatch-events)

## Langkah 1: Membuat fungsi Lambda
<a name="debugger-lambda-function-create"></a>

**Untuk membuat fungsi Lambda**

1. Buka AWS Lambda konsol di [ https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

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

1. Pada ** halaman fungsi ** Buat, pilih ** opsi ** Penulis dari awal.

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

1. Untuk **Waktu pengoperasian**, pilih **Python 3.7**.

1. Untuk ** Iz ** in, perluas opsi drop-down, dan pilih U ** bah peran eksekusi default**.

1. Untuk ** Peran eksekusi**, pilih ** Gunakan peran yang ada ** dan pilih peran IAM yang Anda gunakan untuk pekerjaan pelatihan di SageMaker AI.
**catatan**  
Pastikan Anda menggunakan peran eksekusi dengan `AmazonSageMakerFullAccess` dan dilamp `AWSLambdaBasicExecutionRole` irkan. 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
   from sagemaker.core.helper.session_helper import get_execution_role
   get_execution_role()
   ```

1. Di bagian bawah halaman, pilih **Buat Fungsi**.

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

![Buat halaman Fungsi.](https://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/debugger/debugger-lambda-create.png)


## Langkah 2: Konfigurasikan fungsi Lambda
<a name="debugger-lambda-function-configure"></a>

**Untuk mengonfigurasi fungsi Lambda**

1. Di ** bagian kode ** fungsi halaman konfigurasi, tempel skrip Python berikut di panel editor kode Lambda. `lambda_handler`Fungsi memantau status evaluasi aturan Debugger yang dikumpulkan oleh CloudWatch dan memicu operasi `StopTrainingJob` API. AWS SDK untuk Python (Boto3) `client`Untuk SageMaker AI menyediakan metode tingkat tinggi,`stop_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. ](https://docs.aws.amazon.com/lambda/latest/dg/code-editor.html)

1. Lewati semua pengaturan lainnya dan pilih ** S ** impan di bagian atas halaman konfigurasi.

## Langkah 3: Buat aturan CloudWatch acara dan tautkan ke fungsi Lambda untuk Debugger
<a name="debugger-cloudwatch-events"></a>

**Untuk membuat aturan Per CloudWatch istiwa dan menautkan ke fungsi Lambda untuk Debugger**

1. Buka CloudWatch konsol di [ https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi kiri, pilih A ** turan ** di bawah ** node ** Acara.

1. Pilih **Buat aturan**.

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

   ```
   {
       "source": [
           "aws.sagemaker"
       ],
       "detail-type": [
           "SageMaker Training Job State Change"
       ]
   }
   ```

1. Di ** bagian Target**, pilih Tam ** bah target\***, dan pilih fungsi ** debugger-rule-stop- ** training-job Lambda yang Anda buat. Langkah ini menghubungkan aturan CloudWatch Events dengan fungsi Lambda.

1. Pilih ** Konfigurasi detail ** dan buka ** halaman ** Langkah 2: Konfigurasikan detail aturan.

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

1. Pilih ** Buat aturan ** untuk menyelesaikan.

1. Kembali ke halaman konfigurasi fungsi Lambda dan segarkan halaman. Konfirmasikan bahwa itu dikonfigurasi dengan benar di ** panel Des ** ainer. Aturan CloudWatch Events harus didaftarkan sebagai pemicu untuk fungsi Lambda. Desain konfigurasi akan terlihat seperti contoh berikut:  
<a name="lambda-designer-example"></a>![Panel desainer untuk CloudWatch konfigurasi.](https://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/debugger/debugger-lambda-designer.png)