- 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
- Seluruh pipeline MLC untuk target yang sudah ada seperti CUDA dan Metal
- 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_1denganmlc_chat.ChatModuledan mengukur performa denganbenchmark_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.