

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

# Sesuaikan skrip PyTorch pelatihan Anda
<a name="debugger-modify-script-pytorch"></a>

**catatan**  
Amazon SageMaker Debugger tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan seperti biasa. AWS terus berinvestasi dalam peningkatan keamanan dan ketersediaan untuk Debugger, tetapi kami tidak berencana untuk memperkenalkan fitur baru. Untuk informasi selengkapnya, lihat [Perubahan ketersediaan debugger](debugger-availability-change.md). 

Untuk mulai mengumpulkan tensor keluaran model dan masalah pelatihan debug, buat modifikasi berikut pada skrip PyTorch pelatihan Anda.

**catatan**  
SageMaker Debugger tidak dapat mengumpulkan tensor keluaran model dari operasi [`torch.nn.functional`](https://pytorch.org/docs/stable/nn.functional.html) API. Saat Anda menulis skrip PyTorch pelatihan, disarankan untuk menggunakan [`torch.nn`](https://pytorch.org/docs/stable/generated/torch.nn.NLLLoss.html) modul sebagai gantinya.

## Untuk PyTorch 1.12.0
<a name="debugger-modify-script-pytorch-1-12-0"></a>

Jika Anda membawa skrip PyTorch pelatihan, Anda dapat menjalankan pekerjaan pelatihan dan mengekstrak tensor keluaran model dengan beberapa baris kode tambahan di skrip pelatihan Anda. Anda perlu menggunakan API [ hook ](https://sagemaker-debugger.readthedocs.io/en/website/hook-api.html) di pust `sagemaker-debugger` aka klien. Jelajahi instruksi berikut yang menguraikan langkah-langkah dengan contoh kode.

1. Buat kait.

   **(Direkomendasikan) Untuk pekerjaan pelatihan dalam SageMaker AI **

   ```
   import smdebug.pytorch as smd
   hook=smd.get_hook(create_if_not_exists=True)
   ```

   Saat Anda meluncurkan pekerjaan pelatihan [Luncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK](debugger-configuration-for-debugging.md) dengan salah satu DebuggerHookConfig, TensorBoardConfig, atau Aturan di Anda ModelTrainer, SageMaker AI menambahkan file konfigurasi JSON ke instance pelatihan Anda yang diambil oleh `get_hook` fungsi tersebut. Perhatikan bahwa jika Anda tidak menyertakan API konfigurasi apa pun di Anda ModelTrainer, tidak akan ada file konfigurasi untuk ditemukan hook, dan fungsinya kembali`None`.

   **(Opsional) Untuk pekerjaan pelatihan di luar SageMaker AI **

   Jika Anda menjalankan tugas pelatihan dalam mode lokal, langsung di inst SageMaker ans Notebook, instans Amazon EC2, atau perangkat lokal Anda sendiri, gunakan `smd.Hook` class untuk membuat hook. Namun, pendekatan ini hanya dapat menyimpan koleksi tensor dan dapat digunakan untuk TensorBoard visualisasi. SageMaker Aturan bawaan Debugger tidak berfungsi dengan mode lokal karena Aturan memerlukan instance pelatihan SageMaker AI ML dan S3 untuk menyimpan output dari instance jarak jauh secara real time. `smd.get_hook`API kembali `None` dalam kasus ini. 

   Jika Anda ingin membuat kait manual untuk menyimpan tensor dalam mode lokal, gunakan cuplikan kode berikut dengan logika untuk memeriksa apakah `smd.get_hook` API kembali `None` dan buat kait manual menggunakan kelas. `smd.Hook` Perhatikan bahwa Anda dapat menentukan direktori keluaran apa pun di mesin lokal Anda.

   ```
   import smdebug.pytorch as smd
   hook=smd.get_hook(create_if_not_exists=True)
   
   if hook is None:
       hook=smd.Hook(
           out_dir='{{/path/to/your/local/output/}}',
           export_tensorboard=True
       )
   ```

1. Bungkus model Anda dengan metode kelas hook.

   `hook.register_module()`Metode ini mengambil model Anda dan mengulangi setiap lapisan, mencari tensor yang cocok dengan ekspresi reguler yang akan Anda berikan melalui konfigurasi di. [Luncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK](debugger-configuration-for-debugging.md) Tensor yang dapat dikumpulkan melalui metode kait ini adalah bobot, bias, aktivasi, gradien, input, dan output.

   ```
   hook.register_module(model)
   ```
**Tip**  
Jika Anda mengumpulkan seluruh tensor keluaran dari model pembelajaran mendalam yang besar, ukuran total koleksi tersebut dapat tumbuh secara eksponensial dan dapat menyebabkan kemacetan. Jika Anda ingin menyimpan tensor tertentu, Anda juga dapat menggunakan `hook.save_tensor()` metode ini. Metode ini membantu Anda memilih variabel untuk tensor tertentu dan menyimpan ke koleksi khusus bernama sesuai keinginan. Untuk informasi lebih lanjut, lihat [ langkah 7 ](#debugger-modify-script-pytorch-save-custom-tensor) dari instruksi ini.

1. Warp fungsi loss dengan metode kelas hook.

   `hook.register_loss`Metodenya adalah dengan membungkus fungsi kerugian. Ini mengekstrak nilai kerugian setiap `save_interval` yang akan Anda atur selama konfigurasi[Luncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK](debugger-configuration-for-debugging.md), dan menyimpannya ke `"losses"` koleksi.

   ```
   hook.register_loss(loss_function)
   ```

1. Tambahkan `hook.set_mode(ModeKeys.TRAIN)` di blok kereta. Ini menunjukkan koleksi tensor diekstraksi selama fase pelatihan.

   ```
   def train():
       ...
       hook.set_mode(ModeKeys.TRAIN)
   ```

1. Tambahkan `hook.set_mode(ModeKeys.EVAL)` di blok validasi. Ini menunjukkan koleksi tensor diekstraksi selama fase validasi.

   ```
   def validation():
       ...
       hook.set_mode(ModeKeys.EVAL)
   ```

1. Gunakan [`hook.save_scalar()`](https://sagemaker-debugger.readthedocs.io/en/website/hook-constructor.html#smdebug.core.hook.BaseHook.save_scalar) untuk menyimpan skalar khusus. Anda dapat menyimpan nilai skalar yang tidak ada dalam model Anda. Misalnya, jika Anda ingin merekam nilai akurasi yang dihitung selama evaluasi, tambahkan baris kode berikut di bawah baris tempat Anda menghitung akurasi.

   ```
   hook.save_scalar("accuracy", accuracy)
   ```

   Perhatikan bahwa Anda perlu memberikan string sebagai argumen pertama untuk memberi nama koleksi skalar khusus. Ini adalah nama yang akan digunakan untuk memvisualisasikan nilai skalar di TensorBoard, dan dapat berupa string apa pun yang Anda inginkan.

1. <a name="debugger-modify-script-pytorch-save-custom-tensor"></a>Gunakan [`hook.save_tensor()`](https://sagemaker-debugger.readthedocs.io/en/website/hook-constructor.html#smdebug.core.hook.BaseHook.save_tensor) untuk menyimpan tensor khusus. Demikian pula [`hook.save_scalar()`](https://sagemaker-debugger.readthedocs.io/en/website/hook-constructor.html#smdebug.core.hook.BaseHook.save_scalar), Anda dapat menyimpan tensor tambahan, menentukan koleksi tensor Anda sendiri. Misalnya, Anda dapat mengekstrak data gambar input yang diteruskan ke model dan menyimpannya sebagai tensor khusus dengan menambahkan baris kode berikut, di mana `"images"` contoh nama tensor kustom, `image_inputs` adalah contoh variabel untuk data gambar input.

   ```
   hook.save_tensor("images", image_inputs)
   ```

   Perhatikan bahwa Anda harus memberikan string ke argumen pertama untuk memberi nama tensor khusus. `hook.save_tensor()`memiliki argumen ketiga `collections_to_write` untuk menentukan koleksi tensor untuk menyimpan tensor khusus. Nilai default-nya `collections_to_write="default"`. Jika Anda tidak secara eksplisit menentukan argumen ketiga, tensor khusus disimpan ke koleksi `"default"` tensor.

Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan ke[Luncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK](debugger-configuration-for-debugging.md).