Bellek Görüntüleme Aracı
Programın kullanım süresi boyunca bellek kullanımını görselleştirmek için Bellek Görüntüleyici'yi kullanabilirsiniz. Bellek kullanımının en yüksek olduğu noktada bellek içeriğinin ayrıntılarını inceleyebilirsiniz. Bu sayede, bellek yetersizliği (OOM) durumlarında hata ayıklama yapabilirsiniz. Bellek Görüntüleyici, genel bellek kullanımını ve hesaplamanın bellek dışı kalma durumuna ne kadar yaklaştığını görmenize yardımcı olabilir.
Bellek Görüntüleyici'de gösterilen tüm bilgiler tamamen statiktir ve XLA derleyicisinden alınır. Dinamik çalışma zamanı bilgileri ise Bellek Profili aracında sunulur.
Desteklenen Platformlar
TPU: Desteklenir
GPU: Desteklenir
Bellek Görüntüleyici Bileşenleri
Bellek Görüntüleyici birkaç temel bileşenden oluşur:
- Görselleştirdiğiniz verileri özelleştirmenize olanak tanıyan kullanıcı kontrolü açılır menüleri:
- Bellek türleri: Desteklenen bellek türleri hızlandırıcıya bağlıdır. GPU'larda odak yüksek bant genişliğine sahip belleğe (HBM) verilirken TPU'larda VMEM, SMEM, CMEM, senkronizasyon işaretleri (SFlag), Sparsecore ve ana makine belleği de dahil olmak üzere çip üzerinde belleklerin kullanımını da görüntüleyebilirsiniz.
- Modüller: Bunlar, yürütmenizin bir parçası olan XLA programlarıdır. İyi bir başlangıç noktası genellikle "jit_train_step" veya "jit_generate" gibi bir etikete sahip üst düzey bir modüldür.
- Metinle genel bakış bölümünde, program için gereken en yüksek bellek ayırma, bağımsız değişkenler ile geçici değişkenler arasındaki bölünme vb. gibi üst düzey bilgiler sağlanır. Hızlandırıcılarda desteklenen tenzor şekilleriyle ilgili kısıtlamalar nedeniyle, doldurma nedeniyle ek yük oluşur. Bu dolgu, toplam tahsisin büyük bir kısmını oluşturuyorsa optimizasyon fırsatı olabilir.
- "Bellek Ayırma Boyutu ve Program Sırası" çizgi grafiğinde, bellek kullanımı ve derleyici tarafından planlanan program noktaları (HLO dizisi) gösterilir.
- X ekseninin zaman olmadığını unutmayın.
- Grafikte, programdaki seçilen modülün en yüksek bellek kullanımının olduğu nokta özellikle vurgulanır. Profilleyici ve araçlar, belirli bir çip/bellekteki modüllerin birlikte bulunduğundan haberdar değildir. Her modül derlenirken derleyici, profile ayrılan toplam belleğin "temel" başlangıç noktasıyla (bundan önce derlenen modüller tarafından) ek açıklamalar ekler ve daha fazla tahsis ve tahsis iptali gerçekleştikçe bu noktadan yukarı ve aşağı doğru sayar. Ancak, yürütülmeden önce derlenen diğer modüller tarafından yapılacak gelecekteki tüm ayrıştırmalar yakalanmaz. OOM durumlarında hata ayıklama yaparken bunu göz önünde bulundurun.
Sayfanın alt kısmındaki arabelleğe alma grafikleri, programın en yüksek kullanım noktasındaki bellek kullanımını (bellek kullanımı çizgi grafiğindeki dikey çizgiyle gösterilir) ayrıntılı olarak gösterir. Üç grafik vardır. Hepsi program tarafından ayrılan tüm arabellek grubunu gösterir ancak üç farklı şekilde sıralanır:
- Program sırasına göre: Program yürütülürken etkinleştirildikleri sıra. En eskiler solda görünür.
- Boyuta göre: En yüksek bellek kullanımı noktasında en büyük etkiye sahip olanlar soldadır.
Ek olarak, donanım açısından en "verimli" cihazlar solda gösterilir.
Arabelleklerin renklerinin belirli bir anlamı olmadığını unutmayın.
Üç grafikten herhangi birindeki bir tamponun üzerine geldiğinizde iki ek görüntü gösterilir:
- Bellek kullanımı çizgi grafiğinde, arabellek kartıyla eşleşen bir renkte, arabelleğin kullanım süresini gösteren bir yer paylaşımı. Yani, sol ve sağ kenarları program sırası içinde ayırma ve ayırma noktalarını gösteren yatay bir çubuk. Yatay çubuğun yüksekliği, seçilen arabelleğin en yüksek ayırmaya kıyasla göreli boyutunu gösterir.
- Genellikle sol tarafta bulunan ve geçerli olduğu durumlarda belirli işlemle ilgili ayrıntıları içeren ayrı bir arabellek ayrıntıları kartı. Tipik bir kartta aşağıdaki bilgiler bulunur:
- Ad: Grafik Görüntüleyici veya İzleme Görüntüleyici'de arayabileceğiz XLA işlem adı.
- Boyut: Arabellek ayırma işleminin, dolgu dahil ve dolgu hariç boyutu.
- Şekil: N boyutlu dizinin sırasını, boyutunu ve veri türünü tanımlar.
- Framework op name: Bu ayırmayla ilişkili çerçeve işleminin adını gösterir.
- Ayırma türü: Arabellek ayırmalarını aşağıdaki türlere ayırır: Parametre, Çıkış, Konum yerel ve Geçici (ör. bir birleştirme içindeki arabellek ayırma).