Bu kılavuzda, XProf ile sunulan araçları kullanarak TensorFlow modellerinizin ana makinede (CPU), cihazda (GPU) veya hem ana makine hem de cihazlarda performansını nasıl izleyeceğiniz gösterilmektedir.
Profillendirme, modelinizdeki çeşitli TensorFlow işlemlerinin (ops) donanım kaynağı tüketimini (zaman ve bellek) anlamanıza, performans darboğazlarını çözmenize ve sonuç olarak modelin daha hızlı çalışmasını sağlamanıza yardımcı olur.
Bu rehberde, kullanılabilen çeşitli araçların nasıl kullanılacağı ve Profiler'ın performans verilerini toplama şeklinin farklı modları açıklanmaktadır.
Model performansınızın Cloud TPU'larda profilini oluşturmak istiyorsanız Cloud TPU kılavuzuna bakın.
Performans verilerini toplama
XProf, TensorFlow modelinizin ana makine etkinliklerini ve GPU izlerini toplar. XProf'u, performans verilerini programatik mod veya örnekleme modu aracılığıyla toplayacak şekilde yapılandırabilirsiniz.
Profillendirme API'leri
Profillendirme yapmak için aşağıdaki API'leri kullanabilirsiniz.
TensorBoard Keras geri çağırma işlevini (
tf.keras.callbacks.TensorBoard) kullanan programatik mod# 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])tf.profilerFunction API'yi kullanarak programatik modtf.profiler.experimental.start('logdir') # Train the model here tf.profiler.experimental.stop()Bağlam yöneticisini kullanarak programatik mod
with tf.profiler.experimental.Profile('logdir'): # Train the model here pass
Örnekleme modu: TensorFlow model çalıştırmanızla bir gRPC sunucusu başlatmak için
tf.profiler.experimental.server.startkullanarak isteğe bağlı profil oluşturma işlemi gerçekleştirin. gRPC sunucusunu başlattıktan ve modelinizi çalıştırdıktan sonra, XProf'taki Capture Profile (Profili Yakala) düğmesini kullanarak profil yakalayabilirsiniz. TensorBoard örneği henüz çalışmıyorsa yukarıdaki Profil oluşturucuyu yükleme bölümündeki komut dosyasını kullanarak başlatın.Örneğin,
# 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)Birden fazla çalışanın profilini oluşturma örneği:
# 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)

Profil Yakalama iletişim kutusunu kullanarak şunları belirtebilirsiniz:
- Profil hizmeti URL'lerinin veya TPU adlarının virgülle ayrılmış listesi.
- Profillendirme süresi.
- Cihaz, ana makine ve Python işlevi çağrısı izlemenin düzeyi.
- Profiler'ın ilk denemede başarısız olması durumunda profilleri kaç kez daha yakalamayı denemesini istediğiniz.
Özel eğitim döngülerinde profil oluşturma
TensorFlow kodunuzdaki özel eğitim döngülerinin profilini oluşturmak için XProf'un adım sınırlarını işaretlemek üzere eğitim döngüsünü tf.profiler.experimental.Trace API ile donatın.
name bağımsız değişkeni adım adları için ön ek olarak kullanılır, step_num anahtar kelime bağımsız değişkeni adım adlarına eklenir ve _r anahtar kelime bağımsız değişkeni, bu izleme etkinliğinin XProf tarafından adım etkinliği olarak işlenmesini sağlar.
Örneğin,
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)
Bu işlem, XProf'un adım tabanlı performans analizini etkinleştirir ve adım etkinliklerinin izleme görüntüleyicide görünmesine neden olur.
Giriş işlem hattının doğru şekilde analiz edilmesi için veri kümesi yineleyicisini tf.profiler.experimental.Trace bağlamına eklediğinizden emin olun.
Aşağıdaki kod snippet'i bir anti-pattern'dir:
for step, train_data in enumerate(dataset):
with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
train_step(train_data)
Profillendirme kullanım alanları
Profiler, dört farklı eksende çeşitli kullanım alanlarını kapsar. Şu anda bazı kombinasyonlar desteklenmektedir. Diğerleri ise gelecekte eklenecektir. Kullanım alanlarından bazıları şunlardır:
- Yerel ve uzaktan profil oluşturma: Bunlar, profil oluşturma ortamınızı ayarlamanın iki yaygın yoludur. Yerel profillemede, profilleme API'si modelinizin yürütüldüğü makinede (ör. GPU'lu yerel bir iş istasyonu) çağrılır. Uzak profillemede, profilleme API'si modelinizin yürütüldüğü makineden farklı bir makinede (ör. Cloud TPU) çağrılır.
- Birden fazla çalışanın profillendirilmesi: TensorFlow'un dağıtılmış eğitim özelliklerini kullanırken birden fazla makinenin profilini oluşturabilirsiniz.
- Donanım platformu: CPU'ları, GPU'ları ve TPU'ları profillendirin.
Aşağıdaki tabloda, yukarıda bahsedilen TensorFlow destekli kullanım alanlarına ilişkin kısa bir genel bakış sunulmaktadır:
| Profiling API | Yerel | Uzaktan | Birden fazla çalışan | Donanım Platformlar |
|---|---|---|---|---|
| TensorBoard Keras Callback | Destekleniyor | Desteklenmiyor | Desteklenmiyor | CPU, GPU |
tf.profiler.experimental
başlatma/durdurma API |
Destekleniyor | Desteklenmiyor | Desteklenmiyor | CPU, GPU |
tf.profiler.experimental
client.trace API |
Destekleniyor | Destekleniyor | Destekleniyor | CPU, GPU, TPU |
| Bağlam yöneticisi API'si | Destekleniyor | Desteklenmiyor | Desteklenmiyor | CPU, GPU |
Ek kaynaklar
- Bu kılavuzdaki tavsiyeleri uygulayabileceğiniz, Keras ve TensorBoard ile TensorFlow Profiler: Model performansını profilleme adlı eğitim.
- TensorFlow Dev Summit 2020'deki TensorFlow 2'de performans profili oluşturma konulu konuşma.
- TensorFlow Dev Summit 2020'deki TensorFlow Profiler demosunu izleyin.