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 memuatRun
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