Bu kılavuz, TensorFlow modellerinizin performansını izlemek için TensorFlow Profiler'da bulunan araçların nasıl kullanılacağını gösterir. Modelinizin ana bilgisayarda (CPU), cihazda (GPU) veya hem ana bilgisayar hem de aygıtların birleşiminde nasıl performans gösterdiğini nasıl anlayacağınızı öğreneceksiniz.
Profil oluşturma, 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ı yürütülmesine yardımcı olur.
Bu kılavuz, Profiler'ın nasıl kurulacağı, mevcut çeşitli araçlar, Profiler'ın performans verilerini nasıl topladığına ilişkin farklı modlar ve model performansını optimize etmek için önerilen bazı en iyi uygulamalar konusunda size yol gösterecektir.
Cloud TPU'larda model performansınızın profilini çıkarmak istiyorsanız Cloud TPU kılavuzuna bakın.
Profiler ve GPU önkoşullarını yükleyin
TensorBoard için Profiler eklentisini pip ile yükleyin. Profiler'ın TensorFlow ve TensorBoard'un en son sürümlerini (>=2.2) gerektirdiğini unutmayın.
pip install -U tensorboard_plugin_profile
GPU'da profil oluşturmak için şunları yapmanız gerekir:
- TensorFlow GPU destek yazılımı gereksinimlerinde listelenen NVIDIA® GPU sürücüleri ve CUDA® Araç Seti gereksinimlerini karşılayın.
Yolda NVIDIA® CUDA® Profil Oluşturma Araçları Arayüzünün (CUPTI) mevcut olduğundan emin olun:
/sbin/ldconfig -N -v $(sed 's/:/ /g' <<< $LD_LIBRARY_PATH) | \ grep libcupti
Yolda CUPTI yoksa, aşağıdakileri çalıştırarak kurulum dizinini $LD_LIBRARY_PATH ortam değişkeninin başına ekleyin:
export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
Daha sonra CUPTI kütüphanesinin bulunduğunu doğrulamak için yukarıdaki ldconfig komutunu tekrar çalıştırın.
Ayrıcalık sorunlarını çözme
Docker ortamında veya Linux'ta CUDA® Toolkit ile profil oluşturmayı çalıştırdığınızda, yetersiz CUPTI ayrıcalıklarıyla ( CUPTI_ERROR_INSUFFICIENT_PRIVILEGES ) ilgili sorunlarla karşılaşabilirsiniz. Linux'ta bu sorunları nasıl çözebileceğiniz hakkında daha fazla bilgi edinmek için NVIDIA Geliştirici Dokümanlarına gidin.
Docker ortamında CUPTI ayrıcalığı sorunlarını çözmek için şunu çalıştırın:
docker run option '--privileged=true'
Profil oluşturma araçları
Profiler'a, yalnızca bazı model verilerini yakaladıktan sonra görünen TensorBoard'daki Profil sekmesinden erişin.
Profiler'da performans analizine yardımcı olacak çeşitli araçlar bulunur:
- Genel Bakış Sayfası
- Giriş Boru Hattı Analizörü
- TensorFlow İstatistikleri
- İz Görüntüleyici
- GPU Çekirdek İstatistikleri
- Bellek Profili Aracı
- Kapsül Görüntüleyici
Genel bakış sayfası
Genel bakış sayfası, modelinizin bir profil çalıştırması sırasında nasıl performans gösterdiğine ilişkin üst düzey bir görünüm sağlar. Sayfada, ana makineniz ve tüm cihazlarınız için toplu bir genel bakış sayfası ve model eğitimi performansınızı iyileştirmeye yönelik bazı öneriler gösterilir. Ayrıca Ana Bilgisayar açılır menüsünden tek tek ana bilgisayarları da seçebilirsiniz.
Genel bakış sayfası verileri aşağıdaki gibi görüntüler:

Performans Özeti : Model performansınızın üst düzey bir özetini görüntüler. Performans özeti iki bölümden oluşur:
Adım zamanı dökümü: Ortalama adım süresini, zamanın harcandığı yere göre birden fazla kategoriye ayırır:
- Derleme: Çekirdekleri derlemek için harcanan zaman.
- Giriş: Giriş verilerini okumak için harcanan süre.
- Çıktı: Çıktı verilerini okumak için harcanan süre.
- Çekirdek lansmanı: Ana bilgisayarın çekirdekleri başlatmak için harcadığı süre
- Ana bilgisayar hesaplama süresi..
- Cihazdan cihaza iletişim süresi.
- Cihaz üzerinde işlem süresi.
- Python yükü de dahil olmak üzere diğerleri.
Cihaz işlem hassasiyetleri - 16 ve 32 bit hesaplamaları kullanan cihaz işlem süresinin yüzdesini bildirir.
Adım Zamanı Grafiği : Örneklenen tüm adımlar üzerinden cihazın adım süresinin (milisaniye cinsinden) bir grafiğini görüntüler. Her adım, zamanın harcandığı yere göre birden fazla kategoriye (farklı renklerle) bölünmüştür. Kırmızı alan, cihazların ana bilgisayardan giriş verilerini beklerken boşta kaldığı adım süresinin bir kısmına karşılık gelir. Yeşil alan, cihazın gerçekte ne kadar süre çalıştığını gösterir.
Cihazdaki en iyi 10 TensorFlow işlemi (örn. GPU) : En uzun süre çalışan cihaz üzerindeki işlemleri görüntüler.
Her satırda bir operasyonun kendi zamanı (tüm operasyonların harcadığı zamanın yüzdesi olarak), kümülatif süre, kategori ve ad görüntülenir.
Çalıştırma Ortamı : Aşağıdakileri içeren model çalıştırma ortamının üst düzey bir özetini görüntüler:
- Kullanılan ana bilgisayar sayısı.
- Cihaz türü (GPU/TPU).
- Cihaz çekirdeği sayısı.
Sonraki Adım İçin Öneri : Bir modelin girdiye bağlı olduğunu bildirir ve model performans darboğazlarını bulmak ve çözmek için kullanabileceğiniz araçları önerir.
Giriş hattı analizörü
Bir TensorFlow programı bir dosyadan veri okuduğunda, işlem hattı şeklinde TensorFlow grafiğinin en üstünden başlar. Okuma işlemi, seri olarak bağlanan birden fazla veri işleme aşamasına bölünmüştür; burada bir aşamanın çıktısı, bir sonraki aşamanın girdisidir. Bu veri okuma sistemine giriş hattı adı verilir.
Dosyalardan kayıtları okumaya yönelik tipik bir işlem hattı aşağıdaki aşamalardan oluşur:
- Dosya okuma.
- Dosya ön işleme (isteğe bağlı).
- Ana bilgisayardan cihaza dosya aktarımı.
Verimsiz bir giriş hattı uygulamanızı ciddi şekilde yavaşlatabilir. Bir uygulama, zamanın önemli bir kısmını giriş hattında geçirdiğinde giriş bağlantılı olarak kabul edilir. Giriş hattının hangi noktalarda verimsiz olduğunu anlamak için giriş kanalı analiz aracından elde edilen bilgileri kullanın.
Giriş hattı analizörü, programınızın girişe bağlı olup olmadığını anında bildirir ve giriş hattının herhangi bir aşamasında performans darboğazlarında hata ayıklamak için cihaz ve ana bilgisayar tarafı analizinde size yol gösterir.
Veri giriş işlem hatlarınızı optimize etmeye yönelik önerilen en iyi uygulamalar için giriş işlem hattı performansına ilişkin kılavuza bakın.
Giriş hattı kontrol paneli
Giriş hattı çözümleyicisini açmak için Profil'i seçin, ardından Araçlar açılır menüsünden input_pipeline_analyzer'ı seçin.

Kontrol panelinde üç bölüm bulunur:
- Özet : Uygulamanızın girdiye bağlı olup olmadığı ve eğer öyleyse ne kadar olduğuna ilişkin bilgilerle genel girdi hattını özetler.
- Cihaz tarafı analizi : Cihaz adım süresi ve her adımda çekirdekler arasında giriş verilerini beklerken harcanan cihaz süresi aralığı da dahil olmak üzere ayrıntılı cihaz tarafı analiz sonuçlarını görüntüler.
- Ana bilgisayar tarafı analizi : Ana bilgisayardaki giriş işleme süresinin dökümü de dahil olmak üzere, ana bilgisayar tarafında ayrıntılı bir analiz gösterir.
Giriş hattı özeti
Özet, ana bilgisayardan girişi beklerken harcanan cihaz süresinin yüzdesini sunarak programınızın girişe bağlı olup olmadığını bildirir. Araçlandırılmış standart bir girdi hattı kullanıyorsanız araç, girdi işleme süresinin çoğunun nerede harcandığını bildirir.
Cihaz tarafı analizi
Cihaz tarafı analizi, cihazda ve ana bilgisayarda harcanan zamana ve ana bilgisayardan giriş verileri beklenirken ne kadar cihaz süresinin harcandığına ilişkin bilgiler sağlar.
- Adım numarasına göre çizilen adım süresi : Örneklenen tüm adımlar üzerinden cihaz adım süresinin (milisaniye cinsinden) bir grafiğini görüntüler. Her adım, zamanın harcandığı yere göre birden fazla kategoriye (farklı renklerle) bölünmüştür. Kırmızı alan, cihazların ana bilgisayardan giriş verilerini beklerken boşta kaldığı adım süresinin bir kısmına karşılık gelir. Yeşil alan, cihazın gerçekte ne kadar süre çalıştığını gösterir.
- Adım süresi istatistikleri : Cihazın adım süresinin ortalamasını, standart sapmasını ve aralığını ([minimum, maksimum]) raporlar.
Ana makine tarafı analizi
Ana bilgisayar tarafı analizi, ana bilgisayardaki giriş işleme süresinin ( tf.data API işlemlerinde harcanan süre) birkaç kategoriye ayrıldığını rapor eder:
- Talep üzerine dosyalardan veri okuma : Önbelleğe alma, önceden getirme ve araya ekleme olmadan dosyalardan veri okumak için harcanan süre.
- Dosyalardaki verileri önceden okuma : Önbelleğe alma, önceden getirme ve araya ekleme dahil olmak üzere dosyaları okumak için harcanan süre.
- Veri ön işleme : Görüntü sıkıştırmasını açma gibi ön işleme operasyonlarında harcanan zaman.
- Cihaza aktarılacak verileri sıraya alma : Verileri cihaza aktarmadan önce verileri bir besleme kuyruğuna koymak için harcanan süre.
Bireysel giriş işlemlerine ilişkin istatistikleri ve yürütme süresine göre ayrılmış kategorilerini incelemek için Giriş Operasyonu İstatistikleri'ni genişletin.

Her girişte aşağıdaki bilgileri içeren bir kaynak veri tablosu görünecektir:
- Giriş İşlemi : Giriş işleminin TensorFlow işlem adını gösterir.
- Sayım : Profil oluşturma dönemi boyunca op yürütme örneklerinin toplam sayısını gösterir.
- Toplam Süre (ms cinsinden) : Bu örneklerin her biri için harcanan toplam süreyi gösterir.
- Toplam Süre % : Bir operasyonda harcanan toplam süreyi, girdi işlemede harcanan toplam sürenin kesri olarak gösterir.
- Toplam Kişisel Zaman (ms cinsinden) : Bu örneklerin her birinde harcanan kişisel zamanın kümülatif toplamını gösterir. Buradaki kişisel zaman, çağırdığı işlevde harcanan süre hariç, işlev gövdesi içinde geçirilen süreyi ölçer.
- Toplam Zamanın Yüzdesi . Toplam kişisel zamanı, girdi işleme için harcanan toplam sürenin bir kısmı olarak gösterir.
- Kategori . Giriş işleminin işleme kategorisini gösterir.
TensorFlow istatistikleri
TensorFlow İstatistikleri aracı, bir profil oluşturma oturumu sırasında ana bilgisayar veya cihazda yürütülen her TensorFlow işleminin (op) performansını görüntüler.

Araç, performans bilgilerini iki bölmede görüntüler:
Üst bölmede en fazla dört pasta grafik görüntülenir:
- Ana bilgisayardaki her işlemin kendi kendini yürütme süresinin dağılımı.
- Ana bilgisayardaki her işlem türünün kendi kendini yürütme süresinin dağılımı.
- Cihazdaki her bir işlemin kendi kendini yürütme süresinin dağılımı.
- Cihazdaki her işlem türünün kendi kendini yürütme süresinin dağılımı.
Alt bölmede, her işlem için bir satır ve her veri türü için bir sütun içeren TensorFlow işlemleri hakkındaki verileri raporlayan bir tablo gösterilir (sütunların başlığına tıklayarak sütunları sıralayın). Bu tablodaki verileri bir CSV dosyası olarak dışa aktarmak için üst bölmenin sağ tarafındaki CSV Olarak Dışa Aktar düğmesini tıklayın.
Dikkat:
Herhangi bir işlemin alt işlemleri varsa:
- Bir operasyonun toplam "birikmiş" süresi, alt operasyonlarda geçirilen süreyi de içerir.
- Bir operasyonun toplam "kendi" süresi, alt operasyonlarda harcanan zamanı içermez.
Ana bilgisayarda bir op yürütülürse:
- Opsiyonun cihazda harcadığı toplam zamanın yüzdesi 0 olacaktır.
- Bu operasyona kadar ve bu operasyon dahil olmak üzere cihazda geçirilen toplam zamanın kümülatif yüzdesi 0 olacaktır.
Cihazda bir operasyon yürütülürse:
- Bu operasyonun ana bilgisayar üzerinde harcadığı toplam zamanın yüzdesi 0 olacaktır.
- Bu operasyona kadar ve bu operasyon da dahil olmak üzere ana bilgisayardaki toplam kişisel zamanın kümülatif yüzdesi 0 olacaktır.
Pasta grafiklerine ve tabloya Boşta kalma süresini dahil etmeyi veya hariç tutmayı seçebilirsiniz.
İz görüntüleyici
İzleme görüntüleyici şunları gösteren bir zaman çizelgesi görüntüler:
- TensorFlow modeliniz tarafından gerçekleştirilen operasyonların süreleri
- Sistemin hangi kısmının (ana bilgisayar veya cihaz) bir işlem yürüttüğü. Tipik olarak, cihaz gerçek model eğitimini yürütürken, ana bilgisayar giriş işlemlerini yürütür, eğitim verilerini ön işler ve cihaza aktarır.
İzleme görüntüleyici, modelinizdeki performans sorunlarını tanımlamanıza ve ardından bunları çözmek için gerekli adımları atmanıza olanak tanır. Örneğin, yüksek düzeyde, zamanın çoğunu girdi eğitiminin mi yoksa model eğitiminin mi aldığını belirleyebilirsiniz. Detaylara inerek, hangi operasyonların yürütülmesinin en uzun sürdüğünü belirleyebilirsiniz. İzleme görüntüleyicinin cihaz başına 1 milyon olayla sınırlı olduğunu unutmayın.
İz görüntüleyici arayüzü
İzleme görüntüleyiciyi açtığınızda, en son çalıştırmanızı görüntüler:

Bu ekran aşağıdaki ana unsurları içerir:
- Zaman çizelgesi bölmesi : Cihazın ve ana bilgisayarın zaman içinde yürüttüğü işlemleri gösterir.
- Ayrıntılar bölmesi : Zaman Çizelgesi bölmesinde seçilen işlemlere ilişkin ek bilgileri gösterir.
Zaman Çizelgesi bölmesi aşağıdaki öğeleri içerir:
- Üst çubuk : Çeşitli yardımcı kontrolleri içerir.
- Zaman ekseni : İzin başlangıcına göre zamanı gösterir.
- Bölüm ve parça etiketleri : Her bölüm birden fazla parça içerir ve solda bölümü genişletip daraltmak için tıklayabileceğiniz bir üçgen bulunur. Sistemde her işlem elemanı için bir bölüm bulunmaktadır.
- Araç seçici : Yakınlaştırma, Kaydırma, Seçme ve Zamanlama gibi iz görüntüleyiciyle etkileşime geçmek için çeşitli araçlar içerir. Bir zaman aralığını işaretlemek için Zamanlama aracını kullanın.
- Olaylar : Bunlar, bir operasyonun yürütüldüğü süreyi veya eğitim adımları gibi meta olayların süresini gösterir.
Bölümler ve parçalar
İzleme görüntüleyici aşağıdaki bölümleri içerir:
- Her cihaz düğümü için, cihaz çipinin ve çip içindeki cihaz düğümünün numarasıyla etiketlenmiş bir bölüm (örneğin,
/device:GPU:0 (pid 0)). Her cihaz düğümü bölümü aşağıdaki parçaları içerir:- Adım : Cihazda yürütülen eğitim adımlarının süresini gösterir
- TensorFlow Ops : Cihazda yürütülen işlemleri gösterir
- XLA Ops : Kullanılan derleyici XLA ise cihazda çalışan XLA işlemlerini (ops) gösterir (her TensorFlow işlemi bir veya daha fazla XLA işlemine çevrilir. XLA derleyicisi, XLA işlemlerini cihazda çalışan koda dönüştürür).
- Ana makinenin CPU'sunda çalışan iş parçacıkları için "Ana Bilgisayar Konuları" etiketli bir bölüm. Bu bölüm her CPU iş parçacığı için bir parça içerir. Bölüm etiketlerinin yanında görüntülenen bilgileri göz ardı edebileceğinizi unutmayın.
Olaylar
Zaman çizelgesindeki olaylar farklı renklerde görüntülenir; renklerin kendilerinin belirli bir anlamı yoktur.
İzleme görüntüleyici ayrıca TensorFlow programınızdaki Python işlev çağrılarının izlerini de görüntüleyebilir. tf.profiler.experimental.start API'sini kullanıyorsanız profil oluşturmaya başlarken ProfilerOptions isimli tuple'ı kullanarak Python izlemeyi etkinleştirebilirsiniz. Alternatif olarak, profil oluşturma için örnekleme modunu kullanıyorsanız Profil Yakalama iletişim kutusundaki açılır seçenekleri kullanarak izleme düzeyini seçebilirsiniz.

GPU çekirdek istatistikleri
Bu araç, her GPU hızlandırmalı çekirdeğin performans istatistiklerini ve kaynak işlemini gösterir.

Araç, bilgileri iki bölmede görüntüler:
Üst bölmede, geçen en yüksek toplam süreye sahip CUDA çekirdeklerini gösteren bir pasta grafiği görüntülenir.
Alt bölmede, her benzersiz çekirdek işlem çifti için aşağıdaki verileri içeren bir tablo görüntülenir:
- Çekirdek-op çiftine göre gruplandırılmış, toplam geçen GPU süresinin azalan sırada sıralanması.
- Başlatılan çekirdeğin adı.
- Çekirdek tarafından kullanılan GPU kayıtlarının sayısı.
- Bayt cinsinden kullanılan paylaşılan (statik + dinamik paylaşılan) belleğin toplam boyutu.
-
blockDim.x, blockDim.y, blockDim.zolarak ifade edilen blok boyutu. -
gridDim.x, gridDim.y, gridDim.zolarak ifade edilen ızgara boyutları. - Operasyonun Tensör Çekirdeklerini kullanmaya uygun olup olmadığı.
- Çekirdeğin Tensör Çekirdeği talimatlarını içerip içermediği.
- Bu çekirdeği başlatan operasyonun adı.