Makalah · arXiv 2609.18063
The Other Half of the Memory Wall: Menyajikan MoE 35B dari SSD dengan Prediksi Routing Terlatih
The Other Half of the Memory Wall: Serving 35B MoEs from SSD with Trained Routing Prediction
Ringkasan tiga baris
- 🎯 MoE kelas 35B membutuhkan ~19,5 GB bahkan pada int4, melampaui RAM konsumen, sementara offloading SSD naif terhambat oleh latensi disk karena routing lapisan bergantung pada luaran lapisan sebelumnya.
- 🔧 Edge0 melakukan streaming pakar MoE dari SSD menggunakan prerouter per lapisan yang memprediksi routing satu token lebih awal, menerapkan 'prediction as routing', dipadukan dengan recovery LoRA paralel tanpa penggabungan yang disuling pada jalur student.
- 📈 Menyajikan MoE 35B pada ~20,4 tok/s dengan memori puncak 2,9 GiB pada Mac mini M4 Pro 24 GB, berada dalam selisih rata-rata 3,9 poin benchmark dari teacher fp16.
Abstrak
Inferensi mixture-of-experts (MoE) pada perangkat keras tingkat konsumen dibatasi oleh memori bobot: model kelas 35B berukuran 19,5 GB pada presisi 4-bit, dan sparsitas mengurangi komputasi per token, bukan bita yang harus disimpan. Offloading naif ke SSD saja tidak membantu, karena pakar (expert) pada lapisan N+1 harus dipilih sebelum luaran lapisan N ada, sehingga pembacaan data tidak dapat dimulai cukup awal untuk disembunyikan di balik komputasi. Kami memperkenalkan Edge0, mesin inferensi streaming MoE yang menjembatani kesenjangan ini menggunakan prerouter: sebuah head per lapisan memprediksi routing lapisan berikutnya satu token lebih awal, dan prediksi tersebut digunakan secara langsung sebagai routing itu sendiri, sehingga himpunan pakar yang disiapkan sama persis dengan himpunan yang di-route dan tidak ada yang terbuang. LoRA pemulihan tanpa penggabungan (unmerged recovery LoRA), yang dilatih pada jalur student, mengembalikan kualitas yang hilang akibat kuantisasi int4 dan penggantian routing. Pada satu mesin 24 GB, Edge0 menyajikan MoE 35B pada kecepatan 20 tok/s dalam memori aktif puncak sebesar 3 GiB, hanya berselisih beberapa poin rata-rata dari teacher fp16-nya pada lima benchmark publik. Tingkat 8B berjalan pada kerangka kerja yang sama, dan kerangka kerja, checkpoint, serta adapter dirilis sebagai sumber terbuka.
Abstrak asli (bahasa Inggris)
Mixture-of-experts (MoE) inference on consumer hardware is bounded by weight memory: a 35B-class model is 19.5GB at 4-bit, and sparsity shrinks the compute per token, not the bytes that must be held. Naive offloading to SSD does not help on its own, because layer N+1's experts must be chosen before layer N's output exists, so the reads cannot start early enough to hide behind compute. We present Edge0, a streaming MoE inference engine that closes the gap with a prerouter: a per-layer head predicts the next layer's routing one token ahead, and the prediction is consumed as the routing itself, so the staged expert set equals the routed set and nothing is dropped. An unmerged recovery LoRA, trained on the student path, pays back the quality lost to int4 quantization and routing replacement. On a single 24GB machine, Edge0 serves a 35B MoE at 20tok/s inside 3GiB of peak active memory, within a few points of its fp16 teacher on average across five public benchmarks. An 8B tier runs on the same framework, and the framework, checkpoints, and adapters are open source.
Panduan membaca
Masalah dan motivasi
Model Mixture-of-Experts (MoE) menskalakan total parameter sekaligus mempertahankan parameter aktif yang rendah per token (misalnya, mengaktifkan ~3B parameter per token pada model 35B). Namun, inferensi pada perangkat keras tingkat konsumen tetap dibatasi oleh memori bobot statis: MoE 35B memerlukan sekitar 19,5 GB bahkan setelah dikuantisasi ke int4. Pada mesin 24 GB, hal ini sepenuhnya menyita ruang untuk sistem operasi dan KV cache, yang memicu memory paging parah serta penurunan throughput decode yang drastis (misalnya, 3,9 tok/s untuk model yang sepenuhnya menetap di memori pada M4 Pro Mac mini).
Melakukan offloading bobot pakar ke SSD dapat mengurangi konsumsi memori, tetapi pemuatan langsung (on-demand) yang naif memicu leher botol serialisasi yang kaku: pemilihan pakar untuk lapisan bergantung pada luaran dari lapisan . Pembacaan SSD tidak dapat dimulai cukup awal untuk bersembunyi di balik komputasi, menghentikan eksekusi karena latensi disk satu kali per lapisan per token.
Ide-ide utama
- SSD sebagai Tingkatan Penyimpanan Bobot: Bobot pakar MoE tetap berada di SSD dalam format int4 dan dipetakan ke memori (
mmap) ke dalam streaming pool yang ringkas. Memori puncak ditentukan oleh working set aktif, bukan total ukuran parameter model. - Prediction as Routing: Alih-alih menunggu lapisan selesai, sebuah prerouter per lapisan memprediksi routing lapisan satu token penuh sebelumnya. Yang terpenting, model memperlakukan prediksi tersebut sebagai routing itu sendiri pada saat decode. Ini secara inheren menghilangkan risiko token terbuang (dropped tokens) atau pemuatan cadangan (fallback loads) karena himpunan yang disiapkan identik dengan himpunan yang diarahkan.
- Unmerged Recovery LoRA: Kuantisasi 4-bit dan routing aproksimasi menyebabkan penurunan kualitas. Edge0 melatih adapter berperingkat rendah (low-rank adapter) pada jalur routing student melalui distilasi. Karena menggabungkan LoRA ke dalam basis int4 lalu menguantisasinya kembali akan menghapus sebagian besar nilai delta (hanya tersisa retensi 18% pada tingkat logits), Edge0 menyajikan adapter sebagai delta paralel tanpa penggabungan (unmerged) dengan overhead yang sangat kecil.
Metode
Arsitektur Head Prerouter
Setiap head prerouter yang dimiliki oleh lapisan berjalan pada token pada luaran layer norm pasca-atensi dan memprediksi routing untuk lapisan pada token . Fitur masukan menggabungkan hidden state dengan dua vektor one-hot routing top- (token saat ini dan sebelumnya):
Untuk tingkat 35B, nilainya adalah . Head menghitung:
di mana adalah jalur residual linier yang diinisialisasi (warm-started) dari bobot router lapisan berikutnya.
Eksekusi Adapter Tanpa Penggabungan (Unmerged)
Lapisan MoE yang disajikan mempertahankan bita basis terkuantisasi dan menjalankan delta LoRA secara paralel:
Pelatihan Tiga Fase
- Head Distillation: Head prerouter dilatih untuk meniru keputusan router sebenarnya pada lapisan berikutnya dari teacher, sementara sisa jaringan dibekukan (frozen).
- Student-Path SFT: Adapter LoRA pemulihan (dipasang pada proyeksi attention, linear-attention, dan shared-expert, tetapi tidak pada pakar streaming) dilatih menggunakan teks hasil generasi teacher sambil memaksakan routing melalui prerouter.
- On-Policy Distillation: Student menghasilkan teks di bawah eksekusi yang diarahkan prerouter, teacher basis fp16 menilai generasi tersebut, dan parameter LoRA dioptimalkan melalui divergensi Kullback–Leibler terbalik dengan objektif probabilitas top- yang peka terhadap ekor distribusi (tail-aware).
Hasil
- Throughput & Memori (Mac mini M4 Pro, 24 GB):
- edge0-35b (): Mencapai decode 20,4 tok/s hanya menggunakan memori aktif puncak 2,9 GiB dari checkpoint int4 19,5 GB (dibandingkan dengan 3,9 tok/s dan 18,2 GiB saat sepenuhnya dimuat ke memori).
- edge0-8b (): Mencapai decode 28,0 tok/s dalam memori puncak 1,5 GiB.
- Peningkatan Kecepatan Prefetching (MacBook M2, 16 GB):
- Dibandingkan dengan streaming on-demand yang murni reaktif, prefetch prerouter 1 token meningkatkan kecepatan decode sebesar +80% hingga +84% di berbagai variasi lebar routing (: 4,8 ke 8,6 tok/s; : 3,5 ke 6,4 tok/s; : 1,8 ke 3,3 tok/s).
- Waktu muat yang memblokir thread utama (main-thread blocked load time) turun drastis (misalnya, dari 244,0 ms menjadi 101,9 ms per langkah pada ).
- Kualitas Model (OpenCompass):
- Di lima pengujian tolok ukur (AIME 2026, HumanEval, GPQA-Diamond, MMLU-Pro, IFBench), edge0-35b mencetak skor rata-rata 79,2 dibandingkan 83,2 untuk basis Qwen3.6 fp16 (selisih 3,9 poin).
- edge0-8b mencapai 69,9 dibandingkan 72,7 untuk basis Ling 3.0 tiny fp16 (selisih 2,8 poin).
Batasan dan pertanyaan terbuka
- Konkurensi Penyajian: Edge0 beroperasi secara serial FIFO untuk permintaan tunggal; batching mengubah dinamika working set pakar dan caching dengan cara yang belum tercakup dalam profil single-stream saat ini.
- Overhead Pembentukan Graph CPU: Kecepatan decode dibatasi oleh overhead kerangka kerja di sisi CPU (~44 ms/langkah dalam pembentukan graph MLX di seluruh 40 lapisan), yang tidak dapat diringankan oleh optimasi SSD.
- Penurunan Kualitas pada Penalaran: Penurunan kinerja terkonsentrasi pada tolok ukur penalaran yang kompleks (misalnya, penurunan 6,1 poin pada AIME untuk 35B dan 10,0 poin untuk 8B).
- Ketergantungan Perangkat Keras: Keuntungan throughput relatif dari prerouter bergantung pada latensi disk dan akan mengecil ketika cache bobot sudah hangat (warm) atau saat berjalan pada tingkatan media penyimpanan yang sangat cepat.
Istilah kunci
- Edge0
- Mesin inferensi MoE berbasis streaming yang menyajikan model dari SSD dengan menumpangtindihkan proses pembacaan data dengan komputasi melalui prediksi routing serta mengompensasi penurunan kualitas menggunakan recovery LoRA tanpa penggabungan.
- prerouter
- Head neural ringan per lapisan yang memprediksi keputusan routing lapisan N+1 satu token sebelumnya menggunakan hidden state lapisan N dan riwayat routing terbaru.
- prediction-as-routing
- Prinsip desain di mana himpunan pakar yang diprediksi oleh prerouter dieksekusi secara langsung sebagai routing lapisan sebenarnya pada saat decode, mengeliminasi terbuangnya token saat runtime atau penalti akibat prediksi meleset.
- recovery LoRA
- Adapter berperingkat rendah (low-rank adapter) yang dilatih via distilasi pada jalur prerouting student dan dieksekusi sebagai cabang paralel tanpa penggabungan untuk mengompensasi galat kuantisasi int4 dan aproksimasi routing.
- staged decode
- Mode eksekusi pakar menggunakan double buffering dengan slot tetap, di mana indeks pakar dipetakan melalui tabel slot pada GPU untuk menghindari alokasi memori di setiap langkah inferensi.
- incremental sticky-slot stack (incr_stack)
- Mekanisme yang memperbarui tumpukan tensor pakar persisten secara langsung di tempat, hanya menulis ulang slot pakar yang berubah di setiap langkah daripada merakit ulang seluruh tensor pakar.
- unmerged delta
- Mengeksekusi adapter LoRA secara paralel bersama bobot basis yang terkuantisasi alih-alih meleburnya ke dalam bobot tersebut, mencegah hilangnya adaptasi halus selama proses kuantisasi ulang.
- memory wall
- Kesenjangan performa antara throughput prosesor dan bandwidth/kapasitas DRAM, yang dalam penyajian LLM lokal terbagi antara state KV-cache dinamis dan penyimpanan bobot model statis.
Pertanyaan
Mengapa Edge0 menggunakan prediction as routing alih-alih memperlakukan prediksi sebagai petunjuk (hints)?
Memperlakukan prediksi sebagai petunjuk membutuhkan mekanisme cadangan (fallback) saat runtime atau membuang token ketika prediksi meleset. Mengonsumsi prediksi secara langsung sebagai routing memastikan himpunan pakar yang disiapkan selalu cocok dengan himpunan yang diarahkan, mengalihkan beban aproksimasi ke pelatihan luring tempat distilasi dapat memulihkan kualitas tersebut.
Mengapa recovery LoRA disajikan tanpa penggabungan (unmerged) alih-alih dilebur ke dalam bobot 4-bit?
Delta bobot LoRA memiliki RMS sekitar 10^-3, yang lebih kecil daripada ukuran langkah (step size) kuantisasi 4-bit. Menggabungkan dan menguantisasi ulang akan menghapus sebagian besar efek adapter, hanya menyisakan retensi 18% pada tingkat logits, sedangkan delta paralel tanpa penggabungan mempertahankan ketepatan 100%.
Mengapa Edge0 memprediksi satu token ke depan alih-alih dalam token yang sama?
Memprediksi dalam token yang sama memerlukan pengosongan antrean pipeline GPU per lapisan yang memakan waktu 30 hingga 100 ms per langkah—lebih lama dari waktu muat yang ingin disembunyikan. Memprediksi mendahului satu token penuh memungkinkan semua lapisan yang disiapkan diprediksi dalam satu batch flush, memberikan seluruh waktu komputasi dari langkah decode untuk menyembunyikan I/O SSD.
Bagaimana Edge0 dapat melakukan decode lebih cepat daripada baseline yang sepenuhnya dimuat di memori pada mesin 24 GB?
Model 19,5 GB yang sepenuhnya berada di RAM menghabiskan 18,2 GiB memori, hampir tidak menyisakan ruang untuk sistem operasi dan KV cache, yang memicu memory paging OS parah dan menjatuhkan kecepatan decode hingga 3,9 tok/s. Edge0 melakukan streaming pakar dari SSD dalam memori aktif puncak ~2,9 GiB, menghindari tekanan memori OS sepenuhnya dan berjalan pada kecepatan 20,4 tok/s.
Ulasan di halaman ini ditulis oleh AI dari makalah dan mungkin mengandung kesalahan. Baca makalahnya untuk detail.