Narzędzie do analizy statystyk HLO
Na karcie Statystyki operacji HLO możesz sprawdzić statystyki skuteczności operacji wysokiego poziomu (HLO) wykonywanych podczas sesji profilowania. To narzędzie jest przydatne do identyfikowania potencjalnych celów optymalizacji wydajności. Wskazuje ono operacje, które w ramach profilu HLO zajmują najwięcej czasu w okresie objętym profilowaniem.
Obsługiwane platformy
TPU: obsługiwane
GPU: obsługiwane
W przypadku GPU operacje HLO mają relację N:M z rdzeniami, które są faktycznie wykonywane. Statystyki na poziomie jądra znajdziesz w narzędziu Statystyki jądra GPU.
Komponenty narzędzia HLO Op Stats
Narzędzie HLO Op Stats składa się z tych kluczowych elementów:
- Tabela statystyk operacji HLO: jest to główny element, który zawiera szczegółowy podział każdej operacji HLO wykonanej podczas sesji profilowania w formacie tabeli. W przypadku każdego rodzaju operacji HLO jest jeden wiersz oraz kolumny zawierające różne szczegóły dotyczące tej operacji.
- W menu możesz wybrać, które kolumny mają być wizualizowane w przypadku każdego operatora HLO.
- Możesz też filtrować wiersze według kategorii HLO za pomocą drugiego menu.
- Pole wyszukiwania umożliwia filtrowanie według konkretnych identyfikatorów programów, operacji HLO, tekstu operacji HLO lub nazwy operacji w ramach ram; filtry wybierają łańcuch znaków podany w dowolnym miejscu w odpowiedniej kolumnie.
- Sekcja Podsumowane wykresy: zawiera ona wykresy podsumowujące szczegółową tabelę operacji na 3 sposoby:
- Wykres kołowy przedstawiający odsetek czasu zużywanego przez różne kategorie operacji HLO.
- Wykres kołowy przedstawiający ułamek czasu zużywany przez poszczególne operacje HLO (ograniczyć do N najlepszych operacji, a pozostałe zaklasyfikować jako „Inne”, aby poprawić czytelność).
- Wykres kołowy przedstawiający ułamek łącznego czasu spędzonego na operacjach, które są częścią rematerializacji. XProf otrzymuje te informacje z metadanych kompilatora powiązanych z profilem.
- Wykres kołowy przedstawiający kategorie opcji HLO, w których występuje czas rematerializacji (jeśli występuje).
- Czas poświęcony na kompilację zewnętrzną: kompilacja zewnętrzna to funkcja TensorFlow, która umożliwia uruchamianie niektórych operacji w obliczeniach XLA w sposób przejrzysty na procesorze hosta zamiast na urządzeniu akceleratora (np. tf.summary lub tf.print, które wymagają dostępu do wejść/wyjść, którego urządzenie nie ma).
- Wykres przedstawiający GFLOPS/s dla wszystkich operacji HLO, posortowany według łącznego czasu działania.
- Tylko w przypadku TPU: czas na HLO według grupy replik: w menu możesz wybrać jedną z różnych operacji zbiorczych wykonanych podczas sesji profilowania. Różne wystąpienia tej operacji zbiorczej mogły zostać wykonane w różnych grupach replik (np. AllGather); wykres kołowy pokazuje rozkład czasu między tymi różnymi instancjami.
Szczegóły tabeli statystyk operacji HLO
Aby posortować tabelę statystyk operacji HLO, kliknij dowolny nagłówek kolumny. Domyślna kolejność jest określana na podstawie łącznego czasu trwania operacji (oznaczonego w tabeli jako „ranking”).
Tabela zawiera te informacje o każdej operacji HLO:
- Nazwa operacji: niepowtarzalna nazwa przypisana operacji HLO przez kompilator XLA.
- Identyfikator programu: identyfikator modułu HLO, z którym powiązany jest ten element.
- Kategoria operacji HLO: są one w dużej mierze zdefiniowane przez kompilator XLA; XProf dodatkowo stosuje heurystyki do identyfikowania i kategoryzowania niektórych operacji (np. fuzji konwolucji).
- HLO Op text: tekst dostarczony przez kompilator XLA, zawierający informacje takie jak typy i kształty danych wejściowych/parametrów.
- Nazwa operacji na platformie: operacja na poziomie platformy (np. JAX), która spowodowała wygenerowanie tej operacji HLO.
- Wystąpienia: łączna liczba wykonań danej operacji HLO w okresie profilowania.
- Łączny czas (μs): łączny czas wykonywania tej operacji w przypadku wszystkich jej wystąpień. Jeśli ta operacja ma operacje podrzędne (np. w ramach fuzji), czas ten obejmuje czas spędzony w tych operacjach podrzędnych.
- Średni czas (μs): średni czas wykonywania tej operacji HLO, w tym czas poświęcony na operacje podrzędne (jeśli występują).
- Łączny czas wykonania operacji (μs): łączny czas spędzony wyłącznie w ciele operacji HLO, z wyłączeniem czasu spędzonego w operacjach podrzędnych.
- Średni czas wykonania (μs): średni czas wykonania operacji HLO, z wyłączeniem czasu spędzonego w operacjach podrzędnych.
- Łączny czas trwania operacji (%): czas trwania operacji wyrażony jako odsetek łącznego czasu na urządzeniu w przypadku wszystkich operacji.
- Łączny łączny czas własny (%): bieżąca suma łącznego czasu własnego (%) wszystkich programistów, którzy pojawiają się wcześniej w kolejności „rankingu”.
- Zatrzymanie DMA (%): odsetek łącznego czasu, przez który operacja była wstrzymywana z powodu operacji DMA (Direct Memory Access).
- Przepustowość (wykorzystanie/s) pamięci FLOP, HBM i wewnętrznej TPU (jeśli jest dostępna), Pamięć CMEM jest dostępna tylko w przypadku TPU v4. Wszystkie są obliczane za pomocą analizy statycznych kosztów kompilatora (licznik) i profilowanego czasu wykonywania (mianownik).
- Model GFLOPS/s: koszt GFLOPs jest obliczany przez kompilator XLA, a czas jest mierzony przez profil.
- Znormalizowane GFLOPS/s: normalizuje obliczony przez kompilator FLOP na podstawie dokładności liczbowej i maksymalnej liczby FLOP obsługiwanej przez urządzenie w przypadku różnych dokładności. Na przykład TPU v6e obsługuje o 50% więcej szczytowych FLOP-ów w int8 niż w bf16. Domyślnie XProf normalizuje do bf16.
- Przepustowość pamięci: liczba bajtów/s zużywanych przez operację z dowolnej pamięci (np. z pamięci VMEM i HBM na chipie TPU). Kompilator XLA podaje liczbę „bajtów”, a czas trwania jest mierzony w profilu.
- HBM BW: liczba bajtów/s zużytych z HBM.
- Intensywność działania: obliczana jako stosunek FLOPS na bajt, zgodnie z definicją analizy roofline.
- Ograniczenie związane z mocą obliczeniową lub pamięcią: na podstawie modelu Roofline ta kolumna wskazuje, czy wydajność operacji jest ograniczona głównie przez możliwości obliczeniowe czy przepustowość pamięci.
- Rematerialization: wskazuje, czy operacja była częścią rematerializacji.
- Kompilacja zewnętrzna: wskazuje, czy operator został wykonany na procesorze hosta za pomocą funkcji kompilacji zewnętrznej Tensorflow.
- Autotuned: wskazuje, czy opcja została automatycznie dostrojona przez XLA. Więcej informacji znajdziesz w artykułach Autotuning i Autotuning z zachowanymi ustawieniami.