Sesuaikan Skrip PyTorch Pelatihan Anda - Amazon SageMaker

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

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

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 dalam skrip pelatihan Anda. Anda perlu menggunakan API hook di pustaka sagemaker-debugger klien. Ikuti instruksi berikut yang memecah langkah-langkah dengan contoh kode.

  1. Buat kait.

    (Direkomendasikan) Untuk pekerjaan pelatihan di dalam SageMaker

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

    Saat Anda meluncurkan pekerjaan pelatihan Langkah 2: Luncurkan dan Debug Pekerjaan Pelatihan Menggunakan Python SageMaker SDK dengan salah satu DebuggerHookConfig, TensorBoardConfig, atau Aturan di estimator Anda, SageMaker tambahkan file konfigurasi JSON ke instance pelatihan Anda yang diambil oleh fungsi tersebutget_hook. Perhatikan bahwa jika Anda tidak menyertakan API konfigurasi apa pun di estimator Anda, tidak akan ada file konfigurasi yang dapat ditemukan oleh hook, dan fungsi akan kembaliNone.

    (Opsional) Untuk pekerjaan pelatihan di luar SageMaker

    Jika Anda menjalankan tugas pelatihan dalam mode lokal, langsung di instans SageMaker Notebook, instans Amazon EC2, atau perangkat lokal Anda sendiri, smd.Hook gunakan 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 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 hook manual untuk menyimpan tensor dalam mode lokal, gunakan cuplikan kode berikut dengan logika untuk memeriksa apakah smd.get_hook API kembali None dan membuat hook manual menggunakan kelas. smd.Hook Perhatikan bahwa Anda dapat menentukan direktori output 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 apa pun yang cocok dengan ekspresi reguler yang akan Anda berikan melalui konfigurasi. Langkah 2: Luncurkan dan Debug Pekerjaan Pelatihan Menggunakan Python SageMaker SDK Tensor yang dapat dikoleksi 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 metode inihook.save_tensor(). Metode ini membantu Anda memilih variabel untuk tensor tertentu dan menyimpannya 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 membungkus fungsi kerugian. Ini mengekstrak nilai kerugian setiap save_interval yang akan Anda atur selama konfigurasiLangkah 2: Luncurkan dan Debug Pekerjaan Pelatihan Menggunakan Python SageMaker SDK, dan menyimpannya ke "losses" koleksi.

    hook.register_loss(loss_function)
  4. Tambahkan hook.set_mode(ModeKeys.TRAIN) di blok kereta. Ini menunjukkan pengumpulan 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 menamai koleksi skalar kustom. 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, yang "images" merupakan contoh nama tensor khusus, image_inputs adalah variabel contoh 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. Default-nya adalah collections_to_write="default". Jika Anda tidak menentukan argumen ketiga secara eksplisit, tensor khusus disimpan ke koleksi "default" tensor.

Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan keLangkah 2: Luncurkan dan Debug Pekerjaan Pelatihan Menggunakan Python SageMaker SDK.