- Mesin inferensi berbasis C/Metal yang menjalankan model Mixture-of-Experts berukuran 397B parameter di MacBook Pro (RAM 48GB) dengan kecepatan lebih dari 4,4 token per detik
- Seluruh model 209GB di-streaming dari SSD, dan diimplementasikan hanya dengan C dan shader Metal tanpa Python atau framework
- SSD Expert Streaming, kernel optimalisasi FMA, Deferred GPU Compute, dan lainnya memaksimalkan efisiensi paralel GPU·SSD·CPU
- Konfigurasi kuantisasi 4-bit menyeimbangkan kualitas dan kecepatan, serta menghasilkan output tingkat produksi yang mencakup fungsi tool calling
- Contoh peringanan dan optimalisasi yang memungkinkan inferensi real-time model MoE superbesar bahkan di lingkungan laptop
Hasil performa
- Pada konfigurasi expert 4-bit (kernel FMA), mencapai 4,36 tok/s, kualitas baik, menggunakan total 209GB disk
- Konfigurasi dasar 4-bit mencatat 3,90 tok/s sebagai tahap sebelum optimalisasi FMA
- Konfigurasi expert 2-bit (trust OS) mencapai 5,74 tok/s dan lebih cepat, tetapi error output JSON membuat tool calling tidak bisa digunakan
- Puncak token tunggal 2-bit mencapai hingga 7,05 tok/s, tetapi tidak cocok untuk penggunaan nyata
- Kuantisasi 4-bit adalah konfigurasi yang cocok untuk operasional sebenarnya
Lingkungan hardware
- MacBook Pro (Apple M3 Max), CPU 16-core (12P+4E), GPU 40-core, ANE 16-core
- Memori terpadu 48GB, bandwidth sekitar 400GB/s
- SSD adalah Apple Fabric 1TB, dengan kecepatan baca sekuensial 17,5GB/s
- Lingkungan macOS 26.2 (Darwin 25.2.0)
Arsitektur model
- Total 60 layer transformer: 45 GatedDeltaNet (linear attention) + 15 full attention
- Setiap layer memiliki 512 expert, dan K=4 diaktifkan per token (termasuk 1 shared expert)
- Dimensi hidden 4096
-
Teknologi inti
-
SSD Expert Streaming
- Bobot expert (209GB untuk basis 4-bit) dimuat saat diperlukan dari NVMe SSD melalui pread() paralel
- Di setiap layer, hanya 4 expert aktif yang dimuat (masing-masing sekitar 6,75MB)
- OS page cache otomatis mengelola caching, sehingga tidak perlu cache terpisah
- Struktur ini terinspirasi dari paper Apple “LLM in a Flash”
-
Kernel dequant teroptimasi FMA
- Operasi
(nibble * scale + bias) * x disusun ulang menjadi bentuk fma(nibble, scale*x, bias*x)
scale*x dan bias*x dihitung lebih dulu sehingga unit FMA GPU dapat mengeksekusinya dalam satu instruksi
- Peningkatan kecepatan 12% dibanding implementasi sederhana
-
Metal Compute Shaders
- Perkalian matriks-vektor dequant 4-bit/2-bit, aktivasi SwiGLU, normalisasi RMS, attention GPU (Q@Kᵀ, softmax, scores@V), RoPE, penggabungan MoE + residual + gate, dan lainnya diimplementasikan sebagai kernel Metal yang ditulis manual
-
Deferred GPU Expert Compute
- Perintah CMD3 (forward pass expert) dikirim secara asinkron sehingga CPU dapat menyiapkan layer berikutnya saat GPU sedang mengeksekusi
- Operasi penggabungan + normalisasi + residual juga dijalankan di GPU lalu langsung diteruskan ke layer berikutnya
-
Pemanfaatan Accelerate BLAS
- Menggunakan
cblas_sscal, cblas_sgemv, cblas_sger untuk komputasi rekursif GatedDeltaNet
- 64% lebih cepat dibanding kode skalar
-
Trust the OS
- Menghapus cache kustom, dan menyerahkan caching data expert ke OS page cache (berbasis LRU, sekitar 35GB)
- Semuanya lebih lambat dibanding Metal LRU buatan sendiri, cache malloc, maupun cache kompresi LZ4
- Mencapai cache hit rate alami 71%
-
Batasan memori terpadu
- Di Apple Silicon, SSD DMA dan komputasi GPU berbagi memory controller yang sama
- Saat dijalankan paralel, saturasi bandwidth GPU menyebabkan lonjakan latensi
- Pipeline berurutan GPU → SSD → GPU menjadi bentuk optimal untuk hardware
1 komentar
Komentar Hacker News
Ada cara lain untuk menjalankan Qwen 3.5 397B bahkan di perangkat konsumen
Ada versi quant 2.5 BPW, jadi masih cukup memungkinkan bahkan di perangkat dengan memori 128GB
Saya menjalankannya dengan baik di M1 Ultra pada sekitar 20 tok/s sambil mempertahankan konteks 256k
Hasil lm-evaluation-harness sekitar mmlu 87.86%, gpqa diamond 82.32%, gsm8k 86.43%, ifeval 75.90%
Pengalaman lebih detail saya rangkum di diskusi Hugging Face link1 dan link2
Ini model yang sangat bagus untuk inferensi offline
Jumlah expert per token dikurangi dari 10 menjadi 4, jadi kualitasnya makin turun
Untuk prompt pendek masih oke, tapi untuk sesi panjang tidak terlalu berguna
Ada juga masalah pada output JSON yang menghasilkan
"name"alih-alih\name\, sehingga tool calling menjadi tidak stabilIngin tahu juga apakah tetap bekerja baik pada konteks panjang
Dan senang melihat nama pengguna itu lagi setelah sekian lama — pembuat Neovim, sukses yang benar-benar luar biasa
Saya juga memakainya setiap hari
Mungkin bisa diperkirakan dengan CoconutBattery
Kalau melihat detailnya, sepertinya mereka mendapat sekitar 5 tok/s dengan 2-bit quantization dan mengurangi jumlah expert dari 10 menjadi 4
Ini proof of concept yang menarik, tapi kualitasnya jauh dari model 397B aslinya
Optimisasi se-ekstrem ini menyebabkan hilangnya kecerdasan pada model
Ada juga masalah output JSON yang menghasilkan
"name"alih-alih\name\, jadi tidak cocok untuk penggunaan nyataSaya akui ini upaya yang menunjukkan bahwa eksperimen seperti ini secara teknis memungkinkan, tetapi belum pada tingkat yang benar-benar bisa dipakai
Akhir-akhir ini terlalu banyak paper yang ditulis AI, jadi terasa melelahkan
Tapi saya dengar bahkan LLM komersial pun akurasi tool calling-nya rendah
Mungkin memang sulit diimplementasikan, atau ada bagian yang secara struktural tidak memungkinkan
Ada juga diskusi terkait di r/LocalLLaMA
Menurut halaman GitHub, pendekatan mmap sederhana terhambat oleh overhead per halaman
Saya penasaran apakah ini bisa ditingkatkan di macOS dengan mengatur huge page atau melakukan prefetch dengan
posix_fadvisePenurunan kualitas pada 2-bit quantization memang masalah yang serius
Dalam pekerjaan nyata, saya pernah merasakan bahwa model 30B 4-bit yang dituning dengan baik lebih bagus daripada model 70B+ 2-bit
Jika jumlah expert dikurangi, pada dasarnya itu sudah menjadi model yang berbeda
Meski begitu, tetap menarik sebagai upaya menguji batas hardware konsumen
Judul “berjalan di laptop” yang setiap kali ternyata berarti MacBook seharga $3000 itu melelahkan
Teknik kompresinya memang mengesankan, tetapi bukan opsi yang realistis bagi pengguna biasa
Tapi saat melihat judulnya saya juga tidak berharap itu akan berjalan di sembarang laptop
Saya lebih suka menikmati eksperimen seperti ini daripada terlalu sinis
Banyak orang juga sudah punya MacBook performa tinggi seperti ini untuk editing video dan semacamnya
Keuntungannya adalah bisa bereksperimen dengan laptop yang sudah dimiliki, tanpa perangkat tambahan
Kecepatannya sekitar 20 tok/s, dan menurut saya itu sudah cukup terjangkau bahkan untuk individu
Untuk penggunaan kerja pun investasinya terasa layak
“No Python. No frameworks. Just C, Objective-C, and hand-tuned Metal shaders.”
Begitu membaca kalimat ini, saya langsung punya firasat dari mana token-token itu berasal
Katanya ada “Hand-written Metal kernels”, jangan-jangan itu ditulis langsung oleh GPT? 😉
Hasil yang benar-benar mengesankan
Saya penasaran apakah pendekatan serupa juga memungkinkan di Linux dengan akses berbasis memori sistem alih-alih SSD
Atau ide menyimpan bobot dalam bentuk ROM juga terdengar menarik
Hanya saja proyek ini memakai Metal, jadi khusus macOS
Tapi model MoE tetap sangat dibatasi oleh bandwidth
Namun pada tahap decode, overhead transfer CPU lebih besar daripada GPU sehingga keuntungannya kecil
Lebih efisien jika GPU hanya dipakai untuk mempercepat bagian yang dibagi bersama
Tetapi begitu model meluber ke RAM sistem atau disk, performanya turun drastis
Ada penjelasan bahwa SSD menjadi bottleneck, dan penulis mengatakan ia mendapat 15GB/s
Tapi setahu saya bandwidth maksimumnya sekitar 8GB/s. Apa yang saya lewatkan?
Setelah hasil router keluar, expert dimuat dari SSD, dan pada saat itulah SSD menjadi jenuh
IO rata-ratanya sekitar 2970MB/s, jauh di bawah batas SSD
Mungkin hasilnya bisa lebih baik lagi jika beberapa tensor diparalelkan dengan pembacaan asinkron
Saat saya bereksperimen di Linux dengan io_uring, sekitar 20% pembacaan selesai paralel saat komputasi berjalan