

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

# Akses wadah pelatihan AWS Systems Manager untuk debugging jarak jauh
<a name="train-remote-debugging"></a>

Anda dapat terhubung dengan aman ke wadah SageMaker pelatihan melalui AWS Systems Manager (SSM). Ini memberi Anda akses tingkat shell ke pekerjaan pelatihan debug yang berjalan di dalam wadah. Anda juga dapat mencatat perintah dan tanggapan yang dialirkan ke Amazon CloudWatch. Jika Anda menggunakan Amazon Virtual Private Cloud (VPC) Anda sendiri untuk melatih model, Anda dapat menggunakannya untuk menyiapkan titik akhir VPC AWS PrivateLink untuk SSM dan terhubung ke kontainer secara pribadi melalui SSM.

Anda dapat terhubung ke [SageMaker AI Framework Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) atau terhubung ke wadah pelatihan Anda sendiri yang diatur dengan lingkungan SageMaker Pelatihan. 

## Siapkan izin IAM
<a name="train-remote-debugging-iam"></a>

Untuk mengaktifkan SSM dalam wadah SageMaker pelatihan Anda, Anda perlu menyiapkan peran IAM untuk kontainer. Agar Anda atau pengguna di AWS akun Anda dapat mengakses wadah pelatihan melalui SSM, Anda perlu menyiapkan pengguna IAM dengan izin untuk menggunakan SSM.

### IAM Role
<a name="train-remote-debugging-iam-role"></a>

Untuk wadah SageMaker pelatihan untuk memulai dengan agen SSM, berikan peran IAM dengan izin SSM.

Untuk mengaktifkan debugging jarak jauh untuk pekerjaan pelatihan Anda, SageMaker AI perlu memulai [agen SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) di wadah pelatihan saat pekerjaan pelatihan dimulai. Untuk memungkinkan agen SSM berkomunikasi dengan layanan SSM, tambahkan kebijakan berikut ke peran IAM yang Anda gunakan untuk menjalankan pekerjaan pelatihan Anda. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"    
        }
    ]
 }
```

------

### Pengguna IAM
<a name="train-remote-debugging-iam-user"></a>

Tambahkan kebijakan berikut untuk memberikan izin sesi SSM kepada pengguna IAM untuk terhubung ke target SSM. Dalam hal ini, target SSM adalah wadah SageMaker pelatihan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

 Anda dapat membatasi pengguna IAM untuk terhubung hanya ke kontainer untuk pekerjaan pelatihan tertentu dengan menambahkan `Condition` kunci, seperti yang ditunjukkan dalam contoh kebijakan berikut. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:ssmmessages:target-id": [
                        "sagemaker-training-job:*"
                    ]
                }
            } 
        }
    ]
}
```

------

Anda juga dapat secara eksplisit menggunakan tombol `sagemaker:EnableRemoteDebug` kondisi untuk membatasi debugging jarak jauh. Berikut ini adalah contoh kebijakan bagi pengguna IAM untuk membatasi debugging jarak jauh.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyRemoteDebugInTrainingJob",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateTrainingJob",
                "sagemaker:UpdateTrainingJob"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "sagemaker:EnableRemoteDebug": false
                }
            }
        }
    ]
}
```

------

Untuk informasi selengkapnya, lihat [Kunci kondisi untuk Amazon SageMaker AI](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys) di *Referensi Otorisasi AWS Layanan*.

## Cara mengaktifkan debugging jarak jauh untuk pekerjaan SageMaker pelatihan
<a name="train-remote-debugging-how-to-use"></a>

Di bagian ini, pelajari cara mengaktifkan debugging jarak jauh saat memulai atau memperbarui pekerjaan pelatihan di Amazon SageMaker AI.

------
#### [ SageMaker Python SDK ]

Menggunakan kelas estimator di SageMaker Python SDK, Anda dapat mengaktifkan atau menonaktifkan debugging jarak jauh menggunakan `enable_remote_debug` parameter atau metode and. `enable_remote_debug()` `disable_remote_debug()`

**Untuk mengaktifkan debugging jarak jauh saat Anda membuat pekerjaan pelatihan**

Untuk mengaktifkan debugging jarak jauh saat Anda membuat pekerjaan pelatihan baru, setel `enable_remote_debug` parameternya ke`True`. Nilai defaultnya adalah`False`, jadi jika Anda tidak menyetel parameter ini sama sekali, atau Anda secara eksplisit mengaturnya`False`, fungsionalitas debugging jarak jauh dinonaktifkan.

```
import sagemaker

session = sagemaker.Session()

estimator = sagemaker.estimator.Estimator(
    ...,
    sagemaker_session=session,
    image_uri="<your_image_uri>", #must be owned by your organization or Amazon DLCs 
    role=role,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=output_path,
    max_run=1800,
    enable_remote_debug=True
)
```

**Untuk mengaktifkan debugging jarak jauh dengan memperbarui pekerjaan pelatihan**

Dengan menggunakan metode kelas estimator berikut, Anda dapat mengaktifkan atau menonaktifkan debugging jarak jauh saat pekerjaan pelatihan berjalan saat pekerjaan sedang `Downloading` atau. `SecondaryStatus` `Training`

```
# Enable RemoteDebug
estimator.enable_remote_debug()

# Disable RemoteDebug
estimator.disable_remote_debug()
```

------
#### [ AWS SDK untuk Python (Boto3) ]

**Untuk mengaktifkan debugging jarak jauh saat Anda membuat pekerjaan pelatihan**

Untuk mengaktifkan debugging jarak jauh saat Anda membuat pekerjaan pelatihan baru, tetapkan nilai `EnableRemoteDebug` kunci ke `True` dalam `RemoteDebugConfig` parameter. 

```
import boto3

sm = boto3.Session(region_name=region).client("sagemaker")

# Start a training job
sm.create_training_job(
    ...,
    TrainingJobName=job_name,
    AlgorithmSpecification={
        // Specify a training Docker container image URI 
        // (Deep Learning Container or your own training container) to TrainingImage.
        "TrainingImage": "<your_image_uri>",
        "TrainingInputMode": "File"
    },
    RoleArn=iam_role_arn,
    OutputDataConfig=output_path,
    ResourceConfig={
        "InstanceType": "ml.m5.xlarge",
        "InstanceCount": 1,
        "VolumeSizeInGB": 30
    },
    StoppingCondition={
        "MaxRuntimeInSeconds": 86400
    },
    RemoteDebugConfig={
        "EnableRemoteDebug": True
    }
)
```

**Untuk mengaktifkan debugging jarak jauh dengan memperbarui pekerjaan pelatihan**

Dengan menggunakan `update_traing_job` API, Anda dapat mengaktifkan atau menonaktifkan debugging jarak jauh saat pekerjaan pelatihan berjalan saat pekerjaan sedang `Downloading` atau`Training`. `SecondaryStatus`

```
# Update a training job
sm.update_training_job(
    TrainingJobName=job_name,
    RemoteDebugConfig={
        "EnableRemoteDebug": True     # True | False
    }
)
```

------
#### [ AWS Command Line Interface (CLI) ]

**Untuk mengaktifkan debugging jarak jauh saat Anda membuat pekerjaan pelatihan**

Siapkan file `CreateTrainingJob` permintaan dalam format JSON, sebagai berikut.

```
// train-with-remote-debug.json
{
    "TrainingJobName": job_name,
    "RoleArn": iam_role_arn,
    "AlgorithmSpecification": {
        // Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage.
        "TrainingImage": "<your_image_uri>",
        "TrainingInputMode": "File"
    },
    "OutputDataConfig": {
        "S3OutputPath": output_path
    },
    "ResourceConfig": {
        "InstanceType": "ml.m5.xlarge",
        "InstanceCount": 1,
        "VolumeSizeInGB": 30
    },
    "StoppingCondition": {
        "MaxRuntimeInSeconds": 86400
    },
    "RemoteDebugConfig": {
        "EnableRemoteDebug": True
    }
}
```

Setelah menyimpan file JSON, jalankan perintah berikut di terminal tempat Anda mengirimkan pekerjaan pelatihan. Contoh perintah berikut mengasumsikan bahwa file JSON diberi nama. `train-with-remote-debug.json` Jika Anda menjalankannya dari notebook Jupyter, tambahkan tanda seru (`!`) ke awal baris.

```
aws sagemaker create-training-job \
    --cli-input-json file://train-with-remote-debug.json
```

**Untuk mengaktifkan debugging jarak jauh dengan memperbarui pekerjaan pelatihan**

Siapkan file `UpdateTrainingJob` permintaan dalam format JSON, sebagai berikut.

```
// update-training-job-with-remote-debug-config.json
{
    "TrainingJobName": job_name,
    "RemoteDebugConfig": {
        "EnableRemoteDebug": True
    }
}
```

Setelah menyimpan file JSON, jalankan perintah berikut di terminal tempat Anda mengirimkan pekerjaan pelatihan. Contoh perintah berikut mengasumsikan bahwa file JSON diberi nama. `train-with-remote-debug.json` Jika Anda menjalankannya dari notebook Jupyter, tambahkan tanda seru (`!`) ke awal baris.

```
aws sagemaker update-training-job \
    --cli-input-json file://update-training-job-with-remote-debug-config.json
```

------

## Akses wadah pelatihan Anda
<a name="train-remote-debugging-access-container"></a>

Anda dapat mengakses wadah pelatihan saat pekerjaan pelatihan yang sesuai adalah`Training`. `SecondaryStatus` Contoh kode berikut menunjukkan cara memeriksa status pekerjaan pelatihan Anda menggunakan `DescribeTrainingJob` API, cara memeriksa log masuk pekerjaan pelatihan CloudWatch, dan cara masuk ke wadah pelatihan.

**Untuk memeriksa status pekerjaan pelatihan**

------
#### [ SageMaker Python SDK ]

Untuk memeriksa `SecondaryStatus` pekerjaan pelatihan, jalankan kode SDK SageMaker Python berikut.

```
import sagemaker

session = sagemaker.Session()

# Describe the job status
training_job_info = session.describe_training_job(job_name)
print(training_job_info)
```

------
#### [ AWS SDK untuk Python (Boto3) ]

Untuk memeriksa pekerjaan pelatihan, jalankan kode SDK for Python (Boto3) berikut. `SecondaryStatus`

```
import boto3

session = boto3.session.Session()
region = session.region_name
sm = boto3.Session(region_name=region).client("sagemaker")

# Describe the job status
sm.describe_training_job(TrainingJobName=job_name)
```

------
#### [ AWS Command Line Interface (CLI) ]

Untuk memeriksa `SecondaryStatus` pekerjaan pelatihan, jalankan AWS CLI perintah berikut untuk SageMaker AI.

```
aws sagemaker describe-training-job \
    --training-job-name job_name
```

------

**Untuk menemukan nama host dari wadah pelatihan**

Untuk terhubung ke wadah pelatihan melalui SSM, gunakan format ini untuk ID target:`sagemaker-training-job:<training-job-name>_algo-<n>`, di `algo-<n>` mana nama host kontainer. Jika pekerjaan Anda berjalan pada satu contoh, host selalu`algo-1`. Jika Anda menjalankan pekerjaan pelatihan terdistribusi pada beberapa instans, SageMaker AI membuat jumlah host dan aliran log yang sama. Misalnya, jika Anda menggunakan 4 instance, SageMaker AI membuat`algo-1`,, `algo-2``algo-3`, dan`algo-4`. Anda harus menentukan aliran log mana yang ingin Anda debug, dan nomor host-nya. Untuk mengakses aliran log yang terkait dengan pekerjaan pelatihan, lakukan hal berikut.

1. Buka konsol Amazon SageMaker AI di [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Di panel navigasi kiri, pilih **Pelatihan**, lalu pilih **Pekerjaan pelatihan**.

1. Dari daftar **pekerjaan Pelatihan**, pilih pekerjaan pelatihan yang ingin Anda debug. Halaman detail pekerjaan pelatihan terbuka.

1. Di bagian **Monitor**, pilih **Lihat log**. Daftar aliran log pekerjaan pelatihan terkait terbuka di CloudWatch konsol.

1. Nama aliran log muncul dalam `<training-job-name>/algo-<n>-<time-stamp>` format, dengan `algo-<n>` mewakili nama host. 

Untuk mempelajari selengkapnya tentang cara SageMaker AI mengelola informasi konfigurasi untuk pelatihan terdistribusi multi-instance, lihat [Konfigurasi Pelatihan Terdistribusi](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training).

**Untuk mengakses wadah pelatihan**

Gunakan perintah berikut di terminal untuk memulai sesi SSM (`[aws ssm start-session](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)`) dan sambungkan ke wadah pelatihan. 

```
aws ssm start-session --target sagemaker-training-job:<training-job-name>_algo-<n>
```

Misalnya, jika nama pekerjaan pelatihan `training-job-test-remote-debug` dan nama host adalah`algo-1`, ID target menjadi`sagemaker-training-job:training-job-test-remote-debug_algo-1`. Jika output dari perintah ini mirip dengan`Starting session with SessionId:xxxxx`, koneksi berhasil.

### Akses SSM dengan AWS PrivateLink
<a name="train-remote-debugging-access-container-vpc"></a>

Jika wadah pelatihan Anda berjalan dalam Amazon Virtual Private Cloud yang tidak terhubung ke internet publik, Anda dapat menggunakannya AWS PrivateLink untuk mengaktifkan SSM. AWS PrivateLink membatasi semua lalu lintas jaringan antara instans titik akhir Anda, SSM, dan Amazon EC2 ke jaringan Amazon. Untuk informasi selengkapnya tentang cara mengatur akses SSM dengan AWS PrivateLink, lihat [Menyiapkan titik akhir VPC Amazon](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html) untuk Pengelola Sesi. 

## Log perintah dan hasil sesi SSM
<a name="train-remote-debugging-log-ssm"></a>

Setelah mengikuti petunjuk di [Buat dokumen preferensi Manajer Sesi (baris perintah)](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-create-preferences-cli.html), Anda dapat membuat dokumen SSM yang menentukan preferensi Anda untuk sesi SSM. Anda dapat menggunakan dokumen SSM untuk mengonfigurasi opsi sesi, termasuk enkripsi data, durasi sesi, dan pencatatan. Misalnya, Anda dapat menentukan apakah akan menyimpan data log sesi di bucket Amazon Simple Storage Service (Amazon S3) atau di grup Amazon CloudWatch Logs. Anda dapat membuat  dokumen yang menentukan preferensi umum untuk semua sesi untuk AWS akun dan Wilayah AWS, atau dokumen yang menentukan preferensi untuk sesi individual.

## Memecahkan masalah dengan memeriksa log kesalahan dari SSM
<a name="train-remote-debugging-checking-ssm-agent-logs"></a>

Amazon SageMaker AI mengunggah kesalahan dari agen SSM ke CloudWatch Log Anda di grup `/aws/sagemaker/TrainingJobs` log. Aliran log agen SSM diberi nama dalam format ini:. `<job-name>/algo-<n>-<timestamp>/ssm` Misalnya, jika Anda membuat pekerjaan pelatihan dua simpul bernama`training-job-test-remote-debug`, log pekerjaan pelatihan `training-job-test-remote-debug/algo-<n>-<timestamp>` dan beberapa log kesalahan agen SSM akan diunggah ke Log `training-job-test-remote-debug/algo-<n>-<timestamp>/ssm` Anda. CloudWatch Dalam contoh ini, Anda dapat meninjau aliran `*/ssm` log untuk memecahkan masalah SSM.

```
training-job-test-remote-debug/algo-1-1680535238
training-job-test-remote-debug/algo-2-1680535238
training-job-test-remote-debug/algo-1-1680535238/ssm
training-job-test-remote-debug/algo-2-1680535238/ssm
```

## Pertimbangan-pertimbangan
<a name="train-remote-debugging-considerations"></a>

Pertimbangkan hal berikut saat menggunakan SageMaker AI remote debugging.
+ Debugging jarak jauh tidak didukung untuk [container algoritma SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/algorithms-choose.html) atau container dari SageMaker AI on AWS Marketplace.
+ Anda tidak dapat memulai sesi SSM untuk kontainer yang memiliki isolasi jaringan diaktifkan karena isolasi mencegah panggilan jaringan keluar.