Alat Pelacak Trace
Anda dapat menggunakan Trace Viewer untuk memvisualisasikan linimasa peristiwa yang terjadi
selama sesi pembuatan profil. Laporan ini menampilkan durasi operasi yang dijalankan
oleh model Anda di berbagai bagian sistem, seperti host (CPU) dan
akselerator (GPU atau TPU). Hal ini memungkinkan Anda memahami cara model
menggunakan resource hardware, mengidentifikasi bottleneck performa, dan mengoptimalkan
model untuk eksekusi yang lebih cepat. UI Trace Viewer didasarkan pada UI yang digunakan di
chrome://tracing
sehingga mengharuskan Anda menggunakan browser Chrome.
Platform yang Didukung
TPU: didukung
GPU: didukung
Trace Viewer untuk GPU mengelompokkan peristiwa pada linimasa per chip GPU dan streaming di dalamnya, sedangkan untuk TPU, alat ini mengatur peristiwa pada linimasa per chip dan core TPU. Dalam kedua kasus tersebut, Trace Viewer juga menampilkan peristiwa pada linimasa per thread untuk CPU host tempat akselerator terhubung.
Berinteraksi dengan Linimasa
Trace Viewer menyediakan beberapa alat dan metode untuk menavigasi dan memeriksa linimasa:
- Navigasi: Anda dapat menggunakan pintasan keyboard berikut:
- W: Memperbesar.
- S: Perkecil.
- J: Geser ke kiri.
- D: Geser ke kanan.
- Pemilih alat: Anda dapat mengklik alat di pemilih alat atau menggunakan
pintasan keyboard yang sesuai:
- Alat Pemilihan (1 atau !): Klik peristiwa untuk memilihnya dan melihat detailnya di panel Details. Pilih beberapa peristiwa melalui ctrl+klik untuk melihat ringkasan.
- Alat Geser (2 atau @): Tarik untuk memindahkan linimasa secara horizontal atau vertikal.
- Alat Zoom (3 atau #): Tarik untuk memperbesar area tertentu di linimasa.
- Alat Pengatur Waktu (4 atau $): Tarik untuk menandai interval waktu. Durasi interval yang ditandai akan ditampilkan. Anda juga dapat menggunakan tombol 'm' untuk menandai pilihan dan menentukan total durasinya.
- Zoom ke peristiwa yang dipilih (f): Pilih satu atau beberapa peristiwa, lalu tekan tombol 'f' untuk memperbesar bagian linimasa tersebut dengan cepat. Hal ini berguna untuk berfokus pada langkah pelatihan tertentu.
Saat menangani peristiwa rekaman aktivitas dalam jumlah besar, Trace Viewer berfungsi dalam mode streaming. Artinya, data dimuat sesuai permintaan saat Anda menggeser dan memperbesar sepanjang linimasa, mirip dengan cara kerja aplikasi peta. Jika Anda memperbesar lebih cepat daripada data dapat dimuat, Anda mungkin melihat representasi data beresolusi rendah hingga selesai dimuat.
Komponen Antarmuka Pelacak Aktivitas
Berikut adalah komponen UI utama di Trace Viewer:
- Sumbu waktu berjalan secara horizontal di bagian atas, yang menunjukkan waktu relatif terhadap awal rekaman aktivitas.
- Linimasa diatur berdasarkan bagian dan jalur, dengan label yang terletak di sumbu vertikal kiri. Setiap bagian mewakili elemen pemrosesan (misalnya, node perangkat atau thread host) dan dapat diluaskan atau diciutkan. Dalam setiap bagian terdapat jalur, yang merupakan linimasa untuk aktivitas tertentu.
- Peristiwa adalah blok persegi panjang berwarna di jalur linimasa, yang mewakili durasi operasi atau meta-peristiwa seperti langkah pelatihan. Warna peristiwa tidak memiliki makna tertentu.
- Panel detail menampilkan informasi tambahan tentang peristiwa yang dipilih di panel linimasa, seperti nama, waktu mulai, dan durasi peristiwa.
Bagian dan Jalur Umum
Trace Viewer menyediakan bagian dan jalur berikut.
- Satu bagian untuk setiap node TPU, dengan jalur berikut:
- Modul XLA: program XLA yang sedang dieksekusi.
- XLA Ops: Menampilkan operasi XLA HLO yang berjalan di core TPU. Setiap operasi framework tingkat tinggi (misalnya, JAX, Tensorflow, atau PyTorch) diterjemahkan menjadi satu atau beberapa operasi XLA, yang kemudian dikompilasi untuk dijalankan di TPU. Saat mengklik operasi XLA, Anda dapat melihat link ke operasi di Graph Viewer, beserta informasi tambahan tentang operasi seperti waktu mulai/berhenti, durasi, dan stack trace sumber (jika tersedia oleh framework dan compiler).
- XLA TraceMe: Anotasi yang ditentukan pengguna dalam kode mereka yang menjelaskan unit pekerjaan logis yang ingin mereka lacak. Anda mungkin masih melihat data di sini meskipun tidak menambahkan anotasi apa pun; anotasi tersebut biasanya ditambahkan oleh XLA (misalnya, core penghalang), atau XProf itu sendiri (misalnya, entri trace yang dihapus).
- Langkah: Menampilkan durasi langkah pelatihan yang berjalan di core TPU tersebut, jika dianotasi dengan benar dalam program atau framework pengguna.
- Framework Ops: Menampilkan operasi framework (misalnya, JAX, Tensorflow, atau PyTorch) yang dijalankan di core TPU, jika dianotasi dengan tepat dalam program atau framework pengguna.
- Cakupan Nama Framework: Untuk setiap operasi framework, visualisasi trace stack. Untuk mempersingkat, jalur ini hanya muncul untuk satu perangkat.
- Kode sumber: Jalur ke kode sumber yang sedang dieksekusi, jika tersedia di profil.
- Unit skalar: Untuk TPU, peristiwa yang dijalankan di unit skalar, yang digambarkan jika ada dalam profil.
- TensorCore Sync Flags: Mekanisme sinkronisasi di TPU, yang digambarkan jika ada dalam profil.
- Host Offload: Operasi yang memindahkan data secara asinkron antara memori host dan memori akselerator. Biasanya ada operasi mulai dan berhenti yang sesuai yang muncul di baris XLA Ops yang menunjukkan bahwa akselerator sedang disiapkan untuk transfer data (misalnya, menandai region memori sumber/tujuan sebagai “sedang digunakan” selama durasi transfer). Mungkin ada beberapa baris offload host jika ada beberapa operasi offload yang dijalankan secara paralel, sehingga penampil rekaman aktivitas harus secara serentak menampilkan beberapa peristiwa.
- Satu bagian untuk setiap node Sparsecore: Beberapa generasi TPU (misalnya, TPU v5p dan TPU v6e) dilengkapi dengan satu atau beberapa unit SparseCore selain unit MXU komputasi rapat; modul, operasi, dan TraceMes yang terkait dengan core ini akan muncul di bagian ini.
- Satu bagian untuk setiap node GPU, dengan jalur berikut:
- Modul XLA, Framework Ops, Framework Name Scope, Steps, Source code. Semua ini mirip dengan bagian TPU.
- Satu jalur per aliran data, dengan nama aliran data juga menyertakan informasi tentang jenis operasi yang dijalankan di aliran data (Memcpy, Compute, dsb.).
- XLA TraceMe tidak didukung untuk GPU.
- Operasi XLA memang muncul di bagian GPU, tetapi saat ini tidak selalu akurat, karena berasal dari data streaming. Oleh karena itu, model ini tidak dapat sepenuhnya memperhitungkan model eksekusi GPU yang mungkin memiliki pemetaan N:M Ops XLA ke kernel sebenarnya yang dijalankan di streaming yang berbeda, dan penjadwalan dinamis beberapa streaming ke SM yang berbeda di hardware.
- Satu bagian untuk setiap komponen (misalnya, satu threadpool) yang berjalan di CPU komputer host, dengan satu jalur per thread, dalam kasus threadpool. Di sini juga Anda akan melihat rekaman aktivitas Python jika diaktifkan selama pengumpulan profil.
Perhatikan bahwa hanya Operasi XLA untuk TPU dan data streaming untuk GPU yang langsung didasarkan pada profil yang dikumpulkan; semua baris lainnya adalah “baris turunan”, yang melibatkan informasi “sideband” opsional yang disediakan oleh compiler, anotasi pengguna opsional, dan/atau heuristik yang diterapkan oleh XProf. Oleh karena itu, baris turunan ini mungkin muncul atau tidak muncul di profil tertentu.
Fitur Lainnya
- Anda dapat menelusuri nama peristiwa tertentu menggunakan kotak penelusuran "Temukan peristiwa". Saat ini, fitur ini hanya menelusuri dalam periode waktu yang terlihat di layar, bukan rekaman aktivitas lengkap.
- Peristiwa Alur: Mengaktifkan opsi ini dengan mengklik tombol “Peristiwa Alur” di panel atas akan menambahkan visualisasi, yang menautkan peristiwa dalam satu rangkaian pesan atau baris ke peristiwa dalam baris rangkaian pesan lain. Misalnya, mungkin ada panah yang digambar dari op di host yang mengantrekan atau meluncurkan tugas untuk akselerator, ke op di akselerator yang mengeksekusi tugas tersebut. XProf menentukan link ini melalui kombinasi anotasi pengguna, heuristik bawaan, dan dengan informasi pascapemrosesan yang diterima dari berbagai komponen (misalnya, Driver CUPTI, ID peluncuran kernel, informasi runtime TPU, dll.).
- Mengklik operasi XLA akan memberikan informasi tambahan di panel detail. Misalnya, link ini mengarah ke op di alat Graph Viewer. Hal ini juga dapat memberikan pointer ke kode sumber dan/atau pelacakan tumpukan Python, operasi framework yang menyebabkan operasi XLA ini dihasilkan, dll. (jika ada dalam profil). Informasi ini juga dapat menampilkan FLOPS (jumlah operasi floating point yang dieksekusi oleh op) dan byte yang diakses oleh op; informasi ini diperoleh secara statis dari XLA selama kompilasi, bukan informasi runtime dari profil.