- LLM in a Flash menempatkan parameter LLM yang lebih besar daripada DRAM di memori flash, lalu hanya membawa bagian yang diperlukan ke DRAM sehingga inferensi tetap dimungkinkan pada perangkat dengan memori terbatas
- Berdasarkan model biaya inferensi yang mencerminkan karakteristik akses memori flash, pendekatan ini mengurangi jumlah data yang ditransfer dan mendorong pembacaan chunk yang lebih besar serta berurutan
- windowing menggunakan kembali neuron yang sebelumnya aktif, dan row-column bundling memanfaatkan keunggulan akses sekuensial flash untuk mengurangi bottleneck
- Jika kedua teknik digabungkan, model berukuran hingga 2x kapasitas DRAM yang tersedia dapat dijalankan, dengan inferensi 4~5x lebih cepat di CPU dan 20~25x lebih cepat di GPU dibanding pemuatan sederhana
- Dengan menggabungkan kesadaran sparsity, pemuatan adaptif terhadap konteks, dan desain berorientasi perangkat keras, peluang menjalankan LLM di perangkat dengan keterbatasan memori menjadi semakin besar
Inferensi LLM berbasis memori flash
- Model bahasa besar menunjukkan performa tinggi dalam berbagai tugas pemrosesan bahasa alami, tetapi kebutuhan komputasi dan memori yang besar membuatnya sulit dijalankan pada perangkat dengan kapasitas DRAM terbatas
- LLM in a Flash mengatasi keterbatasan ini dengan menyimpan parameter model di memori flash dan hanya memuat data yang diperlukan ke DRAM secara on-demand selama inferensi
- Di pusat pendekatan ini terdapat model biaya inferensi yang disesuaikan dengan cara kerja memori flash
- Dioptimalkan untuk mengurangi jumlah data yang ditransfer dari flash
- Dirancang agar data dibaca dalam chunk yang lebih besar dan berurutan
Dua teknik untuk mengurangi transfer dan pola pembacaan
- windowing menggunakan kembali neuron yang sebelumnya aktif untuk mengurangi jumlah data yang harus dipindahkan dari flash ke DRAM
- row-column bundling memperbesar ukuran chunk data yang dibaca dari flash agar selaras dengan karakteristik memori flash yang unggul dalam akses data sekuensial
- Jika kedua teknik digunakan bersama, model yang ukurannya hingga 2x lebih besar daripada DRAM yang tersedia dapat dijalankan
- Peningkatan kecepatan inferensi dibanding metode pemuatan sederhana berbeda menurut perangkat keras
- Di CPU, menjadi 4~5x lebih cepat
- Di GPU, menjadi 20~25x lebih cepat
- Desain ini mengintegrasikan kesadaran sparsity, pemuatan adaptif terhadap konteks, dan desain berorientasi perangkat keras untuk memungkinkan inferensi LLM di lingkungan dengan memori terbatas
1 komentar
Pendapat Hacker News
Makalah itu dibangun di atas teknik pemanfaatan sparsity dari makalah Deja Vu yang sudah cukup kompleks, jadi butuh waktu untuk memahaminya
Deja Vu melihat bahwa bahkan model dengan sparsity bobot rendah pun memiliki “sparsity kontekstual (contextual sparsity)” yang tinggi. Artinya, banyak nilai 0 muncul pada vektor hasil perkalian matriks, tetapi posisi mana yang menjadi 0 bergantung pada input
Dengan memanfaatkan sparsity ini, kita bisa melewati pemuatan sebagian baris matriks, dan untuk mendapatkan peningkatan performa kita perlu memprediksi terlebih dahulu baris mana yang akan dilewati; prediksi itu dapat dilakukan dengan matriks ber-rank rendah
Makalah Apple mengusulkan bahwa temuan ini tidak hanya membantu performa pemuatan RAM, tetapi juga pemuatan dari memori flash tanpa mengorbankan bandwidth secara besar
Matriks attention relatif ringan, dan yang perlu dimuat secara sparse adalah FFN. Selain itu, jika yang diprediksi bukan input FFN melainkan output dari layer ReLU, sparsity yang jauh lebih baik bisa diperoleh. Jika kita bisa memprediksi bahwa “slot vektor ini akan bernilai negatif setelah perkalian matriks dan sebelum ReLU”, maka kolom matriks tersebut tidak perlu dimuat dan cukup mengeluarkan 0
Usulannya adalah sebagian besar baris FFN sama sekali tidak perlu dimuat, dan untuk tiap FFN cukup mempertahankan cache baris yang baru-baru ini digunakan lalu memperbaruinya dari flash saat diperlukan. Ada juga korelasi tambahan antara pemuatan chunk dan layer proyeksi, tetapi inti insight-nya tampaknya ada di bagian ini
FFN adalah Feed Forward Network, dan dalam transformer, ini merupakan blok-blok terbesar
Saya penasaran berapa banyak bagian model yang tidak perlu dimuat sebelum perbedaan performa nyata mulai muncul
Misalnya, untuk mempertahankan 90% performa dibandingkan saat seluruhnya dimuat ke RAM, saya ingin tahu apakah cukup memakai setengah memori, atau perlu 90%, atau 95%
Pada akhirnya, persoalannya adalah seberapa cepat performa turun dibandingkan performa maksimum saat RAM dikurangi. Grafiknya membandingkan algoritme ini dengan algoritme dasar dalam kondisi RAM kecil; itu berbeda, tetapi tetap pertanyaan yang bagus
Jika model 8GB bisa menghasilkan performa bagus tanpa memuat seluruhnya ke memori ponsel, itu jelas berguna
Makalah lengkapnya layak dibaca, dan ini pekerjaan yang cukup menarik: https://arxiv.org/pdf/2312.11514
Bagian yang ditekankan dalam makalah adalah dua teknik yang saling melengkapi untuk meminimalkan transfer data dan memaksimalkan throughput memori flash
Windowing adalah cara memuat hanya parameter yang dibutuhkan untuk beberapa token sebelumnya sambil menggunakan kembali nilai aktivasi dari token yang baru dihitung, sehingga mengurangi jumlah permintaan I/O untuk pemuatan bobot
Row-column bundling menyimpan baris dan kolom dari layer up-projection dan down-projection dengan cara disambungkan, sehingga flash membaca chunk berurutan yang lebih besar; membaca chunk besar meningkatkan throughput
Secara teori, ketika sebagian model berada di flash, waktu inferensi untuk satu token seharusnya sama dengan waktu inferensi saat seluruh model berada di RAM ditambah waktu untuk memuat bagian model yang berada di flash
Saya berasumsi tidak perlu menulis ulang ke flash, tetapi saya bukan ahli LLM, jadi bisa saja salah
Jika jumlah layer jauh lebih banyak dari 10, rasanya mungkin untuk menyisakan hanya sebagian kecil RAM lalu memuat layer satu per satu. Kebanyakan LLM punya puluhan layer, jadi ini terdengar masuk akal
Jika RAM bukan bottleneck selama inferensi, tampaknya layer berikutnya juga bisa ditransfer DMA dari flash ke RAM saat layer saat ini sedang diinferensikan. Pada sistem prosesor tunggal, ini sepertinya sulit karena bottleneck RAM
Pada sistem dual-prosesor, mungkin satu prosesor bisa memuat layer berikutnya ke RAM sementara prosesor lain melakukan inferensi pada layer sebelumnya, sehingga LLM yang sangat besar bisa dijalankan dengan RAM kecil
Saat ini saya sedang duduk di samping tumpukan komponen untuk merakit mesin AI LLM baru. Ini z840 dual-prosesor, jadi saya menantikan untuk mencoba hal semacam ini sendiri
Yang mencolok, perangkat Apple memiliki RAM yang sangat kecil dibanding perangkat serupa dari pesaing
Sebagian karena tim perangkat lunak Apple memakai bahasa yang lebih efisien seperti Objective-C, dan sebagian karena aplikasi iOS tidak perlu menargetkan variasi resolusi layar yang sangat beragam. Jadi relatif lebih jarang perlu memuat tekstur beresolusi tinggi lalu mengecilkannya
Selain itu, bahkan dengan pembelian skala Apple, RAM tidak menjadi jauh lebih murah, sehingga penambahan RAM lebih memukul margin dibanding menambahkan fitur lain
Namun karena LLM pada dasarnya sangat memakan RAM, semua pilihan ini kembali menjadi masalah. Teknik penghematan memori apa pun yang dipakai, pesaing dengan RAM lebih besar akan bisa memasukkan model yang lebih besar, lebih baik, dan lebih pintar
Saya ingin segera membeli Mac, tetapi benar-benar bingung harus memesan RAM sebesar apa. Makin sulit karena anggaran terbatas. Kalau tidak ada batasan, sepertinya minimal saya akan memilih 32GB
Saya masih berharap Apple mengubah kebijakan harga RAM-nya, tetapi mungkin besar kemungkinan itu harapan kosong
Implementasi terkait juga bisa dilihat: https://opensource.apple.com/source/xnu/xnu-2050.18.24/libke...
Selain itu perangkat Apple mendukung fitur bernama “jetsam”, yang membebaskan memori dengan menghentikan aplikasi yang tidak digunakan atau berada di latar belakang agar aplikasi berprioritas tinggi bisa terus berjalan mulus: https://developer.apple.com/documentation/xcode/identifying-...
Saya terbuka terhadap rekomendasi laptop Linux yang senyap atau nyaris tanpa suara. Kebanyakan kipasnya berputar kencang, dan saya rela mengorbankan sebagian performa CPU demi kesenyapan. Akan bagus juga jika mode senyap bisa dinyalakan dan dimatikan dengan mudah
Sejauh ini belum ada yang saya lihat bisa menyamai kesenyapan MacBook Air, dan saya akan senang mendengar produk yang bisa membuktikan saya keliru
Tentu akan bagus juga kalau lebih murah atau RAM-nya bisa diganti. Saya terutama memakai MacBook Air untuk layanan berbasis web dan sebagai terminal jarak jauh untuk mengakses server Linux yang dipakai untuk mengompilasi proyek besar serta hosting rumah/self-hosting
Jelas jadwalnya dipercepat, tetapi saya tidak menganggap hipotesis mereka salah
Saya hanya memahami topik ini secara terbatas, tetapi penasaran apakah pendekatan ini akan memungkinkan menjalankan LLM offline di ponsel
Jika memungkinkan, tampaknya akan membuka banyak aplikasi menarik, seperti moderasi konten berbantuan AI tanpa mengirim data rahasia ke server
Misalnya kemarin ada GitHub Discussion tentang menjalankan LLM di chip Apple A-series (iPhone) yang muncul di sini: https://news.ycombinator.com/item?id=38703161
Saya suka bahwa tulisan-tulisan belakangan ini menyebutnya LLM, bukan “AI”. Dengan begitu kita tahu ini tentang teknologi tertentu, bukan hiperbola pemasaran
Saya penasaran apa bedanya ini dengan FlashAttention. Membingungkan jika memakai istilah yang mirip tetapi tidak menjelaskan perbedaannya di abstrak
Edit: tampaknya ini memperluas dua mekanisme berbeda di dalam framework flash. Judul makalahnya bisa saja lebih baik, tetapi penjelasannya ada dalam beberapa halaman awal
Di bagian kesimpulan saya mengharapkan bagian seperti “bagaimana fitur ini akan diekspos ke pengguna”, tetapi mungkin itu di luar cakupan makalah
Saya penasaran apakah fitur seperti ini akan muncul sebagai pemanggilan API atau pengaturan CoreML, misalnya harus menentukan flag use_flash, atau akan menjadi optimasi runtime yang tidak terlihat oleh pengguna
Saya juga penasaran apakah ada yang tahu presentasi atau talk bagus dari Apple yang menjelaskan roadmap pengembangan CoreML, Metal, dan sebagainya
Apakah Apple mengakuisisi perusahaan Iran?
[0]: https://www.geekwire.com/2020/exclusive-apple-acquires-xnor-...
Saya tahu pendekatannya berbeda, tetapi karena keduanya memanfaatkan memori flash, saya berharap makalah ini setidaknya menyebut FlashAttention [1]
[1] https://arxiv.org/abs/2205.14135
Sepemahaman saya, FlashAttention adalah tentang pola akses yang memanfaatkan memori lokal dengan lebih baik, terutama SRAM. Misalnya, dengan mempertahankan data di cache L1 CPU atau lapisan setara pada GPU
Dengan kata lain, FlashAttention berkaitan dengan bagian yang lebih cepat daripada DRAM, sedangkan makalah ini membahas masalah offloading yang lebih baik ke bagian yang lebih lambat daripada DRAM
Pada kalimat “model OPT 6.7B, misalnya, menunjukkan sparsity 97% yang mencolok di dalam lapisan FFN”, apakah ada yang tahu persis apa arti metrik ini?
Saya penasaran apakah artinya 97% nilai lapisan bernilai 0, atau artinya bisa dikompresi hingga 3% dari ukurannya
Namun karena 3% yang aktif itu tidak tetap, 97% sisanya tidak bisa dihilangkan sepenuhnya. Makalah ini tampaknya mengatakan bahwa mereka bisa memprediksi 3% yang aktif dengan cukup akurat, sehingga membuatnya lebih cepat tanpa kehilangan akurasi terlalu banyak