

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
<a name="train-remote-decorator-experiments"></a>

Panduan ini menunjukkan cara mencatat parameter dan metrik dengan SageMaker Eksperimen Amazon. 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 API. `RemoteExecutor` 

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](https://docs.aws.amazon.com/sagemaker/latest/dg/experiments-create.html).
+ Gunakan `load_run` fungsi di dalam fungsi jarak jauh dari perpustakaan Eksperimen SageMaker AI. 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
<a name="train-remote-decorator-experiments-remote"></a>

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
<a name="train-remote-decorator-experiments-remote-create"></a>

Anda dapat membuat eksperimen yang dijalankan dalam eksperimen SageMaker AI. 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` atau`loss`. 

```
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
<a name="train-remote-decorator-experiments-remote-current"></a>

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 API `RemoteExecutor`
<a name="train-remote-decorator-experiments-api"></a>

Anda juga dapat memuat eksperimen SageMaker AI 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 eksperimen SageMaker AI saat ini dan menangkap metrik dalam pekerjaan yang dikirimkan oleh`RemoteExecutor`.

```
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
<a name="train-remote-decorator-experiments-unsupported"></a>

SageMaker AI tidak mendukung penerusan objek `Run` tipe ke fungsi @remote atau menggunakan `Run` objek global. Contoh berikut menunjukkan kode yang akan melempar`SerializationError`.

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