Mencatat parameter dan metrik dengan Amazon Experiments SageMaker - Amazon SageMaker

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

Mencatat parameter dan metrik dengan Amazon Experiments SageMaker

Panduan ini menunjukkan cara mencatat parameter dan metrik dengan SageMaker Eksperimen Amazon. SageMakerEksperimen 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 SageMaker eksperimen yang dijalankan di dalam fungsi jarak jauh menggunakan Run dari pustaka SageMaker Eksperimen. Untuk informasi selengkapnya, lihat Membuat SageMaker Eksperimen Amazon.

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

Bagian berikut menunjukkan cara membuat dan melacak garis keturunan dengan SageMaker eksperimen 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 SageMaker, atau memuat SageMaker eksperimen 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 SageMaker eksperimen. Untuk melakukan ini, Anda meneruskan nama eksperimen, menjalankan nama, dan parameter lainnya ke dalam fungsi jarak jauh Anda.

Contoh kode berikut mengimpor nama eksperimen Anda, nama run, dan parameter yang akan dicatat selama setiap proses. Parameter param_1 dan param_2 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 menjalankan 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 SageMaker Eksperimen 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 diinisialisasi lokal oleh with pernyataan pada objek run seperti yang ditunjukkan pada 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)

Memuat eksperimen saat ini yang dijalankan dalam pekerjaan yang dimulai dengan RemoteExecutor API

Anda juga dapat memuat SageMaker percobaan saat ini 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 SageMaker eksperimen 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 SageMaker Eksperimen yang tidak didukung saat membuat anotasi kode Anda dengan dekorator @remote

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

Contoh kode berikut mencoba untuk meneruskan objek Run tipe ke dekorator @remote, dan itu 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 dipakai 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