Cómo ejecutar un modelo de 26 mil millones de parámetros en dos gigabytes de memoria en un Mac normal
Si tienes un MacBook Air básico con M2 y 8 GB de memoria unificada, ejecutar modelos de lenguaje modernos se convierte en una historia triste. Incluso un modesto modelo de 14–20 mil millones de parámetros después de la cuantización de 4 bits requiere de 10 a 16 GB de RAM. El sistema comienza a intercambiar agresivamente datos al disco, la velocidad de generación cae a fracciones de un token por segundo, y la interfaz de macOS comienza a congelarse.
El ingeniero Andrey Mikhailov resolvió este problema con un truco de ingeniería poco convencional. Escribió desde cero un runtime llamado TurboFieldfare que ejecuta el modelo de instrucciones Gemma 4 26B-A4B de Google en apenas 2 GB de RAM.
¿Cuál es el truco principal de la arquitectura?
Gemma 4 26B-A4B está construido sobre una arquitectura de Mezcla de Expertos (MoE). Tiene 26 mil millones de parámetros en total, pero no todas las capas se activan para procesar un token específico: solo unos 3.88 mil millones de parámetros.
Normalmente, los runtimes como llama.cpp o MLX cargan todos los pesos del modelo en memoria antes de comenzar a trabajar. Para Gemma de 4 bits, eso son unos 14.3 GB. TurboFieldfare hace las cosas de manera diferente:
- El núcleo compartido del modelo que pesa 1.35 GB y el caché KV en FP16 para el contexto se mantienen en RAM persistente.
- El enrutador del modelo en cada capa determina qué 8 expertos se necesitan para el token actual.
- El programa verifica el caché local de expertos en memoria (16 ranuras con un algoritmo LFU).
- Si el experto requerido no está en RAM, el runtime lo carga rápidamente directamente desde el SSD a través de llamadas al sistema paralelas
preaden búfers accesibles para Metal.
Mientras la GPU calcula la rama de experto compartida, un hilo CPU paralelo gestiona leer los pesos faltantes del almacenamiento. Como resultado, el consumo máximo de memoria cabe en aproximadamente 2 GB.

Sin dependencias de llama.cpp y MLX
El proyecto está escrito puramente en Swift 6.2 y Metal 4. El autor no creó otro wrapper alrededor de bibliotecas C++ existentes: escribió kernels GPU personalizados para cuantización, multiplicación de matrices (GEMV), atención, MoE, normalización RMSNorm y RoPE.
El repositorio incluye cuatro utilidades listas para usar:
TurboFieldfareMac— una aplicación de escritorio nativa construida con SwiftUI y AppKit con chat integrado, monitoreo de memoria y configuración de generación.TurboFieldfareCLI— una interfaz de línea de comandos para generación por lotes y ejecución controlada por scripts a través de archivos de mensajes JSON.TurboFieldfareServer— un servidor local con una API compatible con la especificación de Finalizaciones de Chat de OpenAI (http://127.0.0.1:8080/v1).TurboFieldfareRepack— una utilidad para transmitir descargas de pesos desde Hugging Face directamente al formato personalizado.gturbo.
El instalador descarga solo los rangos de bytes requeridos y los empaqueta sobre la marcha. No necesitarás primero descargar 15 GB de pesos de origen y luego mantener otros 15 GB del archivo convertido junto a él.
Rendimiento en el mundo real
Las lecturas de streaming desde el disco inevitablemente crean latencia de E/S. No hay milagros: la velocidad de generación depende directamente del rendimiento del SSD y un caché rápido.
El autor realizó una serie de benchmarks en diferentes generaciones de Apple Silicon:
- En un MacBook Air M2 básico con 8 GB de RAM, la velocidad alcanza 5.1–6.3 tokens por segundo. Este es un ritmo cómodo para leer texto en tiempo real.
- En un MacBook Pro con M5 Pro y 24 GB de memoria, la velocidad de generación alcanza 31–35 tokens por segundo.
Para la fase de prefill (procesamiento del prompt entrante), el autor implementó fragmentación en 128 tokens. Esto ayuda a invocar un solo experto cargado para un grupo de filas a la vez, reduciendo notablemente el tiempo hasta el primer token.
Cómo compilar y ejecutar
La compilación requiere un Mac con Apple Silicon ejecutando una versión actual de macOS y Xcode con soporte para Swift 6.2.
Clona el repositorio y compila el proyecto en modo release:
git clone https://github.com/drumih/turbo-fieldfare.git
cd turbo-fieldfare
swift build -c release
Después de compilar, lanza la aplicación nativa:
.build/release/TurboFieldfareMac
En el primer lanzamiento, haz clic en el botón Descargar. La aplicación descargará el modelo (se requieren unos 15 GB de espacio libre en disco) y preparará el directorio scratch/gemma4.gturbo. Después de que se complete la descarga, haz clic en Cargar Modelo e ingresa tu consulta en el campo de entrada.
Si prefieres la consola, puedes descargar el modelo con un comando separado:
swift run -c release TurboFieldfareRepack \
--output scratch/gemma4.gturbo \
--overwrite
Luego pasa un archivo de diálogo al CLI:
swift run -c release TurboFieldfareCLI \
--model scratch/gemma4.gturbo \
--messages-file messages.json
Y para conectar clientes locales como OpenCode o scripts personalizados de Python, simplemente levanta el servidor:
.build/release/TurboFieldfareServer --model scratch/gemma4.gturbo
El servidor escucha en el puerto 8080 y sirve los endpoints familiares /v1/chat/completions con soporte para streaming y llamadas a herramientas.
Dónde será útil el proyecto en la práctica
Este no es un motor universal para cualquier peso. TurboFieldfare está estrictamente adaptado para un modelo específico: Gemma 4 26B-A4B. Pero dentro de su nicho, el proyecto cubre varios escenarios concretos:
- Asistente de desarrollo local en laptops de gama baja. Si tienes 8 GB de RAM, ejecutar un modelo de 26B de cualquier otra manera sin congelar todo el sistema es prácticamente imposible.
- Servidor en segundo plano para llamadas a herramientas y análisis de texto a través de la interfaz loopback sin enviar datos confidenciales a la nube.
- Recurso de aprendizaje para optimización de Metal de bajo nivel. El repositorio incluye un registro de 103 experimentos detallados con benchmarks para velocidades de lectura, caché y rendimiento de kernels GPU.
Si quieres ejecutar grandes modelos MoE localmente en un MacBook básico o estás interesado en escribir shaders Metal personalizados para aprendizaje automático, definitivamente vale la pena clonar y estudiar el repositorio.
Proyectos relacionados