1 poin oleh GN⁺ 2024-12-25 | Belum ada komentar. | Bagikan ke WhatsApp
  • MLC-LLM memungkinkan kompilasi dan deployment LLM di GPU AMD dengan ROCm, sehingga Radeon RX 7900 XTX mencapai 80% kecepatan RTX 4090 dan 94% kecepatan RTX 3090 Ti pada inferensi Llama 2 7B/13B
  • Ketiga GPU pembanding sama-sama memiliki memori 24GB dan bandwidth yang mirip, sehingga pada inferensi LLM yang sensitif terhadap latensi, bottleneck memori lebih berpengaruh daripada performa komputasi FP16
  • Kesenjangan AMD lebih banyak berasal dari kurangnya dukungan dan optimasi software daripada hardware itu sendiri, dan investasi ROCm serta kompilasi machine learning berperan menurunkan biaya dukungan untuk banyak backend
  • ROCm diterapkan pada Radeon 7900 XTX, sedangkan Vulkan diterapkan pada SteamDeck AMD APU, menunjukkan bahwa Llama-7B terkuantisasi 4-bit dapat dijalankan juga pada perangkat AMD konsumen
  • Hasil didasarkan pada benchmark batch tunggal, dan optimasi attention dapat mengubah angka pada AMD maupun NVIDIA, sehingga perlu ditafsirkan dengan margin galat 10%

Inferensi LLM pada GPU AMD berbasis ROCm

  • MLC-LLM memungkinkan kompilasi dan deployment LLM di GPU AMD menggunakan ROCm
  • Performa Llama 2 7B/13B pada Radeon RX 7900 XTX berada di tingkat berikut
    • 80% dari kecepatan NVIDIA GeForce RTX 4090
    • 94% dari kecepatan NVIDIA GeForce RTX 3090 Ti
  • Selain ROCm, MLC-LLM juga mendukung Vulkan, memperluas cakupan deployment LLM ke perangkat seperti SteamDeck yang menggunakan AMD APU

Perbandingan hardware dan bottleneck nyata

  • AMD RX 7900 XTX secara spesifikasi berada pada posisi yang sebanding dengan RTX 4090 dan RTX 3090 Ti
    • Ketiga GPU sama-sama memiliki memori 24GB, sehingga dapat memuat model dengan ukuran yang sama
    • Bandwidth memori juga serupa
    • RTX 4090 memiliki performa FP16 2 kali lebih tinggi daripada RX 7900 XTX, dan RTX 3090 Ti 1,3 kali lebih tinggi
  • Inferensi LLM yang sensitif terhadap latensi sebagian besar terkena bottleneck memori, sehingga perbedaan performa FP16 bukan bottleneck utama di sini
  • RX 7900 XTX 40% lebih murah daripada RTX 4090
  • RTX 3090 Ti adalah produk generasi sebelumnya, sehingga lebih sulit dibandingkan dari sisi harga dan dipakai sebagai titik referensi

Penyebab kesenjangan AMD dan pendekatan MLC

  • Alasan AMD tertinggal lebih dekat ke kurangnya dukungan dan optimasi software untuk model terkait daripada hardware
  • Dua perubahan berikut membantu memperkecil kesenjangan
    • AMD berinvestasi pada stack ROCm untuk mengejar ketertinggalan
    • Kompilasi machine learning menurunkan biaya dukungan software umum untuk banyak backend
  • Kompilasi machine learning mengompilasi pekerjaan machine learning dan mengotomatiskan optimasi, alih-alih menulis kernel individual secara langsung untuk tiap ROCm atau CUDA
  • MLC-LLM adalah solusi deployment LLM berbasis kompilasi machine learning yang dibangun di atas Apache TVM Unity
    • Menyediakan alur pengembangan yang berpusat pada Python
    • Mencakup transformasi graph komputasi, optimasi layout dan jadwal kernel GPU, serta API deployment native
    • Mendukung CUDA, Metal, ROCm, Vulkan, dan OpenCL
    • Menjangkau dari GPU kelas server hingga mobile seperti iPhone dan Android

Cara dukungan GPU dan APU AMD

  • Jalur dukungan untuk GPU AMD mencakup ROCm, OpenCL, Vulkan, dan WebGPU
    • ROCm adalah stack yang belakangan didorong AMD dan memiliki komponen yang mirip dengan CUDA
    • Vulkan adalah standar grafis modern dan didukung luas di berbagai perangkat GPU
    • WebGPU adalah standar web modern yang memungkinkan komputasi dijalankan di browser web
  • Software machine learning yang membangun solusi di luar CUDA masih sedikit, dan biaya engineering untuk menggandakan stack bagi tiap hardware baru atau model pemrograman GPU sangat besar
  • MLC mendukung banyak jalur melalui generasi kode otomatis tanpa menulis ulang kernel GPU untuk tiap backend
  • Performa nyata ditentukan oleh kualitas runtime GPU tingkat rendah dan ketersediaannya di masing-masing platform

Implementasi optimasi ROCm

  • Radeon 7900 XTX menggunakan ROCm, sedangkan SteamDeck APU menggunakan Vulkan
  • Stack ROCm langsung dapat dijalankan, dan berkat pipeline pengembangan berbasis Python di TVM Unity, versi teroptimasi dapat ditambahkan hanya dalam hitungan jam
  • Dukungan ROCm memanfaatkan kembali komponen yang sudah ada
    • Seluruh pipeline MLC untuk target yang sudah ada seperti CUDA dan Metal
      • Perencanaan memori
      • Fusion operator
    • Ruang optimasi kernel GPU umum yang ditulis dengan TVM TensorIR
    • Alur generasi kode ROCm di TVM yang menghasilkan kernel ROCm tingkat rendah melalui LLVM
  • Kode yang dihasilkan dapat diekspor sebagai shared library atau static library, lalu dipanggil dari CLI, Python, dan REST API

Kondisi benchmark Llama 2 dan cara menafsirkan hasil

  • Benchmark mengukur Llama 2 7B dan 13B dengan kuantisasi 4-bit
  • Performa decoding diukur dengan memasukkan satu token prompt lalu menghasilkan 512 token
  • Semua hasil didasarkan pada inferensi batch tunggal
  • Berdasarkan rilis ROCm 5.6, performa inferensi batch tunggal mencapai 80% dari kecepatan NVIDIA 4090
  • Baseline CUDA dianggap sebagai tingkat terbaik pada saat itu untuk pekerjaan tersebut
  • Masih ada ruang perbaikan seperti optimasi attention yang lebih baik, dan jika optimasi itu masuk ke MLC, angka AMD maupun NVIDIA bisa sama-sama meningkat
  • Jika optimasi hanya diimplementasikan di pihak NVIDIA, kesenjangan dapat melebar dari 20% menjadi 30%, sehingga disarankan menafsirkan angka dengan margin galat 10%

Syarat menjalankan langsung dan contoh

  • Disediakan wheel prabangun dan panduan menjalankan untuk mereproduksi benchmark
  • Syarat menjalankannya adalah GPU AMD yang mendukung ROCm 5.6 atau lebih baru di Linux
  • Instalasi paket MLC prabangun dengan ROCm aktif mengikuti dokumen try out MLC-LLM
  • Contoh Python memuat model Llama-2-7b-chat-hf-q4f16_1 dengan mlc_chat.ChatModule dan mengukur performa dengan benchmark_generate("Hi", generate_length=512)
  • MLC-LLM juga menyediakan CLI interaktif, tetapi pada ROCm CLI harus dibangun dari source, mengikuti dokumen build CLI

Penggunaan Vulkan dan unified memory di SteamDeck

  • SteamDeck dipakai sebagai contoh dari kelompok perangkat AMD yang lebih luas dengan AMD APU
  • GPU VRAM yang dapat digunakan di ROCm dibatasi 4GB di BIOS
  • Driver Mesa Vulkan memungkinkan buffer memakai unified memory melampaui batas ini hingga maksimal 16GB
  • Kapasitas memori ini cukup untuk menjalankan Llama-7B terkuantisasi 4-bit
  • Hasilnya, kemungkinan dukungan LLM pada beragam perangkat AMD konsumen juga terkonfirmasi

Pekerjaan lanjutan dan tautan proyek

  • Di era AI generatif, ketersediaan hardware menjadi isu penting
  • Kompilasi machine learning dapat membantu meredakan masalah ini dengan memungkinkan deployment umum berperforma tinggi di banyak backend hardware
  • Riset saat ini berfokus pada GPU kelas konsumen
  • Berdasarkan pengalaman sebelumnya, optimasi MLC untuk GPU konsumen sering dapat digeneralisasi ke GPU cloud, misalnya dari RTX 4090 ke A100 dan A10g
  • Area pekerjaan lanjutan meliputi
    • Dukungan batching dan multi-GPU
    • Integrasi dengan ekosistem PyTorch
    • Dukungan untuk lebih banyak skema kuantisasi dan arsitektur model
    • Perluasan optimasi otomatis ke lebih banyak backend hardware
  • NVIDIA tetap memimpin berkat inovasi berkelanjutan, dan lanskap dapat berubah seiring hardware baru seperti H100 dan evolusi software
  • Panduan MLC-LLM tersedia di halaman proyek, dan source code tersedia di repositori GitHub

Belum ada komentar.

Belum ada komentar.