>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Swift

Een model met 26 miljard parameters uitvoeren in twee gigabyte geheugen op een gewone Mac

Als je een basale MacBook Air met M2 en 8 GB unified memory hebt, wordt het uitvoeren van moderne taalmodellen een trieste zaak. Zelfs een bescheiden 14–20 miljard parameter model vereist na 4-bit kwantisatie 10 tot 16 GB RAM. Het systeem begint agressief data naar de schijf te swappen, de generatiesnelheid daalt tot fracties van een token per seconde, en de macOS-interface begint te bevriezen.

Ingenieur Andrey Mikhailov loste dit probleem op met een onconventionele technische truuc. Hij schreef van scratch een runtime genaamd TurboFieldfare die Googles instructiemodel Gemma 4 26B-A4B uitvoert in slechts 2 GB RAM.

TurboFieldfare logo: a fieldfare inside a segmented cache ring

Wat is de belangrijkste architectuurtruuc

Gemma 4 26B-A4B is gebouwd op een Mixture of Experts (MoE) architectuur. Het heeft 26 miljard parameters in totaal, maar niet alle lagen worden geactiveerd voor het verwerken van een specifiek token—alleen ongeveer 3,88 miljard parameters.

Typisch laden runtimes zoals llama.cpp of MLX alle gewichten van het model in het geheugen voordat ze beginnen met werken. Voor 4-bit Gemma is dat ongeveer 14,3 GB. TurboFieldfare doet dingen anders:

  • De gedeelde kern van het model (1,35 GB) en FP16 KV-cache voor context worden in persistent RAM gehouden.
  • De router van het model bij elke laag bepaalt welke 8 experts nodig zijn voor het huidige token.
  • Het programma controleert de lokale expert-cache in het geheugen (16 slots met een LFU-algoritme).
  • Als de benodigde expert niet in RAM zit, laadt de runtime deze snel rechtstreeks van SSD via parallelle systeemcalls pread in buffers die toegankelijk zijn voor Metal.

Terwijl de GPU de gedeelde expert-tak berekent, lukt het een parallelle CPU-thread om de ontbrekende gewichten uit de opslag te lezen. Als gevolg hiervan past het piekgeheugengebruik binnen ongeveer 2 GB.

TurboFieldfare Mac app generating text with Gemma 4 26B-A4B

Geen afhankelijkheden van llama.cpp en MLX

Het project is puur geschreven in Swift 6.2 en Metal 4. De auteur heeft geen nieuwe wrapper rond bestaande C++-bibliotheken gemaakt—hij schreef aangepaste GPU-kernels voor kwantisatie, matrixvermenigvuldiging (GEMV), attention, MoE, RMSNorm-normalisatie en RoPE.

De repository bevat vier kant-en-klare hulpprogramma's:

  1. TurboFieldfareMac — een native desktop-applicatie gebouwd met SwiftUI en AppKit met geïntegreerde chat, geheugenbewaking en generatie-instellingen.
  2. TurboFieldfareCLI — een command-line interface voor batchgeneratie en scriptgestuurde uitvoering via JSON-berichtbestanden.
  3. TurboFieldfareServer — een lokale server met een API compatibel met de OpenAI Chat Completions-specificatie (http://127.0.0.1:8080/v1).
  4. TurboFieldfareRepack — een hulpprogramma voor het streamen van gewichtsdownloads van Hugging Face rechtstreeks naar het aangepaste .gturbo-formaat.

De installer downloadt alleen de benodigde bytebereiken en pakt ze on the fly in. Je hoeft niet eerst 15 GB aan brongewichten te downloaden en vervolgens nog eens 15 GB aan het geconverteerde bestand ernaast te bewaren.

Praktische prestaties

Streamende leesoperaties van de schijf creëren onvermijdelijk I/O-latentie. Er zijn geen mirakels: de generatiesnelheid hangt direct af van SSD-doorvoer en een snelle cache.

De auteur voerde een reeks benchmarks uit op verschillende Apple Silicon-generaties:

  • Op een basale MacBook Air M2 met 8 GB RAM bereikt de snelheid 5,1–6,3 tokens per seconde. Dit is een comfortabel tempo voor het in realtime lezen van tekst.
  • Op een MacBook Pro met M5 Pro en 24 GB geheugen bereikt de generatiesnelheid 31–35 tokens per seconde.

Voor de prefill-fase (verwerking van de inkomende prompt) implementeerde de auteur chunking van 128 tokens. Dit helpt om een enkele geladen expert voor een groep rijen tegelijk aan te roepen, waardoor de time-to-first-token merkbaar afneemt.

Hoe te bouwen en uit te voeren

Bouwen vereist een Apple Silicon Mac met een actuele versie van macOS en Xcode met Swift 6.2-ondersteuning.

Kloon de repository en bouw het project in release-modus:

git clone https://github.com/drumih/turbo-fieldfare.git
cd turbo-fieldfare
swift build -c release

Na het bouwen start je de native applicatie:

.build/release/TurboFieldfareMac

Bij de eerste keer opstarten klik je op de knop Download. De app downloadt het model (ongeveer 15 GB vrije schijfruimte nodig) en bereidt de scratch/gemma4.gturbo-directory voor. Nadat de download is voltooid, klik je op Model laden en voer je je vraag in het invoerveld in.

Als je de console verkiest, kun je het model downloaden met een apart commando:

swift run -c release TurboFieldfareRepack \
  --output scratch/gemma4.gturbo \
  --overwrite

Geef vervolgens een dialoogbestand door aan de CLI:

swift run -c release TurboFieldfareCLI \
  --model scratch/gemma4.gturbo \
  --messages-file messages.json

En om lokale clients zoals OpenCode of aangepaste Python-scripts te verbinden, start je gewoon de server:

.build/release/TurboFieldfareServer --model scratch/gemma4.gturbo

De server luistert op poort 8080 en bedient de vertrouwde /v1/chat/completions endpoints met streaming en tool calling-ondersteuning.

Waar het project in de praktijk nuttig zal zijn

Dit is geen universele engine voor willekeurige gewichten. TurboFieldfare is strikt afgestemd op één specifiek model—Gemma 4 26B-A4B. Maar binnen zijn niche dekt het project verschillende concrete scenario's:

  • Lokale ontwikkelaarsassistent op low-end laptops. Als je 8 GB RAM hebt, is het op elke andere manier draaien van een 26B-model zonder het hele systeem te bevriezen praktisch onmogelijk.
  • Achtergrondserver voor tool calling en tekstparsing via de loopback-interface zonder vertrouwelijke gegevens naar de cloud te sturen.
  • Leermiddel voor low-level Metal-optimalisatie. De repository bevat een logboek van 103 gedetailleerde experimenten met benchmarks voor leessnelheden, caching en GPU-kernelprestaties.

Als je grote MoE-modellen lokaal wilt draaien op een basale MacBook of geïnteresseerd bent in het schrijven van aangepaste Metal-shaders voor ML, is de repository zeker de moeite waard om te klonen en te bestuderen.

Gerelateerde projecten