Come eseguire un modello da 26 miliardi di parametri in due gigabyte di memoria su un Mac normale
Se hai un MacBook Air base con M2 e 8 GB di memoria unificata, eseguire modelli linguistici moderni diventa una storia triste. Anche un modello modesto da 14-20 miliardi di parametri dopo la quantizzazione a 4 bit richiede 10-16 GB di RAM. Il sistema inizia a swappare aggressivamente i dati su disco, la velocità di generazione scende a frazioni di token al secondo, e l'interfaccia macOS inizia a bloccarsi.
L'ingegnere Andrey Mikhailov ha risolto questo problema con un trucco ingegneristico non convenzionale. Ha scritto da zero un runtime chiamato TurboFieldfare che esegue il modello istruito Gemma 4 26B-A4B di Google in soli 2 GB di RAM.
Qual è il trucco principale dell'architettura
Gemma 4 26B-A4B è basato su un'architettura Mixture of Experts (MoE). Ha 26 miliardi di parametri in totale, ma non tutti i layer vengono attivati per elaborare un token specifico—solo circa 3,88 miliardi di parametri.
Tipicamente, i runtime come llama.cpp o MLX caricano tutti i pesi del modello in memoria prima di iniziare il lavoro. Per Gemma a 4 bit, sono circa 14,3 GB. TurboFieldfare fa le cose in modo diverso:
- Il nucleo condiviso del modello che pesa 1,35 GB e la KV-cache FP16 per il contesto vengono mantenuti in RAM persistente.
- Il router del modello a ogni layer determina quali 8 esperti sono necessari per il token corrente.
- Il programma controlla la cache locale degli esperti in memoria (16 slot con algoritmo LFU).
- Se l'esperto richiesto non è in RAM, il runtime lo carica rapidamente direttamente da SSD tramite chiamate di sistema parallele
preadin buffer accessibili a Metal.
mentre la GPU calcola il branch dell'esperto condiviso, un thread CPU parallelo riesce a leggere i pesi mancanti dallo storage. Di conseguenza, il consumo di memoria di picco rientra in circa 2 GB.

Senza dipendenze da llama.cpp e MLX
Il progetto è scritto puramente in Swift 6.2 e Metal 4. L'autore non ha creato un altro wrapper attorno a librerie C++ esistenti—ha scritto kernel GPU personalizzati per la quantizzazione, la moltiplicazione di matrici (GEMV), l'attenzione, MoE, la normalizzazione RMSNorm e RoPE.
Il repository include quattro utility pronte all'uso:
TurboFieldfareMac— un'applicazione desktop nativa costruita con SwiftUI e AppKit con chat integrata, monitoraggio della memoria e impostazioni di generazione.TurboFieldfareCLI— un'interfaccia a riga di comando per la generazione batch e l'esecuzione guidata da script tramite file di messaggi JSON.TurboFieldfareServer— un server locale con un'API compatibile con la specifica OpenAI Chat Completions (http://127.0.0.1:8080/v1).TurboFieldfareRepack— un'utility per lo streaming del download dei pesi da Hugging Face direttamente nel formato personalizzato.gturbo.
L'installer scarica solo gli intervalli di byte richiesti e li impacchetta al volo. Non dovrai prima scaricare 15 GB di pesi sorgente e poi mantenere altri 15 GB del file convertito accanto ad esso.
Prestazioni nel mondo reale
Le letture streaming dal disco creano inevitabilmente latenza I/O. Non ci sono miracoli: la velocità di generazione dipende direttamente dalla velocità effettiva dell'SSD e da una cache veloce.
L'autore ha condotto una serie di benchmark attraverso diverse generazioni di Apple Silicon:
- Su un MacBook Air M2 base con 8 GB di RAM, la velocità raggiunge 5,1-6,3 token al secondo. Questo è un ritmo confortevole per leggere il testo in tempo reale.
- Su un MacBook Pro con M5 Pro e 24 GB di memoria, la velocità di generazione raggiunge 31-35 token al secondo.
Per la fase di prefill (elaborazione del prompt in entrata), l'autore ha implementato il chunking a 128 token. Questo aiuta a invocare un singolo esperto caricato per un gruppo di righe contemporaneamente, riducendo visibilmente il tempo per il primo token.
Come compilare ed eseguire
La compilazione richiede un Mac Apple Silicon che esegue una versione corrente di macOS e Xcode con supporto per Swift 6.2.
Clona il repository e compila il progetto in modalità release:
git clone https://github.com/drumih/turbo-fieldfare.git
cd turbo-fieldfare
swift build -c release
Dopo la compilazione, avvia l'applicazione nativa:
.build/release/TurboFieldfareMac
Al primo avvio, clicca sul pulsante Download. L'app scaricherà il modello (sono necessari circa 15 GB di spazio libero su disco) e preparerà la directory scratch/gemma4.gturbo. Dopo che il download è completato, clicca su Load Model e inserisci la tua query nel campo di input.
Se preferisci la console, puoi scaricare il modello con un comando separato:
swift run -c release TurboFieldfareRepack \
--output scratch/gemma4.gturbo \
--overwrite
Quindi passa un file di dialogo alla CLI:
swift run -c release TurboFieldfareCLI \
--model scratch/gemma4.gturbo \
--messages-file messages.json
E per connettere client locali come OpenCode o script Python personalizzati, basta avviare il server:
.build/release/TurboFieldfareServer --model scratch/gemma4.gturbo
Il server ascolta sulla porta 8080 e serve gli endpoint familiari /v1/chat/completions con supporto per streaming e tool calling.
Dove il progetto sarà utile in pratica
Questo non è un motore universale per qualsiasi peso. TurboFieldfare è strettamente adattato per un modello specifico—Gemma 4 26B-A4B. Ma all'interno della sua nicchia, il progetto copre diversi scenari concreti:
- Assistente sviluppatore locale su laptop di fascia bassa. Se hai 8 GB di RAM, eseguire un modello 26B in qualsiasi altro modo senza bloccare l'intero sistema è praticamente impossibile.
- Server in background per tool calling e parsing del testo tramite l'interfaccia loopback senza inviare dati riservati al cloud.
- Risorsa di apprendimento per l'ottimizzazione Metal di basso livello. Il repository include un log di 103 esperimenti dettagliati con benchmark per velocità di lettura, caching e prestazioni dei kernel GPU.
Se vuoi eseguire modelli MoE di grandi dimensioni localmente su un MacBook base o sei interessato a scrivere shader Metal personalizzati per ML, il repository vale sicuramente la pena di essere clonato e studiato.
Progetti correlati