Panduan ini menunjukkan cara menggunakan alat yang tersedia dengan XProf untuk melacak performa model TensorFlow Anda di host (CPU), perangkat (GPU), atau di kombinasi host dan perangkat.
Pembuatan profil membantu memahami penggunaan resource hardware (waktu dan memori) dari berbagai operasi (ops) TensorFlow dalam model Anda, mengatasi hambatan performa, dan pada akhirnya membuat model dieksekusi lebih cepat.
Panduan ini akan memandu Anda cara menggunakan berbagai alat yang tersedia dan berbagai mode cara Profiler mengumpulkan data performa.
Jika Anda ingin memprofilkan performa model di Cloud TPU, lihat panduan Cloud TPU.
Mengumpulkan data performa
XProf mengumpulkan aktivitas host dan rekaman aktivitas GPU model TensorFlow Anda. Anda dapat mengonfigurasi XProf untuk mengumpulkan data performa melalui mode terprogram atau mode pengambilan sampel.
API Pembuatan Profil
Anda dapat menggunakan API berikut untuk melakukan pembuatan profil.
Mode terprogram menggunakan TensorBoard Keras Callback (
tf.keras.callbacks.TensorBoard)# Profile from batches 10 to 15 tb_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, profile_batch='10, 15') # Train the model and use the TensorBoard Keras callback to collect # performance profiling data model.fit(train_data, steps_per_epoch=20, epochs=5, callbacks=[tb_callback])Mode terprogram menggunakan API Fungsi
tf.profilertf.profiler.experimental.start('logdir') # Train the model here tf.profiler.experimental.stop()Mode terprogram menggunakan pengelola konteks
with tf.profiler.experimental.Profile('logdir'): # Train the model here pass
Mode pengambilan sampel: Lakukan pembuatan profil sesuai permintaan dengan menggunakan
tf.profiler.experimental.server.startuntuk memulai server gRPC dengan TensorFlow model Anda. Setelah memulai server gRPC dan menjalankan model, Anda dapat merekam profil melalui tombol Capture Profile di XProf. Gunakan skrip di bagian Menginstal profiler di atas untuk meluncurkan instance TensorBoard jika belum berjalan.Sebagai contoh,
# Start a profiler server before your model runs. tf.profiler.experimental.server.start(6009) # (Model code goes here). # Send a request to the profiler server to collect a trace of your model. tf.profiler.experimental.client.trace('grpc://localhost:6009', 'gs://your_tb_logdir', 2000)Contoh untuk membuat profil beberapa pekerja:
# E.g., your worker IP addresses are 10.0.0.2, 10.0.0.3, 10.0.0.4, and you # would like to profile for a duration of 2 seconds. tf.profiler.experimental.client.trace( 'grpc://10.0.0.2:8466,grpc://10.0.0.3:8466,grpc://10.0.0.4:8466', 'gs://your_tb_logdir', 2000)

Gunakan dialog Capture Profile untuk menentukan:
- Daftar URL layanan profil atau nama TPU yang dipisahkan koma.
- Durasi pembuatan profil.
- Tingkat pelacakan panggilan fungsi Python, host, dan perangkat.
- Berapa kali Anda ingin Profiler mencoba lagi merekam profil jika tidak berhasil pada awalnya.
Membuat profil loop pelatihan kustom
Untuk membuat profil loop pelatihan kustom dalam kode TensorFlow, instrumentasikan loop pelatihan dengan tf.profiler.experimental.Trace API untuk menandai batas langkah untuk XProf.
Argumen name digunakan sebagai awalan untuk nama langkah, argumen kata kunci step_num
ditambahkan dalam nama langkah, dan argumen kata kunci _r
membuat peristiwa rekaman aktivitas ini diproses sebagai peristiwa langkah oleh XProf.
Sebagai contoh,
for step in range(NUM_STEPS):
with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
train_data = next(dataset)
train_step(train_data)
Tindakan ini akan mengaktifkan analisis performa berbasis langkah XProf dan menyebabkan peristiwa langkah muncul di pelihat rekaman aktivitas.
Pastikan Anda menyertakan iterator set data dalam konteks
tf.profiler.experimental.Trace untuk analisis yang akurat pada pipeline
input.
Cuplikan kode di bawah adalah anti-pola:
for step, train_data in enumerate(dataset):
with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
train_step(train_data)
Kasus penggunaan pembuatan profil
Profiler mencakup sejumlah kasus penggunaan di sepanjang empat sumbu yang berbeda. Beberapa kombinasi saat ini didukung dan kombinasi lainnya akan ditambahkan pada masa mendatang. Beberapa kasus penggunaan adalah:
- Pembuatan profil lokal vs. jarak jauh: Ini adalah dua cara umum untuk menyiapkan lingkungan pembuatan profil Anda. Dalam pembuatan profil lokal, API pembuatan profil dipanggil di mesin yang sama dengan tempat model Anda dieksekusi, misalnya, workstation lokal dengan GPU. Dalam pembuatan profil jarak jauh, API pembuatan profil dipanggil di mesin yang berbeda dari tempat model Anda dieksekusi, misalnya, di Cloud TPU.
- Membuat profil beberapa pekerja: Anda dapat membuat profil beberapa mesin saat menggunakan kemampuan pelatihan terdistribusi TensorFlow.
- Platform hardware: Buat profil CPU, GPU, dan TPU.
Tabel di bawah ini memberikan ringkasan singkat tentang kasus penggunaan yang didukung TensorFlow yang disebutkan di atas:
| Profiling API | Lokal | Eksternal | Beberapa pekerja | Platform Hardware |
|---|---|---|---|---|
| Callback TensorBoard Keras | Didukung | Tidak Didukung | Tidak Didukung | CPU, GPU |
tf.profiler.experimental
start/stop API |
Didukung | Tidak Didukung | Tidak Didukung | CPU, GPU |
tf.profiler.experimental
client.trace API |
Didukung | Didukung | Didukung | CPU, GPU, TPU |
| API pengelola konteks | Didukung | Tidak didukung | Tidak Didukung | CPU, GPU |
Referensi lainnya
- Tutorial TensorFlow Profiler: Memprofilkan performa model dengan Keras dan TensorBoard tempat Anda dapat menerapkan saran dalam panduan ini.
- Pembicaraan Pembuatan profil performa di TensorFlow 2 dari TensorFlow Dev Summit 2020.
- Demo TensorFlow Profiler dari TensorFlow Dev Summit 2020.