Artikel ini mendemonstrasikan cara memprofil mekanisme perhatian dalam PyTorch menggunakan jejak profiler untuk mengidentifikasi hambatan kinerja dan peluang optimasi. Artikel ini membandingkan implementasi perhatian naif dengan Scaled Dot Product Attention (SDPA) bawaan PyTorch untuk menggambarkan perilaku kernel.

  • Perhatian kausal naif melibatkan beberapa kernel termasuk matmul, penskalaan, masking, softmax, dan salinan memori tak terduga yang disebabkan oleh operasi out-of-place.
  • Mengganti masked_fill dengan masked_fill_ in-place menghapus kernel salinan memori yang tidak perlu dari jejak GPU.
  • Fungsi SDPA PyTorch secara otomatis mendispatch ke backend tercepat yang tersedia (seperti Flash Attention atau cuDNN) berdasarkan jenis input dan perangkat keras.
  • Memprofilkan backend SDPA individual mengungkapkan tanda tangan kernel yang berbeda, memungkinkan pengembang memverifikasi implementasi mana yang aktif.

Memahami jejak profiler ini membantu pengguna mengoptimalkan model transformer dengan menghilangkan operasi memori redundan dan memanfaatkan backend perhatian PyTorch yang efisien.