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 .
catatan
SageMaker Debugger tidak dapat mengumpulkan tensor keluaran model dari operasi. torch.nn.functional
torch.nn
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 hook APIssagemaker-debugger
klien. Ikuti instruksi berikut yang memecah langkah-langkah dengan contoh kode.
-
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 Python SageMaker SDK dengan salah satu DebuggerHookConfig, TensorBoardConfig, atau Aturan di estimator Anda, SageMaker AI menambahkan file JSON konfigurasi ke instance pelatihan Anda yang diambil oleh
get_hook
fungsi tersebut. Perhatikan bahwa jika Anda tidak menyertakan konfigurasi apa pun APIs di estimator Anda, tidak akan ada file konfigurasi yang dapat ditemukan oleh hook, dan fungsinya kembaliNone
.(Opsional) Untuk pekerjaan pelatihan di luar SageMaker AI
Jika Anda menjalankan tugas pelatihan dalam mode lokal, langsung di instans SageMaker Notebook, EC2 instans Amazon, 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 instans pelatihan SageMaker AI dan S3 untuk menyimpan output dari instance jarak jauh secara real time.smd.get_hook
APIPengembalianNone
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 kembaliNone
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 ) -
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. Luncurkan pekerjaan pelatihan dengan Debugger 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 ini
hook.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. -
Warp fungsi loss dengan metode kelas hook.
hook.register_loss
Metodenya adalah membungkus fungsi kerugian. Ini mengekstrak nilai kerugian setiapsave_interval
yang akan Anda atur selama konfigurasiLuncurkan pekerjaan pelatihan dengan Debugger menggunakan Python SageMaker SDK, dan menyimpannya ke"losses"
koleksi.hook.register_loss(loss_function)
-
Tambahkan
hook.set_mode(ModeKeys.TRAIN)
di blok kereta. Ini menunjukkan pengumpulan tensor diekstraksi selama fase pelatihan.def train(): ... hook.set_mode(ModeKeys.TRAIN)
-
Tambahkan
hook.set_mode(ModeKeys.EVAL)
di blok validasi. Ini menunjukkan koleksi tensor diekstraksi selama fase validasi.def validation(): ... hook.set_mode(ModeKeys.EVAL)
-
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 kustom. Ini adalah nama yang akan digunakan untuk memvisualisasikan nilai skalar di TensorBoard, dan dapat berupa string apa pun yang Anda inginkan.
-
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 ketigacollections_to_write
untuk menentukan koleksi tensor untuk menyimpan tensor khusus. Default-nya adalahcollections_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 keLuncurkan pekerjaan pelatihan dengan Debugger menggunakan Python SageMaker SDK.