View a markdown version of this page

Pencatatan parameter dan metrik dengan Amazon SageMaker Experiments - Amazon SageMaker AI

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

Pencatatan parameter dan metrik dengan Amazon SageMaker Experiments

Panduan ini menunjukkan cara mencatat parameter dan metrik dengan Amazon SageMaker Experiments. Eksperimen SageMaker AI terdiri dari run, dan setiap run terdiri dari semua input, parameter, konfigurasi, dan hasil untuk interaksi pelatihan model tunggal.

Anda dapat mencatat parameter dan metrik dari fungsi jarak jauh menggunakan dekorator @remote atau RemoteExecutor API.

Untuk mencatat parameter dan metrik dari fungsi jarak jauh, pilih salah satu metode berikut:

  • Buat instance eksperimen SageMaker AI yang dijalankan di dalam fungsi jarak jauh menggunakan Run dari pustaka SageMaker Eksperimen. Untuk informasi selengkapnya, lihat Membuat Eksperimen SageMaker AI Amazon.

  • Gunakan load_run fungsi di dalam fungsi jarak jauh dari pustaka SageMaker AI Experiments. Ini akan memuat Run instance yang dideklarasikan di luar fungsi jarak jauh.

Bagian berikut menunjukkan cara membuat dan melacak garis keturunan dengan eksperimen SageMaker AI yang dijalankan dengan menggunakan metode yang tercantum sebelumnya. Bagian tersebut juga menjelaskan kasus-kasus yang tidak didukung oleh SageMaker pelatihan.

Gunakan dekorator @remote untuk berintegrasi dengan Eksperimen SageMaker

Anda dapat membuat instance eksperimen di SageMaker AI, atau memuat eksperimen SageMaker AI saat ini dari dalam fungsi jarak jauh. Bagian berikut menunjukkan Anda menunjukkan untuk menggunakan salah satu metode.

Buat eksperimen dengan SageMaker Eksperimen

Anda dapat membuat eksperimen yang dijalankan dalam eksperimen SageMaker AI. Untuk melakukan ini, Anda meneruskan nama eksperimen, nama jalankan, dan parameter lainnya ke fungsi jarak jauh Anda.

Contoh kode berikut mengimpor nama eksperimen Anda, nama proses, dan parameter yang akan dicatat selama setiap proses. Param param_2 eter param_1 dan dicatat dari waktu ke waktu di dalam loop pelatihan. Parameter umum mungkin termasuk ukuran batch atau zaman. Dalam contoh ini, metrik metric_a dan metric_b dicatat untuk proses dari waktu ke waktu di dalam loop pelatihan. Metrik umum lainnya mungkin termasuk accuracy atauloss.

from sagemaker.remote_function import remote from sagemaker.experiments.run import Run # Define your remote function @remote def train(value_1, value_2, exp_name, run_name): ... ... #Creates the experiment with Run( experiment_name=exp_name, run_name=run_name, ) as run: ... #Define values for the parameters to log run.log_parameter("param_1", value_1) run.log_parameter("param_2", value_2) ... #Define metrics to log run.log_metric("metric_a", 0.5) run.log_metric("metric_b", 0.1) # Invoke your remote function train(1.0, 2.0, "my-exp-name", "my-run-name")

Muat Eksper SageMaker imen saat ini dengan pekerjaan yang diprakarsai oleh dekorator @remote

Gunakan load_run() fungsi dari pustaka SageMaker Eksperimen untuk memuat objek run saat ini dari konteks run. Anda juga dapat menggunakan load_run() fungsi dalam fungsi jarak jauh Anda. Muat objek run yang diinisialisasi secara lokal oleh with pernyataan pada objek run seperti yang ditunjukkan dalam contoh kode berikut.

from sagemaker.experiments.run import Run, load_run # Define your remote function @remote def train(value_1, value_2): ... ... with load_run() as run: run.log_metric("metric_a", value_1) run.log_metric("metric_b", value_2) # Invoke your remote function with Run( experiment_name="my-exp-name", run_name="my-run-name", ) as run: train(0.5, 1.0)

Muat percobaan yang dijalankan saat ini dalam pekerjaan yang dimulai dengan RemoteExecutor API

Anda juga dapat memuat percobaan SageMaker AI saat ini yang dijalankan jika pekerjaan Anda dimulai dengan RemoteExecutor API. Contoh kode berikut menunjukkan cara menggunakan RemoteExecutor API dengan load_run fungsi SageMaker Eksperimen. Anda melakukan ini untuk memuat percobaan SageMaker AI yang dijalankan saat ini dan menangkap metrik dalam pekerjaan yang dikirimkan olehRemoteExecutor.

from sagemaker.experiments.run import Run, load_run def square(x): with load_run() as run: result = x * x run.log_metric("result", result) return result with RemoteExecutor( max_parallel_job=2, instance_type="ml.m5.large" ) as e: with Run( experiment_name="my-exp-name", run_name="my-run-name", ): future_1 = e.submit(square, 2)

Penggunaan yang tidak didukung untuk SageMaker Eksperimen saat membuat anotasi kode Anda dengan dekorator @remote

SageMaker AI tidak mendukung meneruskan objek Run tipe ke fungsi @remote atau menggunakan Run objek global. Contoh berikut menunjukkan kode yang akan melemparkan aSerializationError.

Contoh kode berikut mencoba meneruskan objek Run tipe ke dekorator @remote, dan menghasilkan kesalahan.

@remote def func(run: Run): run.log_metrics("metric_a", 1.0) with Run(...) as run: func(run) ---> SerializationError caused by NotImplementedError

Contoh kode berikut mencoba menggunakan run objek global yang dibuat di luar fungsi jarak jauh. Dalam contoh kode, train() fungsi didefinisikan di dalam with Run konteks, merujuk objek run global dari dalam. Ketika train() dipanggil, itu menghasilkan kesalahan.

with Run(...) as run: @remote def train(metric_1, value_1, metric_2, value_2): run.log_parameter(metric_1, value_1) run.log_parameter(metric_2, value_2) train("p1", 1.0, "p2", 0.5) ---> SerializationError caused by NotImplementedError