Gemma 4 26B : Comment faire tourner un LLM en 2 Go de RAM
Découvrez comment TurboFare permet d’exécuter un modèle de 26 milliards de paramètres avec seulement 2 Go de RAM active grâce au streaming intelligent depuis le SSD
Si vous souhaitez exécuter localement un modèle de langage de 26 milliards de paramètres, les mathématiques standards sont brutales. Lorsque vous essayez de forcer un modèle de 14 Go dans un espace de 8 Go en utilisant des protocoles de chargement standard, le système d’exploitation panique, tentant de swapper rapidement les données entre le SSD et la RAM, entraînant un thrashing massif et un gel complet du système.
Les couches d’abstraction standard du machine learning et les wrappers génériques llama.cpp traitent le modèle comme un bloc unique. Ils s’attendent à tout charger d’un coup, ce qui crée immédiatement un goulot d’étranglement sur les machines d’entrée de gamme.
Mais TurboFare adopte une approche différente. C’est un runtime personnalisé spécifique au modèle, construit en Swift et Metal, conçu exclusivement pour contourner ce plafond mémoire. Il exécute avec succès le modèle Gemma 4 26B instruction-tuned en utilisant seulement 2 Go de RAM active, réalisant une réduction de sept fois de la surcharge mémoire.
TurboFare est disponible sur GitHub. Découvrez le code source et contribuez au projet : github.com/drumih/turbo-fieldfare
01 Le problème de la mémoire
Le diagramme ci-dessous compare les besoins de stockage de base par rapport au matériel Apple d’entrée de gamme :
Droite : MacBook M série limité à 8 Go
Résultat : Conflit mémoire immédiat
Charger le modèle complet en mémoire d’un coup fait du nombre de 26 milliards de paramètres un mur infranchissable pour les machines de 8 Go. Le matériel rejette simplement cette charge de travail massive.
02 L’architecture Mixture of Experts (MoE)
Le secret de ce budget de 2 Go réside dans l’architecture du modèle. Gemma 4 26B est construit sur une topologie Mixture of Experts (MoE).
Dans un modèle dense standard, chaque paramètre calcule chaque mot. Mais dans un MoE, seuls les experts routés sont actifs. Sur 26 milliards de paramètres totaux, seulement 3,88 milliards s’activent lors d’un seul calcul, car plus de 80% du modèle reste inactif à chaque étape.
Cette sparsité structurelle est le fondement mathématique qui permet à TurboFare de réduire son empreinte mémoire. Charger l’intégralité des 14,3 Go en mémoire simultanément gaspille un espace précieux.
03 La solution TurboFare
TurboFare réécrit la boucle d’inférence depuis zéro. Au lieu de s’appuyer sur la capacité brute de la RAM, il mise sur un I/O précis et à la demande du SSD vers Metal.
Répartition de la mémoire (2 Go)
Poids de base partagés
(résidents en RAM)
Cache KV + Buffer
(circulaire borné)
À partir du fichier modèle de 14,3 Go sur SSD, exactement 1,35 Go de poids de base partagés sont extraits et épinglés en permanence en RAM. La mémoire résidente restante (cache KV) se divise en deux chemins : un buffer circulaire borné et une configuration linéaire.
Tous les autres éléments, spécifiquement les experts routés, se voient refuser la résidence en RAM. Ils restent sur le SSD jusqu’à la milliseconde exacte où ils sont nécessaires.
Quantification : MLX 4-bit
Format : .turbo (streaming)
Transfert : SSD → Metal buffers (bypass RAM)Pour garantir que ces experts puissent voyager assez vite, ils sont compressés en utilisant la quantification 4-bit MLX, gardant leurs tailles de fichier petites et hautement portables.
04 Implémentation technique
Le pipeline de traitement
Le traitement d’un seul token se divise en branches CPU (routage) et GPU (calcul) :
- CPU Routing : Utilise des poids de routeur 8-bit pour calculer les top 8 experts requis
- Cache Query : Interroge un cache à 16 slots pour les experts en attente
- SSD Fetch : Si l’expert n’est pas en cache, déclenche une phase I/O immédiate avec des appels parallèles
- Direct to Metal : Stream les poids manquants du SSD directement dans les buffers visibles Metal
Le déplacement des données directement en mémoire visible Metal contourne complètement la surcharge de la mémoire système normale, gardant le transfert incroyablement serré.
Concurrence pour masquer la latence
Cette architecture a une vulnérabilité évidente : même les lectures SSD les plus rapides sont considérablement plus lentes que l’accès direct à la RAM. TurboFare utilise la concurrence pour masquer le délai :
Récupération experts
(bloqué)
Calcul expert partagé
(résident RAM)
Pendant que le CPU et le SSD sont occupés à récupérer les experts routés, le pipeline GPU ne reste pas inactif. Il calcule immédiatement la branche d’expert partagé en utilisant les poids résidents en RAM. Une fois que les experts SSD arrivent, les deux sorties se combinent parfaitement.
Chunked Prefill
Générer des tokens un par un n’est que la moitié du processus. Le moteur doit aussi ingérer le prompt initial de l’utilisateur (phase de prefill). TurboFare traite les prompts par blocs de 128 tokens maximum à la fois.
Cela permet à un seul expert récupéré du SSD d’être appliqué à plusieurs lignes de données simultanément, réutilisant un expert pour des dizaines de tokens, réduisant drastiquement la bande passante mémoire requise.
Streaming Repacker
Cette limitation stricte de la mémoire s’étend jusqu’au téléchargement initial du modèle depuis Hugging Face. Le streaming repacker télécharge les byte ranges distants et les emballe directement dans le format de fichier local .turbo sur le disque, contournant complètement toute étape où le checkpoint complet pourrait s’accumuler en mémoire active.
05 Performances réelles
La valeur de ce moteur repose entièrement sur sa qualité d’exécution en pratique. Voici les résultats du benchmark sur un MacBook Air M2 8 Go de base :
Ces vitesses fluctuent naturellement en fonction de la longueur de votre prompt, de l’état actuel du page cache et de vos spécifications matérielles exactes. Mais les chiffres de base prouvent la thèse centrale : l’inférence locale n’est plus strictement limitée par la quantité de RAM achetée.
La performance est désormais déterminée par la vitesse de lecture du SSD et l’ordonnancement intelligent, pas par la taille de la RAM.
06 Implications pour les ingénieurs
Pour les ingénieurs systèmes et les praticiens du machine learning, cela change la façon dont nous évaluons les contraintes matérielles :
- Les wrappers génériques offrent une commodité incroyable, mais leurs hypothèses mémoire monolithiques masquent ce que le matériel sous-jacent est réellement capable de traiter
- Pousser une machine d’entrée de gamme à sa limite absolue nécessite de construire directement pour son architecture
- Utiliser Swift et Metal permet d’extraire chaque once d’optimisation
Le projet réussit en laissant les mathématiques du transformer intactes et en réorganisant la façon dont le matériel gère la propriété des données. En orchestrant le CPU, le GPU et le SSD en un pipeline concurrent unifié, les ingénieurs peuvent déployer des réseaux d’IA massifs sur du matériel grand public qui était supposé être trop petit pour les exécuter.
Exécuter des modèles massifs sur du matériel contraint est un problème d’orchestration. Si vous contrôlez le pipeline de données, les limites de capacité disparaissent.

