Jak uruchomić model z 26 miliardami parametrów w dwóch gigabajtach pamięci na zwykłym Macu
Jeśli masz podstawowego MacBooka Air z M2 i 8 GB zunifikowanej pamięci, uruchamianie nowoczesnych modeli językowych zamienia się w smutną historię. Nawet skromny model z 14–20 miliardami parametrów po kwantyzacji 4-bitowej wymaga 10 do 16 GB pamięci RAM. System zaczyna agresywnie swapować dane na dysk, szybkość generowania spada do ułamków tokena na sekundę, a interfejs macOS zaczyna się zawieszać.
Inżynier Andrey Mikhailov rozwiązał ten problem niekonwencjonalnym trikiem inżynieryjnym. Napisał od podstaw środowisko uruchomieniowe o nazwie TurboFieldfare, które uruchamia instrukcję model Google Gemma 4 26B-A4B w zaledwie 2 GB pamięci RAM.
Na czym polega główny trik architektoniczny
Gemma 4 26B-A4B jest zbudowana na architekturze Mixture of Experts (MoE). Ma 26 miliardów parametrów łącznie, ale nie wszystkie warstwy są aktywowane do przetwarzania konkretnego tokena — tylko około 3,88 miliarda parametrów.
Zazwyczaj środowiska uruchomieniowe takie jak llama.cpp czy MLX ładują całą wagę modelu do pamięci przed rozpoczęciem pracy. Dla modelu Gemma w 4-bitowej kwantyzacji to około 14,3 GB. TurboFieldfare robi to inaczej:
- Współdzielone jądro modelu o wadze 1,35 GB oraz FP16 KV-cache dla kontekstu są przechowywane w trwałej pamięci RAM.
- Router modelu w każdej warstwie określa, którzy 8 ekspertów są potrzebni dla bieżącego tokena.
- Program sprawdza lokalny cache ekspertów w pamięci (16 slotów z algorytmem LFU).
- Jeśli wymagany ekspert nie znajduje się w RAM, środowisko uruchomieniowe szybko ładuje go bezpośrednio z SSD poprzez równoległe wywołania systemowe
preaddo buforów dostępnych dla Metal.
Gdy GPU oblicza współdzieloną gałąź ekspertów, równoległy wątek CPU zdąży odczytać brakujące wagi z pamięci masowej. W rezultacie szczytowe zużycie pamięci mieści się w około 2 GB.

Bez zależności od llama.cpp i MLX
Projekt jest napisany czysto w Swift 6.2 i Metal 4. Autor nie stworzył kolejnego wrappera wokół istniejących bibliotek C++ — napisał niestandardowe kernele GPU do kwantyzacji, mnożenia macierzy (GEMV), attention, MoE, normalizacji RMSNorm i RoPE.
Repozytorium zawiera cztery gotowe do użycia narzędzia:
TurboFieldfareMac— natywna aplikacja desktopowa zbudowana ze SwiftUI i AppKit z wbudowanym czatem, monitorowaniem pamięci i ustawieniami generowania.TurboFieldfareCLI— interfejs wiersza poleceń do wsadowego generowania i wykonywania sterowanego skryptami przez pliki wiadomości JSON.TurboFieldfareServer— lokalny serwer z API kompatybilnym ze specyfikacją OpenAI Chat Completions (http://127.0.0.1:8080/v1).TurboFieldfareRepack— narzędzie do strumieniowego pobierania wag z Hugging Face bezpośrednio do niestandardowego formatu.gturbo.
Instalator pobiera tylko wymagane zakresy bajtów i pakuje je w locie. Nie będziesz musiał najpierw pobierać 15 GB źródłowych wag, a potem trzymać kolejnych 15 GB przekonwertowanego pliku obok.
Rzeczywista wydajność
Strumieniowe odczyty z dysku nieuchronnie tworzą opóźnienia I/O. Nie ma cudów: szybkość generowania zależy bezpośrednio od przepustowości SSD i szybkiego cache.
Autor przeprowadził serię testów porównawczych na różnych generacjach Apple Silicon:
- Na podstawowym MacBooku Air M2 z 8 GB RAM szybkość osiąga 5,1–6,3 tokena na sekundę. To komfortowe tempo do czytania tekstu w czasie rzeczywistym.
- Na MacBooku Pro z M5 Pro i 24 GB pamięci szybkość generowania osiąga 31–35 tokenów na sekundę.
Do fazy prefill (przetwarzanie przychodzącego promptu) autor zaimplementował chunking na 128 tokenów. Pomaga to wywołać jednego załadowanego eksperta dla grupy wierszy na raz, wyraźnie redukując czas do pierwszego tokena.
Jak zbudować i uruchomić
Budowanie wymaga Maca z Apple Silicon z aktualną wersją macOS i Xcode z obsługą Swift 6.2.
Sklonuj repozytorium i zbuduj projekt w trybie release:
git clone https://github.com/drumih/turbo-fieldfare.git
cd turbo-fieldfare
swift build -c release
Po zbudowaniu uruchom natywną aplikację:
.build/release/TurboFieldfareMac
Przy pierwszym uruchomieniu kliknij przycisk Pobierz. Aplikacja pobierze model (wymagane około 15 GB wolnego miejsca na dysku) i przygotuje katalog scratch/gemma4.gturbo. Po zakończeniu pobierania kliknij Załaduj model i wprowadź zapytanie w polu tekstowym.
Jeśli wolisz konsolę, możesz pobrać model osobnym poleceniem:
swift run -c release TurboFieldfareRepack \
--output scratch/gemma4.gturbo \
--overwrite
Następnie przekaż plik dialogowy do CLI:
swift run -c release TurboFieldfareCLI \
--model scratch/gemma4.gturbo \
--messages-file messages.json
Aby połączyć lokalnych klientów jak OpenCode lub niestandardowe skrypty Python, po prostu uruchom serwer:
.build/release/TurboFieldfareServer --model scratch/gemma4.gturbo
Serwer nasłuchuje na porcie 8080 i udostępnia znajome punkty końcowe /v1/chat/completions z obsługą strumieniowania i wywoływania narzędzi.
Gdzie projekt przyda się w praktyce
To nie jest uniwersalny silnik dla dowolnych wag. TurboFieldfare jest ściśle dostosowany do jednego konkretnego modelu — Gemma 4 26B-A4B. Ale w swojej niszy projekt obejmuje kilka konkretnych scenariuszy:
- Lokalny asystent programisty na słabszych laptopach. Jeśli masz 8 GB RAM, uruchomienie modelu 26B w jakikolwiek inny sposób bez zamrożenia całego systemu jest praktycznie niemożliwe.
- Serwer działający w tle do wywoływania narzędzi i parsowania tekstu przez interfejs loopback bez wysyłania poufnych danych do chmury.
- Materiał edukacyjny do niskopoziomowej optymalizacji Metal. Repozytorium zawiera log 103 szczegółowych eksperymentów z benchmarkami szybkości odczytu, cache'owania i wydajności kerneli GPU.
Jeśli chcesz uruchamiać duże modele MoE lokalnie na podstawowym MacBooku lub interesuje Cię pisanie niestandardowych shaderów Metal dla ML, repozytorium zdecydowanie warto sklonować i przestudiować.
Powiązane projekty