View a markdown version of this page

Sesuaikan skrip PyTorch pelatihan Anda - Amazon SageMaker AI

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

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.

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 API. Saat Anda menulis skrip PyTorch pelatihan, disarankan untuk menggunakan torch.nn modul sebagai gantinya.

Untuk PyTorch 1.12.0

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 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 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 kembaliNone.

    (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_hookAPI 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 )
  2. 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 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 dari instruksi ini.

  3. Warp fungsi loss dengan metode kelas hook.

    hook.register_lossMetodenya adalah dengan membungkus fungsi kerugian. Ini mengekstrak nilai kerugian setiap save_interval yang akan Anda atur selama konfigurasiLuncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK, dan menyimpannya ke "losses" koleksi.

    hook.register_loss(loss_function)
  4. Tambahkan hook.set_mode(ModeKeys.TRAIN) di blok kereta. Ini menunjukkan koleksi tensor diekstraksi selama fase pelatihan.

    def train(): ... hook.set_mode(ModeKeys.TRAIN)
  5. Tambahkan hook.set_mode(ModeKeys.EVAL) di blok validasi. Ini menunjukkan koleksi tensor diekstraksi selama fase validasi.

    def validation(): ... hook.set_mode(ModeKeys.EVAL)
  6. Gunakan hook.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.

  7. Gunakan hook.save_tensor() untuk menyimpan tensor khusus. Demikian pula hook.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 keLuncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK.