Cuando decides correr modelos de lenguaje locales en tu Mac, casi toda la documentación y tutoriales de internet te apuntan al mismo lugar: descarga Ollama o compila llama.cpp. Son las herramientas estándar y más populares del ecosistema. Como vimos en nuestra guía de hardware y modelos para LLMs locales, correr modelos en local requiere conocer bien los límites de tu máquina.
Sin embargo, la arquitectura de Apple Silicon es particular. Y tratar a tu Mac como si fuera una máquina x86 genérica con una tarjeta de video tradicional es desperdiciar la potencia de su memoria unificada.
En pruebas reales con agentes y tareas de larga duración, oMLX y llama.cpp demuestran comportamientos radicalmente opuestos.
Hoy te quiero enseñar la comparativa de rendimiento definitiva de oMLX vs llama.cpp para que sepas exactamente cuál elegir según las necesidades específicas de tus agentes de IA.
Latencia inicial vs. Velocidad sostenida
El error más común al medir la velocidad de una IA local es fijarse únicamente en la velocidad de generación final (tokens por segundo). En entornos reales, el rendimiento se divide en dos métricas críticas:
- TTFT (Time to First Token / Tiempo hasta el primer token): Es el tiempo que tarda la GPU en procesar el prompt de entrada antes de empezar a responder.
- Generación Sostenida: La velocidad pura de escritura una vez que el modelo ha empezado a hablar.
En las comparativas oficiales utilizando hardware idéntico y el modelo Qwen3.5-9B, los resultados arrojan una conclusión nítida:
- llama.cpp (Ollama / LM Studio): Es el rey indiscutible de la baja latencia (TTFT). Empieza a responder prácticamente al instante. Es la mejor opción para interfaces de chat interactivas donde el usuario espera una reacción visual inmediata.
- oMLX (Framework MLX): Aunque tarda unos segundos más en pre-procesar el prompt inicial (fase de prefill), su velocidad de generación sostenida es masiva, llegando a multiplicar por hasta 4.14x el rendimiento bajo concurrencia gracias a su arquitectura de continuous batching y caché SSD.
La batalla por la Memoria: ¿GGUF o MLX?
El formato de los pesos que descargas determina cómo el servidor exprime tu hardware:
llama.cpp y el ecosistema GGUF
El formato GGUF está sumamente optimizado para ejecutarse en memorias ajustadas (como portátiles de 16GB de RAM). Puedes correr modelos cuantizados ligeros consumiendo muy pocos recursos del sistema, lo que te permite mantener otras aplicaciones abiertas sin comprometer el rendimiento general de tu Mac.
oMLX y los directorios MLX
oMLX trabaja exclusivamente con formatos nativos de MLX. Este formato espera que el modelo cargue directamente sobre la memoria unificada Metal de Apple Silicon. Para exprimirlo en tareas pesadas de código o multi-agente, el sweet spot recomendado de hardware sube a 64GB de RAM unificada o superior.
Si cuentas con ese hardware, oMLX utiliza su pila de caché de dos niveles (PagedSSDCacheManager y PagedCacheManager) para mover las partes frías del contexto de tu IDE al SSD de tu Mac, permitiendo restaurar prefijos de forma inmediata sin re-computar y ahorrando gigabytes de memoria real.
Cuándo elegir cada motor para tus Agentes
La decisión arquitectónica óptima es sencilla si analizas el caso de uso:
Elige oMLX si:
- Estás desarrollando con agentes autónomos multitarea en segundo plano (como Hermes Agent) que envían múltiples peticiones paralelas gracias al continuous batching.
- Trabajas con contextos de código muy largos donde la reutilización de prefijos de caché de oMLX evita tener que procesar todo el repositorio en cada llamada.
- Tienes un Mac de desarrollo de gama alta (32GB, 64GB o Studio/Mini dedicados).
Elige llama.cpp (Ollama) si:
- Tu flujo de trabajo es puramente interactivo (un chat directo uno a uno donde el TTFT es prioritario).
- Corres la IA en movilidad en un portátil con recursos de RAM ajustados (16GB).
- Necesitas portabilidad multiplataforma (escribir scripts que deban correr idénticos tanto en macOS como en Windows o servidores Linux).
Esta comparativa y análisis de optimización de infraestructura local es la que ponemos en práctica en el curso de Construye con IA para calibrar entornos y que detallamos a nivel de código de bajo nivel en el nuevo curso de Hermes Agent.
Conclusión: El software correcto para el silicio correcto
No limites el rendimiento de tu hardware Apple Silicon por usar loaders de propósito general. Entender cuándo delegar tus tareas a llama.cpp para interactividad rápida o a oMLX para tareas pesadas de automatización autónoma te dará una ventaja competitiva masiva en velocidad y coste de computación local.
Si quieres debatir con otros desarrolladores senior sobre benchmarks de modelos locales y optimización de cachés, te espero en Dominicode Labs.
Preguntas Frecuentes (FAQ)
¿Cuál es el sweet spot de hardware para usar oMLX en Mac?
Aunque puede funcionar en máquinas con 16GB de memoria unificada utilizando modelos pequeños de 7B u 8B parámetros bien cuantizados, oMLX destaca especialmente en configuraciones de 64GB de RAM o más. En estas capacidades, permite cargar múltiples modelos en paralelo y utilizar cachés de contexto masivas sin swap de disco ralentizado.
¿Se pueden convertir modelos de formato Hugging Face a MLX de forma sencilla?
Sí. La librería oficial de Apple mlx-lm incluye una utilidad de consola muy sencilla. Ejecutando python -m mlx_lm.convert --hf-path autor/modelo -q puedes descargar, convertir y cuantizar cualquier modelo compatible directamente desde Hugging Face a tu máquina en formato nativo para oMLX.
¿Cómo ayuda el continuous batching de oMLX a los agentes de IA?
Si ejecutas sub-agentes paralelos (por ejemplo, un agente de código y un agente de testing al mismo tiempo), llama.cpp clásico procesará sus peticiones de forma secuencial (encolándolas). oMLX las agrupa de forma dinámica en la GPU de Apple, procesando ambas respuestas simultáneamente sin duplicar la latencia.
¿Ollama soporta el formato nativo de MLX?
No. Ollama está basado en llama.cpp y su arquitectura interna gira en torno a la carga y ejecución de archivos en formato GGUF. Para correr modelos en formato MLX utilizando aceleración nativa pura de Apple, debes utilizar servidores específicos del ecosistema como oMLX o el servidor propio de mlx-lm.
Por Bezael Pérez — Developer senior con más de 15 años de experiencia y fundador de Dominicode.

Leave a Reply