Kecerdasan buatan
PowerInfer: Mesin Inferensi LLM Cepat dengan GPU Konsumen

Oleh karena kemampuan pembuatan konten yang luar biasa, Model Bahasa Besar Generatif saat ini berada di garis depan revolusi AI, dengan upaya terus-menerus untuk meningkatkan kemampuan generatif mereka. Namun, meskipun kemajuan yang cepat, model-model ini memerlukan daya komputasi dan sumber daya yang substansial. Ini sebagian besar karena mereka terdiri dari ratusan miliar parameter. Selain itu, untuk beroperasi dengan lancar, model AI generatif bergantung pada ribuan GPU, yang mengakibatkan biaya operasional yang signifikan. Tuntutan operasional yang tinggi adalah alasan utama mengapa model AI generatif belum diterapkan secara efektif pada perangkat pribadi.
Dalam artikel ini, kita akan membahas PowerInfer, sebuah mesin inferensi LLM kecepatan tinggi yang dirancang untuk komputer standar yang ditenagai oleh satu GPU konsumen. Kerangka kerja PowerInfer bertujuan untuk memanfaatkan lokalitas yang tinggi yang melekat dalam inferensi LLM, yang ditandai dengan distribusi power-law dalam aktivasi neuron. Ini berarti bahwa pada saat tertentu, subset kecil neuron “panas” secara konsisten aktif di seluruh input, sedangkan yang lain, yang disebut neuron “dingin”, diaktifkan berdasarkan input atau persyaratan tertentu. Pendekatan ini memungkinkan kerangka kerja PowerInfer untuk mengurangi daya komputasi yang diperlukan untuk menghasilkan output yang diinginkan.
Kita akan membahas kerangka kerja PowerInfer secara detail, menjelajahi metodologinya, pipelinenya, dan hasil implementasinya. Mari kita mulai.
PowerInfer: Mesin Inferensi LLM Cepat dengan GPU Konsumen
Model Bahasa Besar Generatif, seperti ChatGPT dan DALL-E, dikenal karena tugas pemrosesan bahasa alami dan generatif yang canggih. Karena tuntutan komputasi yang tinggi, model-model ini biasanya diterapkan di pusat data dengan GPU canggih. Kebutuhan akan daya komputasi yang tinggi ini membatasi penerapan mereka di pusat data, menyoroti kebutuhan untuk menerapkan model bahasa besar di platform lokal yang lebih mudah diakses seperti komputer pribadi.
Meningkatkan aksesibilitas model bahasa besar dapat mengurangi biaya inferensi dan pembuatan konten, meningkatkan privasi data, dan memungkinkan kustomisasi model. Selain itu, sementara penerapan di pusat data memprioritaskan throughput yang tinggi, penerapan LLM lokal dapat fokus pada latensi yang rendah karena ukuran batch yang lebih kecil.
Namun, menerapkan model-model ini pada perangkat lokal menimbulkan tantangan signifikan karena tuntutan memori yang besar. Model bahasa besar, yang berfungsi sebagai transformer autoregresif, menghasilkan teks token demi token, dengan setiap token memerlukan akses ke seluruh model, yang terdiri dari ratusan miliar parameter. Ini memerlukan banyak GPU canggih untuk menghasilkan output dengan latensi rendah. Selain itu, penerapan lokal biasanya memproses permintaan secara berurutan, membatasi potensi untuk pemrosesan paralel.
Untuk mengatasi tuntutan memori yang kompleks dari kerangka kerja AI generatif, solusi yang ada menggunakan metode seperti offloading model dan kompresi. Teknik seperti distilasi, pruning, dan kuantisasi mengurangi ukuran model, tetapi masih terlalu besar untuk GPU standar di komputer pribadi. Offloading model, yang membagi model di lapisan Transformer antara CPU dan GPU, memungkinkan pemrosesan lapisan yang didistribusikan di seluruh memori CPU dan GPU. Namun, metode ini dibatasi oleh interkoneksi PCIe yang lambat dan kemampuan komputasi CPU yang terbatas, yang mengakibatkan latensi inferensi yang tinggi.
Kerangka kerja PowerInfer menyatakan bahwa ketidakcocokan antara karakteristik inferensi LLM dan struktur perangkat keras adalah penyebab utama masalah memori dalam inferensi LLM. Idealnya, data yang diakses secara teratur harus disimpan di GPU dengan bandwidth yang tinggi dan kapasitas yang terbatas, sedangkan data yang diakses kurang sering harus disimpan di CPU dengan bandwidth yang rendah dan kapasitas yang tinggi. Namun, volume parameter yang besar dari setiap iterasi inferensi LLM membuat set kerja terlalu besar untuk satu GPU, yang mengakibatkan eksploitasi lokalitas yang tidak efisien.
Proses inferensi dalam model bahasa besar menunjukkan lokalitas yang tinggi, dengan setiap iterasi mengaktifkan jumlah neuron yang terbatas. Kerangka kerja PowerInfer bertujuan untuk memanfaatkan lokalitas ini dengan mengelola sejumlah kecil neuron “panas” dengan GPU, sedangkan CPU menangani neuron “dingin”. Ini memilih dan memuat sebelumnya neuron “panas” di GPU dan mengidentifikasi neuron yang diaktifkan selama runtime. Pendekatan ini meminimalkan transfer data PCIe yang mahal, yang memungkinkan GPU dan CPU untuk memproses neuron yang ditugaskan secara independen.
Namun, menerapkan LLM di perangkat lokal menghadapi hambatan. Predictor online, yang penting untuk mengidentifikasi neuron yang diaktifkan, mengonsumsi memori GPU yang signifikan. Kerangka kerja PowerInfer menggunakan metode adaptif untuk membuat predictor kecil untuk lapisan dengan skewness dan kepadatan yang lebih tinggi, yang mempertahankan akurasi sambil mengurangi ukuran. Selain itu, kerangka kerja LLM memerlukan operator yang rapat. Kerangka kerja PowerInfer menggunakan operator yang sadar neuron yang secara langsung berkomunikasi dengan neuron, yang menghilangkan kebutuhan untuk konversi format rapat selama runtime.
Terakhir, menempatkan neuron yang diaktifkan secara optimal antara CPU dan GPU adalah tantangan. Kerangka kerja PowerInfer menggunakan tahap offline untuk membuat kebijakan penempatan neuron, yang mengukur dampak setiap neuron pada hasil inferensi LLM dan membingkainya sebagai masalah linear integer.
Arsitektur dan Metodologi
Gambar berikut menjelaskan arsitektur kerangka kerja PowerInfer yang terdiri dari komponen offline dan online dalam pipelinenya.

Berkat variasi yang diamati dalam sifat lokalitas di antara model bahasa besar yang berbeda, komponen offline memprofil aktivitas rapat LLM, yang memungkinkan untuk membedakan antara neuron “panas” dan “dingin”. Di sisi lain, dalam fase offline, dua jenis neuron dimuat oleh mesin inferensi ke dalam CPU dan GPU, yang melayani permintaan LLM selama runtime dengan latensi rendah.
Fase Offline: Pengatur Kebijakan dan Profiler LLM
Dalam fase offline, komponen profiler LLM menggunakan permintaan yang dihasilkan dari dataset umum untuk mengumpulkan data aktivasi dari proses inferensi. Pada langkah pertama, ini memantau aktivasi neuron di seluruh lapisan dalam kerangka kerja, dan kemudian menggunakan komponen pengatur kebijakan untuk mengategorikan neuron sebagai “panas” atau “dingin”. Tujuan utama pengatur kebijakan adalah untuk mengalokasikan neuron yang diaktifkan lebih sering ke lapisan GPU, sedangkan yang lainnya ke lapisan CPU. Pada tahap kedua, komponen pengatur kebijakan menggunakan metrik dampak neuron dan spesifikasi perangkat keras untuk menyeimbangkan beban kerja antara lapisan, dan memaksimalkan metrik dampak GPU untuk neuron dengan menggunakan pemrograman linear integer.
Fase Online: Mesin Inferensi LLM yang Sadar Neuron
Setelah fase offline dieksekusi dengan sukses, kerangka kerja melanjutkan untuk mengeksekusi fase online. Pada langkah ketiga proses, mesin online menugaskan neuron “panas” dan “dingin” ke unit pemrosesan yang sesuai sebelum memproses permintaan pengguna, tergantung pada output pengatur kebijakan offline. Selama runtime, dan pada langkah keempat, mesin online mengelola komputasi GPU-CPU dengan membuat eksekutor CPU dan GPU yang merupakan thread yang berjalan di sisi CPU. Mesin kemudian memprediksi neuron yang diaktifkan dan melewati neuron yang tidak diaktifkan. Neuron yang diaktifkan kemudian dimuat sebelumnya ke dalam GPU untuk diproses. Sementara itu, CPU menghitung dan mentransfer hasil untuk neuron yang ditugaskan untuk diintegrasikan dengan GPU. Mesin online dapat fokus pada baris dan kolom neuron individu dalam matriks karena menggunakan operator yang sadar neuron yang rapat pada CPU dan GPU.

Prediktor Kepadatan Adaptif
Konsep utama di balik pengurangan beban komputasi oleh mesin inferensi online dalam kerangka kerja PowerInfer adalah bahwa hanya neuron yang diprediksi untuk diaktifkan yang diproses. Secara tradisional, dalam setiap lapisan Transformer, kerangka kerja menggunakan dua predictor yang berbeda untuk memprediksi aktivasi neuron dalam blok MLP dan self-attention, yang mengakibatkan komputasi inferensi yang terbatas pada neuron yang diprediksi untuk diaktifkan. Namun, sulit untuk merancang predictor yang efektif untuk penerapan lokal karena sumber daya yang terbatas membuatnya sulit untuk menyeimbangkan ukuran model dan akurasi prediksi. Karena predictor ini diterapkan oleh kerangka kerja secara teratur untuk memprediksi neuron yang diaktifkan, mereka perlu disimpan di GPU untuk memungkinkan akses yang lebih cepat. Namun, kerangka kerja umumnya menerapkan sejumlah besar predictor yang menduduki memori yang signifikan, bahkan yang diperlukan untuk menyimpan parameter LLM.
Selain itu, ukuran predictor umumnya ditentukan oleh dua faktor: Kepadatan Internal dan Kepadatan Lapisan LLM.

Untuk mengoptimalkan faktor-faktor ini, kerangka kerja PowerInfer menggunakan metode pelatihan iteratif untuk setiap predictor dalam lapisan Transformer tanpa ukuran yang tetap. Pada langkah pertama metode pelatihan ini, ukuran model dasar ditetapkan berdasarkan profil kepadatan model, dan ukuran model disesuaikan secara iteratif dengan mempertimbangkan skewness aktivasi internal untuk mempertahankan akurasi.
Penempatan dan Pengelolaan Neuron
Seperti yang disebutkan sebelumnya, sementara komponen pengatur kebijakan offline menentukan kebijakan penempatan neuron, komponen mesin inferensi online memuat model ke dalam memori GPU dan CPU sesuai dengan kebijakan yang dihasilkan. Untuk setiap lapisan yang mungkin memiliki beberapa matriks bobot, kerangka kerja PowerInfer menugaskan setiap neuron ke CPU atau GPU berdasarkan apakah neuron tersebut diaktifkan “panas”. Memastikan perhitungan yang akurat dari neuron yang dipisahkan dalam urutan yang ditentukan sangat penting untuk hasil yang akurat. Untuk mengatasi ini, kerangka kerja PowerInfer menghasilkan dua tabel neuron: satu yang terletak di GPU, dan satu yang terletak di memori CPU, dengan setiap tabel yang menghubungkan neuron individu ke posisi aslinya dalam matriks.
Operator yang Sadar Neuron
Mengingat kepadatan aktivasi yang diamati dalam model bahasa besar, neuron yang tidak aktif dan bobotnya dapat dilewati oleh operasi perkalian matriks, yang menciptakan kebutuhan untuk menggunakan operator yang rapat. Sebagai gantinya, kerangka kerja PowerInfer menggunakan operator yang sadar neuron yang menghitung neuron yang diaktifkan dan bobotnya secara langsung di GPU dan CPU tanpa memerlukan konversi ke format rapat selama runtime. Operator yang sadar neuron berbeda dari operator rapat tradisional karena mereka fokus pada vektor baris dan kolom individu dalam sebuah matriks, bukan pada matriks secara keseluruhan.
Kebijakan Penempatan Neuron
Untuk memanfaatkan kemampuan komputasi CPU dan GPU, komponen offline dalam kerangka kerja PowerInfer menghasilkan kebijakan penempatan yang membimbing kerangka kerja saat mengalokasikan neuron ke CPU atau GPU. Pengatur kebijakan menghasilkan kebijakan ini dan mengontrol penempatan neuron dalam setiap lapisan, yang membantu menentukan beban kerja komputasi untuk unit pemrosesan individu. Ketika menghasilkan kebijakan penempatan, komponen pengatur kebijakan mempertimbangkan faktor-faktor seperti frekuensi aktivasi untuk setiap neuron, overhead komunikasi, dan kemampuan komputasi seperti bandwidth dan ukuran memori setiap unit pemrosesan.
Hasil dan Implementasi
Untuk menunjukkan kemampuan generalisasi kerangka kerja PowerInfer di seluruh perangkat dengan konfigurasi perangkat keras yang berbeda, eksperimen dilakukan pada dua komputer pribadi yang berbeda: satu dilengkapi dengan prosesor Intel i9-13900K, GPU NVIDIA RTX 4090, dan 192 GB memori host, sedangkan yang lain beroperasi pada prosesor Intel i7-12700K, GPU NVIDIA RTX 2080Ti, dan 64 GB memori host.
Kinerja ujung-ke-ujung kerangka kerja PowerInfer dibandingkan dengan llama.cpp dengan ukuran batch 1 dan pengaturan penerapan default. Kerangka kerja kemudian mengambil sampel prompt dari dataset ChatGPT dan Alpaca, mengingat variabilitas panjang yang diamati dalam input dan output dialog dunia nyata. Gambar berikut menunjukkan kecepatan generasi untuk model yang berbeda.

Seperti yang dapat dilihat, kerangka kerja PowerInfer menghasilkan 8,32 token per detik dan mencapai hingga 16 token yang dihasilkan per detik, sehingga mengungguli kerangka kerja llama.cpp dengan margin yang signifikan. Selain itu, ketika jumlah token output meningkat, kinerja kerangka kerja PowerInfer juga meningkat karena fase generasi mempengaruhi waktu inferensi secara signifikan.

Selain itu, seperti yang dapat dilihat pada gambar di atas, kerangka kerja PowerInfer mengungguli kerangka kerja llama.cpp pada komputer dengan spesifikasi rendah, dengan kecepatan generasi puncak 7 token per detik dan kecepatan generasi token rata-rata 5 token per detik.

Gambar di atas menunjukkan distribusi beban neuron antara GPU dan CPU untuk kedua kerangka kerja. Seperti yang dapat dilihat, kerangka kerja PowerInfer meningkatkan bagian GPU dari beban neuron secara signifikan, dari 20% menjadi 70%.

Gambar di atas membandingkan kinerja kedua kerangka kerja pada dua komputer dengan spesifikasi yang berbeda. Seperti yang dapat dilihat, kerangka kerja PowerInfer secara konsisten menghasilkan kecepatan generasi token output yang tinggi dibandingkan dengan kerangka kerja llama.cpp.
Pemikiran Akhir
Dalam artikel ini, kita telah membahas PowerInfer, sebuah mesin inferensi LLM kecepatan tinggi untuk komputer standar yang ditenagai oleh satu GPU konsumen. Inti dari kerangka kerja PowerInfer adalah untuk memanfaatkan lokalitas yang tinggi yang melekat dalam inferensi LLM, sebuah metode yang ditandai dengan distribusi power-law dalam aktivasi neuron. Kerangka kerja PowerInfer adalah sistem interferensi yang cepat yang dirancang untuk model bahasa besar yang menggunakan predictor adaptif dan operator yang sadar neuron untuk mengaktifkan neuron dan kesparsean komputasi.












