Akses wadah pelatihan AWS Systems Manager untuk debugging jarak jauh - Amazon SageMaker

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

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 Framework Container atau terhubung ke wadah pelatihan Anda sendiri yang diatur dengan lingkungan SageMaker Pelatihan.

Siapkan izin IAM

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.

Peran IAM

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 perlu memulai agen SSM 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.

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

Pengguna IAM

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.

{ "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.

{ "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.

{ "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 di Referensi Otorisasi AWS Layanan.

Cara mengaktifkan debugging jarak jauh untuk pekerjaan SageMaker pelatihan

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

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 keTrue. Nilai defaultnya adalahFalse, jadi jika Anda tidak menyetel parameter ini sama sekali, atau Anda secara eksplisit mengaturnyaFalse, 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 for 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 atauTraining. 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

Anda dapat mengakses wadah pelatihan saat pekerjaan pelatihan yang sesuai adalahTraining. 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 for 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.

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 selalualgo-1. Jika Anda menjalankan tugas pelatihan terdistribusi pada beberapa instans, SageMaker buat jumlah host dan aliran log yang sama. Misalnya, jika Anda menggunakan 4 instance, SageMaker membuat,algo-1, algo-2algo-3, danalgo-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 SageMaker konsol Amazon di https://console.aws.amazon.com/sagemaker/.

  2. Di panel navigasi kiri, pilih Pelatihan, lalu pilih Pekerjaan pelatihan.

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

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

  5. 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 mengelola informasi konfigurasi untuk pelatihan terdistribusi multi-instance, lihat Konfigurasi Pelatihan Terdistribusi.

Untuk mengakses wadah pelatihan

Gunakan perintah berikut di terminal untuk memulai sesi SSM (aws ssm start-session) 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 adalahalgo-1, ID target menjadisagemaker-training-job:training-job-test-remote-debug_algo-1. Jika output dari perintah ini mirip denganStarting session with SessionId:xxxxx, koneksi berhasil.

Akses SSM dengan AWS PrivateLink

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 untuk Pengelola Sesi.

Log perintah dan hasil sesi SSM

Setelah mengikuti petunjuk di Buat dokumen preferensi Manajer Sesi (baris perintah), 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

Amazon SageMaker 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 bernamatraining-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

Pertimbangkan hal berikut saat menggunakan debugging SageMaker jarak jauh.

  • Debugging jarak jauh tidak didukung untuk kontainer SageMaker algoritme atau kontainer dari SageMaker on AWS Marketplace.

  • Anda tidak dapat memulai sesi SSM untuk kontainer yang memiliki isolasi jaringan diaktifkan karena isolasi mencegah panggilan jaringan keluar.