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
Untuk mulai mengumpulkan tensor keluaran model dan masalah pelatihan debug, buat modifikasi berikut pada skrip pelatihan Anda TensorFlow .
Buat pengait untuk pekerjaan pelatihan di dalam SageMaker
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 Python SageMaker SDK dengan salah satuDebuggerHookConfig
,TensorBoardConfig
, atau Rules
di estimator Anda, SageMaker menambahkan file JSON konfigurasi ke instance pelatihan Anda yang diambil oleh smd.get_hook
metode 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) Buat pengait untuk pekerjaan pelatihan di luar SageMaker
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. smd.get_hook
Metode 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 membuat hook manual menggunakan kelas. smd.Hook
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 pelatihan TensorFlow 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 Keras dan pengoptimal Anda dengan metode kelas hook.
hook.register_model()
Metode ini mengambil model Anda dan mengulangi setiap lapisan, mencari tensor apa pun yang cocok dengan ekspresi reguler yang akan Anda berikan melalui konfigurasi di. Luncurkan pekerjaan pelatihan dengan Debugger menggunakan Python SageMaker SDK Tensor yang dapat dikoleksi 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 bersemangat di. TensorFlow
Untuk mengumpulkan tensor dari model, seperti tensor input dan output dari setiap lapisan, Anda harus menjalankan pelatihan dalam mode bersemangat. Jika tidak, SageMaker Debugger tidak akan dapat mengumpulkan tensor. Namun, tensor lain, seperti bobot model, bias, dan kerugian, dapat dikumpulkan tanpa berjalan secara eksplisit 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 ini. Untuk mengumpulkan tensor dari kait yang Anda daftarkan, tambahkan
callbacks=[hook]
ke metode kelas Kerasmodel.fit()
. Ini akan melewatisagemaker-debugger
hook 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.GradientTape
denganhook.wrap_tape()
metode, yang mengharuskan Anda untuk 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-debugger
kait dapat mengidentifikasi tensor keluaran seperti gradien, parameter, dan kerugian. Membungkus pita memastikan bahwahook.wrap_tape()
metode di sekitar fungsi objek tape, 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 dari (gradien).gradient()
catatan
Untuk mengumpulkan dengan loop pelatihan khusus, pastikan Anda menggunakan mode bersemangat. Jika tidak, SageMaker Debugger tidak dapat mengumpulkan tensor apa pun.
Untuk daftar lengkap tindakan yang APIs ditawarkan sagemaker-debugger
hook untuk membuat kait dan menyimpan tensor, lihat Metode Hook dalamsagemaker-debugger
SDK
Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan keLuncurkan pekerjaan pelatihan dengan Debugger menggunakan Python SageMaker SDK.