5 poin oleh GN⁺ 28 hari lalu | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 28 hari lalu
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

    • Metode di tautan itu juga sudah memakai 2-bit quantization
      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 stabil
    • Saya penasaran sekarang bisa dapat berapa tok/s
      Ingin 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
    • Saya penasaran dengan konsumsi dayanya
      Mungkin bisa diperkirakan dengan CoconutBattery
    • Penasaran apakah ini dijalankan hanya dengan satu M1 Ultra
    • Saya terlalu banyak menghabiskan kredit untuk otomasi pribadi, jadi info ini sangat membantu
  • 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 nyata
    Saya 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

    • Saat melihat masalah output JSON, saya sempat berpikir apakah sampling bisa saja dibatasi hanya ke token JSON yang valid
      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_fadvise

  • Penurunan 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

    • Saya memakai laptop yang lumayan bagus juga (bukan Mac), jadi upaya seperti ini tetap menarik
      Tapi saat melihat judulnya saya juga tidak berharap itu akan berjalan di sembarang laptop
      Saya lebih suka menikmati eksperimen seperti ini daripada terlalu sinis
    • Model M1 Max 64GB bekas sebenarnya bisa didapat di bawah $2000
      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
    • Sebenarnya ini juga bisa dilakukan di laptop Strix Halo seharga $3000~4000
    • Judulnya mungkin akan lebih akurat jika ditulis seperti “,on a laptop!”
    • Saya menjalankan seluruh model dengan klaster dua laptop seharga $3000 (128GB zbook)
      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? 😉

    • Memang penulisnya dengan jelas menyatakan bahwa itu adalah kode yang ditulis AI
  • 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

    • Pendekatan yang sama juga mungkin di Linux
      Hanya saja proyek ini memakai Metal, jadi khusus macOS
    • Sebagian besar engine (misalnya llama.cpp, vllm, sglang) mendukung fungsi seperti ini
      Tapi model MoE tetap sangat dibatasi oleh bandwidth
    • Fitur untuk memuat expert ke memori sistem sudah didukung oleh sebagian besar framework AI lokal
      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
    • Menjalankan sebagian layer yang tidak muat di memori GPU di CPU juga memungkinkan
      Tetapi begitu model meluber ke RAM sistem atau disk, performanya turun drastis
    • Jika pendekatan seperti ini berhasil, sepertinya dua 3090 dan RAM yang cukup pun bisa memungkinkan inferensi besar skala lab pribadi
  • 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?

    • Pada arsitektur seperti ini, IO sangat burst-heavy
      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
    • Di generasi PCIe 5, bandwidth-nya meningkat dua kali lipat sehingga SSD terbaru lebih cepat
    • SSD pada model MacBook Pro M5 Pro/Max memang berada di kisaran kecepatan seperti itu