1 poin oleh GN⁺ 3 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • 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 pread paralel
  • 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 .gturbo yang 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 pread paralel
    • Selama pembacaan SSD berlangsung, Metal menghitung cabang shared-expert yang selalu ada di memori
    • Setelah pembacaan selesai, output shared dan output routed digabungkan
  • 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
  • Setelah instalasi selesai, model memakai sekitar 14.3GB ruang penyimpanan, dan proses instalasi sendiri tidak memuat model ke memori
  • Runtime hanya menerima direktori .gturbo lengkap yang memiliki manifest.json akhir
  • 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 Metal
    • TurboFieldfareMac: aplikasi Mac native untuk instalasi dan generasi
    • TurboFieldfareDecodeService: proses lokal sekali jalan yang memiliki model dan Metal, dipakai oleh aplikasi Mac
    • TurboFieldfareCLI: chat instruction baris perintah dan raw completion
    • TurboFieldfareServer: server Chat Completions kompatibel OpenAI di loopback
    • TurboFieldfareRepack: 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-new adalah 1.024 token
    • Aplikasi Mac dapat terus menghasilkan hingga context window yang dipilih penuh
  • --prompt dipakai 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-K 64, dan Top-P 0.95
    • Jika temperature diatur ke 0, digunakan output greedy yang deterministik
    • Model bisa mengulang atau menjawab keliru, jadi hasil penting perlu diverifikasi
  • 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 --stop yang dapat diulang

Server lokal kompatibel OpenAI

  • Server eksperimental berjalan di 127.0.0.1:8080/v1 dan 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 .gturbo yang 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

 
GN⁺ 3 jam lalu
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

    • Menyimpan seluruh model di memori jauh lebih cepat daripada menukarnya dengan disk
    • Pada dasarnya ini menjelaskan arsitektur mixture of experts (MoE). Jika layer expert cukup kecil dan SSD cepat, ia bisa dimuat hanya saat diperlukan
      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_0
    Menurut 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

    • Info yang berguna. Nanti mungkin saya bisa menurunkan versi minimum yang didukung
      Peningkatan prefill 2,4× hanya bekerja pada lini GPU apple10, sedangkan M1 seingat saya apple7
  • Saya penasaran bagaimana proyek ini dibandingkan dengan mmap biasa. llama.cpp juga bisa menjalankan model 26B dengan RAM 2GB jika mmap diaktifkan dan repacking dimatikan
    Perbedaan utamanya tampaknya ada pada sinkronisasi pembacaan SSD dengan proses inferensi untuk meminimalkan latensi, sementara sistem operasi tidak mempertimbangkan konteks eksekusi semacam ini

    • Versi pertama menggunakan mmap. Di M2 8GB, membaca expert 3,36MB dari kondisi dingin membutuhkan 10ms dengan mmap, sedangkan pread 2,8ms, dan keseluruhan simulasi masing-masing 0,50 token/detik dan 4 token/detik
      Dengan 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 memakai mmap demi kesederhanaan, dan llama.cpp mungkin juga bisa berjalan di bawah 2GB, tetapi saya kira akan lebih lambat
    • Untuk memastikan kecepatan sebenarnya, saya ingin membandingkannya langsung dengan SSD offloading di llama.cpp
  • Kalimat “hasil pengukuran adalah titik acuan, bukan batas atas performa” terlihat seperti ungkapan khas Claude

    • Ungkapan seperti ini sudah begitu tersebar luas sampai saya khawatir, setelah terus membaca gaya Claude, saya sendiri akan ikut tertular kebiasaan yang sama
    • “Saya bereksperimen lebih dari 100 kali dan sebagian besar gagal, tetapi beberapa membawa sampai ke sini” juga terasa seperti jejak yang sama
    • Kemungkinan besar awalnya itu ungkapan ala ChatGPT, tetapi saya tidak akan serta-merta menuduhnya menyuling perusahaan Barat. Bisa saja blog resep setelah 2022 masuk ke data pelatihan sekitar versi 4.6–4.8
    • Menurut saya sudah waktunya berhenti membuat penilaian seperti ini. Itu tidak ada bedanya dengan bentuk baru polisi tata bahasa dan tidak menambah banyak nilai
      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

    • Sayangnya, di sini kecepatan baca SSD menjadi bottleneck terbesar
  • 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

    • Dalam streaming SSD, GPU hampir selalu menunggu SSD sampai expert yang benar diambil, jadi di sisi SSD nyaris tidak ada ruang untuk membaca lebih dulu. Kalau expert yang diprediksi salah dibaca, justru rugi, dan karena itu dalam lingkungan batch kecil yang umum, MTP yang ada pun tidak banyak membantu
    • Praktiknya lebih sulit daripada yang terlihat. Setiap layer punya himpunan expert yang berbeda, dan router kecil menentukan expert yang akan digunakan dengan melihat status output expert layer di bawahnya
      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 baru-baru ini melihatnya, tetapi menyimpulkan bahwa menjalankan model difusi secara lokal tidak banyak manfaat praktisnya: https://eamag.me/2026/why-parallel-diffusion-llms-are-slow-o...
      Saya penasaran dengan pendapat Anda tentang ini
    • Diffusion Gemma muncul di tengah proyek sehingga saya sempat serius mempertimbangkan untuk beralih, tetapi akhirnya memutuskan menyelesaikan arah yang sudah ada. Kedua proyek tampaknya akan sangat cocok, dan silakan gunakan kode yang diperlukan atau hubungi lewat LinkedIn di akhir README
  • 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

    • Peningkatan performa SSD pada M5 memang signifikan dibanding generasi sebelumnya. Dalam Blackmagic Disk Speed Test, MacBook Pro M5 mencatat hingga 6.323MB/s, sedangkan MacBook Pro M4 mencatat 2.031MB/s, selisih lebih dari 3 kali lipat
      https://www.tomshardware.com/laptops/macbooks/m5-macbook-pro...
    • Kemungkinan besar karena memori M5 lebih besar sehingga sistem operasi sudah men-cache sebagian besar file. Pada M2, tekanan memori lebih tinggi sehingga hasil pembacaan SSD akan lebih sedikit di-cache
      Jika total yang bisa dipakai hanya 2GB termasuk cache sistem operasi, kecepatan inferensi bisa menjadi lebih rendah
    • Metode ini sangat bergantung pada cache sistem dan pread. Meski proses berada di bawah 2GB, Mac M5 dapat men-cache sebagian, dan perangkat kerasnya sendiri juga jauh lebih cepat
      Pembacaan 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
    • Karena generasinya sudah lebih lama, SSD-nya jauh lebih lambat bahkan jika dibandingkan sesama Pro, dan dalam generasi yang sama pun SSD serta bandwidth memori pada Air kemungkinan lebih rendah daripada Pro
    • MacBook Pro M5 memiliki RAM 24GB, jadi mungkin juga dapat menyimpan konteks lebih banyak di memori
  • Ke depannya, saya berharap sistem dengan memori 30–60GB dan SSD yang sangat cepat dapat menjalankan model superbesar dengan teknik seperti ini