1 poin oleh GN⁺ 2023-12-22 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2023-12-22
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

    • Apple menjalankan model berukuran dua kali lipat dari memori yang tersedia. Saya tidak tahu apakah itu titik optimal yang mereka temukan, atau apakah model yang lebih besar juga mungkin jika waktu respons dikorbankan
      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
    • Ini sekadar upaya merapikan pikiran, dan bukan penjelasan yang otoritatif
      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

    • Ditambah lagi, sebagian besar Mac desktop saat ini tidak bisa melakukan upgrade RAM
      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
    • Menambahkan dua hal tentang bagaimana “RAM rendah” dimungkinkan: perangkat Apple mendukung kompresi memori: https://www.lifewire.com/understanding-compressed-memory-os-...
      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-...
    • Satu-satunya alasan tersisa saya memakai Mac adalah karena sudah terbiasa, dan karena MacBook Air senyap
      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
    • Saya tidak tahu apakah interpretasi ini benar. Apple tampaknya bertaruh bahwa dalam jangka panjang, dengan arsitektur CPU/GPU yang tepat, memori flash akan menjadi setara dengan RAM
      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

    • Benar, ini bisa sangat memperbaiki bagian itu. Bahkan tanpa teknik ini, LLM sudah bisa dijalankan di ponsel, dan masalahnya adalah seberapa besar model yang bisa dipakai, seberapa agresif kuantisasi yang harus dilakukan, dan apakah beberapa model yang tersisa memberikan hasil yang cukup baik
      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
    • Benar. Tujuan akhirnya adalah menjalankan model yang lebih besar di ponsel, karena DRAM di ponsel sangat terbatas
    • Saya tidak yakin, tetapi sepertinya itu salah satu nilai jual Pixel baru
  • Saya suka bahwa tulisan-tulisan belakangan ini menyebutnya LLM, bukan “AI”. Dengan begitu kita tahu ini tentang teknologi tertentu, bukan hiperbola pemasaran

    • Ini Hugging Face. Mengingat pembacanya, justru akan sangat aneh jika tidak menuliskannya secara spesifik
  • 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?

    • Sebagian besar tim tampaknya berasal dari XNOR.ai, yang diakuisisi Apple pada 2020[0]. Perusahaannya berbasis di Seattle, dan para pendirinya tampaknya keturunan Iran
      [0]: https://www.geekwire.com/2020/exclusive-apple-acquires-xnor-...
    • Saya juga berpikir begitu. Sebagian besar lulusan Sharif, yang kira-kira setara Stanford-nya Iran
  • 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

    • Sejauh yang saya tahu, FlashAttention sama sekali tidak membahas memori flash
      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

    • Artinya 97% dari keluaran lapisan tersebut bernilai 0, dan hanya 3% yang aktif pada satu waktu
      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