- TurboFieldfare menjalankan Gemma 4 26B-A4B dengan sekitar 2GB memori tanpa memuat seluruh model 14.3GB ke RAM, sehingga inferensi lokal dimungkinkan bahkan di Apple Silicon Mac 8GB
- Setelah hanya mempertahankan shared core 1.35GB dan cache KV FP16 di memori, bobot expert MoE yang dibutuhkan untuk tiap token di-stream dari SSD, dengan I/O dibatasi melalui cache LFU 16 slot dan
preadparalel - Gemma 4 26B-A4B mengaktifkan sekitar 3.88B parameter per token, dengan kecepatan decoding terukur 5.1~6.3 tok/s pada M2 MacBook Air 8GB dan 31~35 tok/s pada M5 Pro 24GB
- Ini adalah runtime khusus yang diimplementasikan dengan Swift 6.2 dan Metal 4, serta menyediakan aplikasi Mac native, CLI, alat instalasi, dan server kompatibel OpenAI eksperimental di atas direktori model
.gturboyang sama - Cakupan saat ini terbatas pada inferensi teks saja di Apple Silicon Mac dengan macOS 26 ke atas dan minimal 8GB RAM; gambar, audio, video, autentikasi server jarak jauh, dan TLS tidak didukung
Arsitektur eksekusi yang mengurangi memori
- TurboFieldfare tidak memuat instruction-tuned Gemma 4 26B-A4B sepenuhnya ke memori
- shared core 1.35GB dan cache KV FP16 dipertahankan di memori
- Hanya routed expert yang diperlukan untuk tiap token yang dibaca dari SSD ke buffer yang dapat diakses Metal
- Model teks-saja yang terpasang berukuran sekitar 14.3GB, tetapi memori yang dipakai bobot dan cache KV 4K hanya sekitar 2GB
- Dari total 26B parameter, model mengaktifkan sekitar 3.88B parameter per token
- Bobot menggunakan MLX affine 4-bit berbasis group 64; router memakai 8-bit, sedangkan shared dan routed expert memakai 4-bit
- Ini bukan pembungkus untuk MLX atau llama.cpp, melainkan runtime khusus Swift·Metal yang dibuat untuk Gemma 4 26B-A4B
Proses pembuatan token
- Di setiap layer Transformer, Metal menghitung attention dan router dengan bobot yang selalu ada di memori
- CPU mencocokkan 8 expert ID teratas yang dipilih router dengan cache LFU 16 slot per layer
- Cache miss diisi lewat sejumlah terbatas pemanggilan
preadparalel - Selama pembacaan SSD berlangsung, Metal menghitung cabang shared-expert yang selalu ada di memori
- Setelah pembacaan selesai, output shared dan output routed digabungkan
- Cache miss diisi lewat sejumlah terbatas pemanggilan
- Prefill prompt memakai chunk hingga 128 token agar expert yang sudah diambil bisa memproses beberapa baris
- Pada tahap generasi, loop routed layer diulang per token
- Cache KV memakai penyimpanan melingkar yang dibatasi untuk 25 sliding-window layer, dan penyimpanan linear untuk 5 full-attention layer
- Decoding attention menggunakan exact split-K/V dengan jalur K dan V yang dinormalisasi dipisahkan
Instalasi dan format model
- Saat dijalankan pertama kali, memilih Download akan mengunduh sekitar 15GB melalui range request dari revision Hugging Face yang dipatok
- Installer tidak pernah membuat seluruh checkpoint asli sebagai file sementara atau di memori
- Rentang byte yang diperlukan diambil lalu langsung dikemas ulang ke tata letak
.gturbo - Karena shard atau tensor penuh tidak disiapkan terpisah, penggunaan memori sementara tetap terbatas
- Hasil instalasi hanya bisa dipakai jika lolos verifikasi manifest dan hash file
- Rentang byte yang diperlukan diambil lalu langsung dikemas ulang ke tata letak
- Setelah instalasi selesai, model memakai sekitar 14.3GB ruang penyimpanan, dan proses instalasi sendiri tidak memuat model ke memori
- Runtime hanya menerima direktori
.gturbolengkap yang memilikimanifest.jsonakhir - Mendukung melanjutkan unduhan yang terputus, menghapus status unduhan parsial, dan verifikasi instalasi tanpa memuat model
Lingkungan eksekusi dan performa
- Kebutuhan lingkungan adalah Apple Silicon Mac, macOS 26, Metal 4, Xcode 26, dan Swift 6.2 atau lebih baru
- Paket ini khusus arm64 dan tidak mendukung macOS maupun versi Metal yang lebih lama
- Verifikasi dilakukan pada M2 MacBook Air 8GB; diperlukan ruang penyimpanan kosong untuk instalasi model dan koneksi internet untuk unduhan awal
- Performa decoding terukur adalah sebagai berikut
- M2 MacBook Air 8GB: 5.1~6.3 tok/s
- M5 Pro 24GB: 31~35 tok/s
- Throughput bergantung pada panjang prompt, panjang generasi, status page cache, dan perangkat keras, sehingga angka ini adalah titik acuan, bukan batas atas performa
- Sebelum menjalankan model, tutup aplikasi yang banyak memakai memori dan periksa memori bebas dengan
memory_pressure -Q - Aplikasi, decode service, CLI, server, pengujian, atau proses model lokal lain hanya boleh dijalankan satu per satu
Produk yang disediakan dan cara penggunaan
- Paket Swift menyediakan enam produk
TurboFieldfare: pustaka Swift yang mencakup runtime dan kernel MetalTurboFieldfareMac: aplikasi Mac native untuk instalasi dan generasiTurboFieldfareDecodeService: proses lokal sekali jalan yang memiliki model dan Metal, dipakai oleh aplikasi MacTurboFieldfareCLI: chat instruction baris perintah dan raw completionTurboFieldfareServer: server Chat Completions kompatibel OpenAI di loopbackTurboFieldfareRepack: alat instalasi streaming dan verifikasi instalasi
- Di aplikasi Mac, setelah mengunduh model pilih Load Model lalu masukkan prompt untuk menghasilkan teks
- Bilah status menampilkan progres, kecepatan decoding, dan penggunaan memori
- Anda dapat menyesuaikan sampling, panjang context, slot cache expert, dan opsi runtime
- Chat instruction di CLI menerima array pesan JSON dan mengubahnya ke format yang sama seperti aplikasi Mac
- Nilai bawaan batas respons
--max-newadalah 1.024 token - Aplikasi Mac dapat terus menghasilkan hingga context window yang dipilih penuh
- Nilai bawaan batas respons
--promptdipakai untuk raw completion yang tidak menerapkan format chat dan untuk perbandingan yang dapat direproduksi- Teks hasil generasi dikirim ke standar output, statistik waktu ke standar error, dan output statistik dapat dimatikan dengan
--quiet
Prompt dan cakupan dukungan
- Aplikasi Mac memproses input sebagai instruction dan otomatis menerapkan format chat Gemma
- Pengaturan sampling bawaan adalah temperature
0.2, Top-K64, dan Top-P0.95- Jika temperature diatur ke
0, digunakan output greedy yang deterministik - Model bisa mengulang atau menjawab keliru, jadi hasil penting perlu diverifikasi
- Jika temperature diatur ke
- Aplikasi dan CLI mendukung pesan pengguna dan model serta system guidance opsional, tetapi tidak mengekspos atau mengeksekusi alat
- Input dan output model saat ini hanya mendukung teks; gambar, audio, dan video tidak didukung
- CLI menyediakan
--max-context,--temperature,--top-k,--top-p,--repetition-penalty,--seed, dan string--stopyang dapat diulang
Server lokal kompatibel OpenAI
- Server eksperimental berjalan di
127.0.0.1:8080/v1dan mendukung Chat Completions, streaming, deklarasi function tool, serta pemakaian ulang prompt prefix tunggal - Server mengembalikan tool call yang dibuat model, tetapi persetujuan dan eksekusi semua pemanggilan alat sepenuhnya ditangani klien
- Karena tidak ada autentikasi jarak jauh dan TLS, server harus tetap hanya di loopback
- Aplikasi Mac, CLI, dan server memakai direktori
.gturboyang sama, tetapi hanya satu produk yang memiliki model boleh dijalankan pada saat yang sama
Cakupan implementasi dan catatan eksperimen
- Kernel Metal kustom menangani GEMV terkuantisasi, attention, MoE, normalisasi, RoPE, sampling, dan fusion produksi
- Runtime mengimplementasikan streaming routed-expert berbasis SSD, cache expert terbatas, prefill prompt tunggal berbasis chunk, dan generasi per token
- 103 hasil pengukuran di berbagai kernel, caching, I/O, prefill, dan decode dikelola sebagai catatan eksperimen
- Dokumen eksperimen mencakup optimasi yang paling berdampak, ide yang gagal, dan hasil awal yang dibatalkan setelah verifikasi yang lebih kuat
- Pekerjaan selanjutnya mencakup pengembangan aplikasi iPhone·iPad serta pengukuran kecepatan dan memori inferensi mobile, serta benchmark pada Mac mini M4 16GB dan Apple Silicon Mac 8GB lainnya
Lisensi dan ketentuan model
- Kode sumber dan dokumentasi didistribusikan di bawah Apache License 2.0
- Bobot model tidak disertakan di repositori, dan installer mengunduhnya secara terpisah dari checkpoint Hugging Face yang dipatok
- Bobot tetap tunduk pada ketentuan distribusi aslinya
- TurboFieldfare adalah proyek riset independen yang tidak berafiliasi dengan Google maupun disponsori atau disetujui oleh Google
1 komentar
Komentar Hacker News
Saya selalu bertanya-tanya kenapa setiap kali kita perlu tahu bahkan siapa Raja Charles, seluruh model harus dijejalkan ke memori. Teknik untuk membagi file besar menjadi bagian-bagian kecil dan membacanya secara efisien dengan memori kecil menurut saya sudah mapan
Di industri AI mutakhir, tampaknya ada kecenderungan: hebat dalam membuat model, tetapi soal skalabilitas dan kepraktisan dilempar ke orang infrastruktur. Jika pengetahuan yang benar-benar dipakai kurang dari 10%, fine-tuning dan optimasi saja mungkin bisa menurunkan biaya secara signifikan
LLM dense biasanya lebih baik performanya, tetapi jika layer dipindahkan ke penyimpanan eksternal, perlambatannya jauh lebih besar daripada MoE
Sekarang, saat mengunduh proyek yang asal-usulnya tidak jelas, kita perlu menjalankan tinjauan keamanan seperti ini sendiri. Saya memintanya mengabaikan instruksi agen dan file Markdown di repositori, lalu memeriksa source Swift/Metal, skrip build, konfigurasi CI, dan dependensi; hasilnya tidak menemukan kode berbahaya, backdoor, pencurian kredensial, atau endpoint jaringan tersembunyi, tetapi risiko kompilasi, supply chain, dan runtime masih tersisa
Kalau ada prompt yang lebih bagus, silakan berbagi; biaya menjalankannya dengan Composer 2.5 milik Cursor kurang dari 0,20 dolar
Jika memakai macOS 15 di M1 MacBook Air, ini bisa dikompilasi dengan menghapus dua baris berikut atau membungkusnya dengan
if #available(macOS 26.0, *):opts.languageVersion = .version4_0Menurut komentar, Anda memang kehilangan efek attention yang 11,24× lebih cepat sehingga prefill 2,4× lebih cepat, tetapi di M1 Air GPU 8-core tetap keluar 5–6 token per detik
Peningkatan prefill 2,4× hanya bekerja pada lini GPU apple10, sedangkan M1 seingat saya apple7
Saya penasaran bagaimana proyek ini dibandingkan dengan
mmapbiasa. llama.cpp juga bisa menjalankan model 26B dengan RAM 2GB jikammapdiaktifkan dan repacking dimatikanPerbedaan utamanya tampaknya ada pada sinkronisasi pembacaan SSD dengan proses inferensi untuk meminimalkan latensi, sementara sistem operasi tidak mempertimbangkan konteks eksekusi semacam ini
mmap. Di M2 8GB, membaca expert 3,36MB dari kondisi dingin membutuhkan 10ms denganmmap, sedangkanpread2,8ms, dan keseluruhan simulasi masing-masing 0,50 token/detik dan 4 token/detikDengan
mmap, sistem operasi membaca secara reaktif ketika model menyentuh page, sehingga tidak tahu expert mana yang dipilih atau kapan pembacaan bisa dioverlap dengan kerja GPU. Bobot bersama masih memakaimmapdemi kesederhanaan, dan llama.cpp mungkin juga bisa berjalan di bawah 2GB, tetapi saya kira akan lebih lambatKalimat “hasil pengukuran adalah titik acuan, bukan batas atas performa” terlihat seperti ungkapan khas Claude
Kalau penulis hanya memakai LLM untuk merapikan kalimat dan tidak menambahkan hal yang tidak perlu, tidak masalah. Kalau tulisannya sendiri adalah hasil generatif yang tidak berguna, cukup beri skor rendah
Cukup impresif bahwa di M1 Max Mac Studio dengan SSD lebih cepat bisa mencapai 12 token per detik dan respons yang nyaris instan. Ini menunjukkan kemungkinan menjalankan model besar langsung dari SSD, bukan dari memori
Sekarang ada banyak engine streaming SSD, tetapi jarang yang mencoba fitur sulit. Karena model utama punya MTP head untuk speculative decoding, itu bisa dimanfaatkan untuk membaca lebih dulu bobot expert dari SSD
Jika bobot sudah siap sebelum dibutuhkan GPU, biaya VRAM cache miss bisa sangat dikurangi; jika terbukti efektif, model masa depan mungkin memiliki head khusus untuk prefetch expert dan mempertimbangkannya sejak tahap pelatihan
Dengan token draft yang dibuat MTP, kita bisa memprediksi expert sampai layer pertama, tetapi untuk mengetahui layer ke-10, kita harus menjalankan layer 1–9 sambil membaca expert terkait terlebih dahulu. Jadi yang dibutuhkan bukan generator token berikutnya, melainkan perangkat yang dilatih untuk memprediksi aktivasi expert semua layer sekaligus
Proyek untuk menjalankan DiffusionGemma juga hampir siap, dan jika kedua proyek digabungkan, kemungkinan cocok sekali. Di M3 36GB keluar sekitar 20 token per detik, dan besar kemungkinan keduanya bisa saling mengambil kernel yang lebih cepat
Kode saat ini ada di https://github.com/mmastrac/diffgemma, tetapi belum dalam kondisi siap rilis
Saya penasaran dengan pendapat Anda tentang ini
Saya penasaran mengapa ada selisih sebesar ini antara 5–6 token per detik pada MacBook Air M2 8GB dan 31–35 token per detik pada MacBook Pro M5. Rasanya perbedaan performa SSD tidak akan sebesar itu, tetapi dalam metode ini saya memperkirakan SSD akan menjadi bottleneck yang dominan
https://www.tomshardware.com/laptops/macbooks/m5-macbook-pro...
Jika total yang bisa dipakai hanya 2GB termasuk cache sistem operasi, kecepatan inferensi bisa menjadi lebih rendah
pread. Meski proses berada di bawah 2GB, Mac M5 dapat men-cache sebagian, dan perangkat kerasnya sendiri juga jauh lebih cepatPembacaan per token adalah 83ms pada M2 dan 12ms pada M5 Pro, sementara waktu total masing-masing 163ms dan 30ms. Ini hasil dari pembacaan dan pemrosesan GPU yang sama-sama lebih cepat
Ke depannya, saya berharap sistem dengan memori 30–60GB dan SSD yang sangat cepat dapat menjalankan model superbesar dengan teknik seperti ini
https://github.com/danveloper/flash-moe
https://github.com/JustVugg/colibri
https://github.com/antirez/ds4 atau buatan sendiri https://github.com/steadfastgaze/MoEspresso bisa digunakan. Karena expert untuk token berikutnya yang tidak ada di memori harus dibaca dari SSD, kecepatannya dibatasi oleh pembacaan SSD, dan semakin besar memori, semakin cepat inferensinya