Panduan torch.profiler untuk yang baru mau belajar membaca trace
Hugging Face menerbitkan panduan pemula untuk torch.profiler, alat bawaan PyTorch yang mengukur ke mana waktu eksekusi mengalir di CPU dan GPU. Tulisan ini ditujukan untuk orang yang pernah melihat tampilan trace penuh kotak warna lalu menyerah. Pembaca dipandu lewat table ringkasan maupun timeline ala Chrome dengan pertanyaan "ini sebenarnya kita lihat apa" sebagai pegangan utama.
Ilustrasi yang paling jelas adalah perbandingan workload overhead-bound dengan compute-bound. Untuk matmul plus bias pada tensor 64×64, waktu CPU 2,314 ms sementara waktu GPU hanya 23,104 µs, dan utilisasi GPU di bawah 1 persen. Pada matriks 4096×4096, angkanya berubah menjadi 4,908 ms CPU dan 4,495 ms GPU, dengan utilisasi sekitar 50 persen. Pelajarannya, kernel kecil didominasi overhead dispatch Python dan peluncuran CUDA, dan solusi paling bersih biasanya memperbesar batch, bukan mempercepat kernel.
Penulis juga menelusuri dispatch chain selangkah demi selangkah, mulai dari aten::matmul sampai kernel CUDA ampere_bf16_s16816gemm. Ditunjukkan pula bagaimana torch.compile melebur operator di level dispatcher menjadi aten::addmm, dan dicatat bahwa compile pipeline kira-kira menggandakan overhead CPU untuk satu operasi karena biaya per-call baru terbayar saat operasi banyak.
Kenapa ini penting
Kalau Anda training atau serving model PyTorch, ini tipe tulisan yang sebaiknya dipasang bookmark sebelum insiden berikutnya yang gejalanya "GPU kelihatannya nganggur". Halaman ini juga pas dikirim ke rekan yang sudah punya gejala tapi belum tahu cara membaca trace.