Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Sesuaikan skrip TensorFlow 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 TensorFlow pelatihan Anda.
Buat kait untuk pekerjaan pelatihan dalam SageMaker AI
import smdebug.tensorflow as smd hook=smd.get_hook(hook_type="keras", create_if_not_exists=True)
Ini menciptakan kait ketika Anda memulai pekerjaan SageMaker pelatihan. Saat Anda meluncurkan pekerjaan pelatihan Luncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK dengan salah satu DebuggerHookConfigTensorBoardConfig, atau Rules di Anda ModelTrainer, SageMaker AI menambahkan file konfigurasi JSON ke instance pelatihan Anda yang diambil oleh smd.get_hook metode 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) Buat kait 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. smd.get_hookMetode ini juga kembali None dalam kasus ini.
Jika Anda ingin membuat hook manual, gunakan cuplikan kode berikut dengan logika untuk memeriksa apakah hook kembali None dan buat hook manual menggunakan smd.Hook kelas.
import smdebug.tensorflow as smd hook=smd.get_hook(hook_type="keras", create_if_not_exists=True) if hook is None: hook=smd.KerasHook( out_dir='/path/to/your/local/output/', export_tensorboard=True )
Setelah menambahkan kode pembuatan hook, lanjutkan ke topik berikut untuk TensorFlow Keras.
catatan
SageMaker Debugger saat ini hanya mendukung TensorFlow Keras.
Daftarkan hook di skrip TensorFlow pelatihan Keras Anda
Preseden berikut memandu Anda melalui cara menggunakan hook dan metodenya untuk mengumpulkan skalar dan tensor keluaran dari model dan pengoptimal Anda.
-
Bungkus model dan pengoptimal Keras Anda dengan metode kelas hook.
hook.register_model()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, dan aktivasi.model=tf.keras.Model(...) hook.register_model(model) -
Bungkus pengoptimal dengan
hook.wrap_optimizer()metode.optimizer=tf.keras.optimizers.Adam(...) optimizer=hook.wrap_optimizer(optimizer) -
Kompilasi model dalam mode penasaran di TensorFlow.
Untuk mengumpulkan tensor dari model, seperti tensor input dan output dari setiap lapisan, Anda harus menjalankan pelatihan dalam mode penasaran. Jika tidak, SageMaker AI Debugger tidak akan dapat mengumpulkan tensor. Namun, tensor lain, seperti bobot model, bias, dan kerugian, dapat dikumpulkan tanpa secara eksplisit berjalan dalam mode bersemangat.
model.compile( loss="categorical_crossentropy", optimizer=optimizer, metrics=["accuracy"], # Required for collecting tensors of each layer run_eagerly=True ) -
Daftarkan kait ke
tf.keras.Model.fit()metode. Untuk mengumpulkan tensor dari kait yang Anda daftarkan, tambahkan
callbacks=[hook]ke metodemodel.fit()kelas Keras. Ini akan melewatisagemaker-debuggerhook sebagai callback Keras.model.fit( X_train, Y_train, batch_size=batch_size, epochs=epoch, validation_data=(X_valid, Y_valid), shuffle=True, callbacks=[hook] ) -
TensorFlow 2.x hanya menyediakan variabel gradien simbolik yang tidak menyediakan akses ke nilainya. Untuk mengumpulkan gradien, bungkus
tf.GradientTapedenganhook.wrap_tape()metode, yang mengharuskan Anda menulis langkah pelatihan Anda sendiri sebagai berikut. def training_step(model, dataset): with hook.wrap_tape(tf.GradientTape()) as tape: pred=model(data) loss_value=loss_fn(labels, pred) grads=tape.gradient(loss_value, model.trainable_variables) optimizer.apply_gradients(zip(grads, model.trainable_variables))Dengan membungkus pita,
sagemaker-debuggerkait dapat mengidentifikasi tensor keluaran seperti gradien, parameter, dan kerugian. Membungkus pita memastikan bahwahook.wrap_tape()metode di sekitar fungsi objek pita, seperti,,push_tape()pop_tape()gradient(), akan mengatur penulis SageMaker Debugger dan menyimpan tensor yang disediakan sebagai input kegradient()(variabel dan kerugian yang dapat dilatih) dan output darigradient()(gradien).catatan
Untuk mengumpulkan dengan loop pelatihan khusus, pastikan Anda menggunakan mode penasaran. Jika tidak, SageMaker Debugger tidak dapat mengumpulkan tensor apa pun.
Untuk daftar lengkap tindakan yang ditawarkan oleh sagemaker-debugger hook API untuk membuat kait dan menyimpan tensor, lihat Metode Hook sagemaker-debugger Python SDK.
Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan keLuncurkan pekerjaan pelatihan dengan Debugger menggunakan SageMaker Python SDK.