AI Development

vMLX en 2026: Tu Mac Como Servidor de Inferencia

22 de septiembre de 2026
9 min de lectura
Clúster de Macs corriendo inferencia de IA local
Compartir:

Si tenés una Mac con Apple Silicon, estás sentado sobre un servidor de inferencia y quizás no lo sabés. vMLX — github.com/jjang-ai/vmlx, ~860 estrellas y licencia Apache 2.0 — es el motor de inferencia MLX más completo para Mac: un comando sirve cualquier modelo de mlx-community detrás de una API compatible con OpenAI, Anthropic y Ollama.

En esta guía te muestro qué es, cómo funciona su arquitectura de rendimiento en 4 pasos, cómo correrlo en 5 minutos con vmlx serve y — igual de importante — cuándo NO deberías usarlo.

Ficha del Repo

Repo

jjang-ai/vmlx

Estrellas

~860 (Sep 2026)

Licencia

Apache 2.0

Instalación

pip install vmlx

API

OpenAI + Anthropic + Ollama

App

MLX Studio (vmlx.net)

1. Qué Es vMLX (y Qué No Es)

vMLX es un servidor de inferencia self-hosted para LLMs, VLMs y generación de imágenes en Apple Silicon, construido sobre el framework MLX de Apple con aceleración GPU vía Metal. Lo apuntás a cualquier repo de mlx-community en Hugging Face — Qwen, Llama 4, Gemma 4, DeepSeek V4, Kimi, Mistral, Nemotron-3-Omni — y lo sirve en http://localhost:8000 con el mismo formato de OpenAI. Sin nube, sin API keys, nada sale de tu máquina.

Lo que no es: no es un framework de entrenamiento, no es un servidor CUDA y no es multiplataforma. Solo corre en macOS con Apple Silicon (M1–M4) y Python 3.11+. Si tu flota es NVIDIA, lo tuyo es vLLM o SGLang — los comparo en un post relacionado al final.

Un Servidor, Tres APIs

El mismo puerto habla POST /v1/chat/completions (OpenAI), POST /v1/messages (Anthropic) y POST /api/chat (Ollama), además de embeddings, rerank, STT con Whisper y TTS con Kokoro. Apuntá el SDK de OpenAI, Anthropic o la CLI de Ollama sin cambios — hasta OLLAMA_HOST=http://localhost:8080 ollama run funciona vía el gateway del desktop.

2. La Arquitectura en 4 Pasos

Cada request pasa por el mismo pipeline. Entender estas cuatro capas es lo que separa “corre” de “vuelo”:

🧠

Paso 1 — Motor nativo MLX

memoria unificada · kernels Metal

El motor Python/FastAPI delega en mlx-lm (texto), mlx-vlm (visión), mflux (generación con Flux) y mlx-audio (voz). Pesos, activaciones y caché KV viven en memoria unificada — sin copias CPU↔GPU.

🌊

Paso 2 — Batching continuo

flag: --continuous-batching

Múltiples requests concurrentes comparten un forward pass en vez de hacer cola. Este es el flag que convierte al servidor en multi-usuario en lugar de una demo.

vmlx serve mlx-community/Llama-3.2-3B-Instruct-4bit --continuous-batching
🗄️

Paso 3 — Caché de 5 capas

prefijos · paged · disco L2 · cuant KV

La caché KV de prefijos/paged en L1 reutiliza el prefill (el proyecto reporta hasta ~9.7x más rápido el primer token con caché, M3 Ultra, Feb 2026); la caché de disco L2 sobrevive reinicios; la cuantización KV q4/q8 comprime lo guardado 2–4x.

vmlx serve mlx-community/Llama-3.2-3B-Instruct-4bit --continuous-batching --enable-prefix-cache --use-paged-cache

Paso 4 — Decodificación rápida

--enable-pld · draft especulativo

Prompt-Lookup Decoding reutiliza n-gramas del prompt — sin modelo draft, ideal para código y JSON. El speculative decoding clásico con un draft chico da speedups de 20–90% en modelos soportados.

vmlx serve mlx-community/Qwen3-8B-4bit --continuous-batching --enable-pld

Los Dos Multiplicadores: JANG + Multi-Mac

JANG mixed-precision adaptativo asigna distintos bits por tipo de capa (atención 8-bit, MLP 2–3 bit) — JANG_3M (~3.2 bits promedio) es el perfil recomendado, y hay modelos pre-cuantizados bajo JANGQ-AI en Hugging Face. Para modelos que exceden una Mac, el pipeline parallelism reparte capas entre máquinas por Thunderbolt/Ethernet: los workers corren vmlx-worker --secret y el coordinador vmlx serve <modelo> --distributed --cluster-secret.

3. Quickstart: De Cero a Servidor en 5 Minutos

Requisitos, verificados en la doc: macOS en Apple Silicon, Python 3.11+, 8 GB de RAM mínimo (16 GB+ recomendado). La instalación tiene tres caminos documentados:

Instalación (elegí UNA — uv es lo recomendado)

# Recomendado: uv (sin lío de venv)
brew install uv
uv tool install vmlx

# O: pipx (aislado del Python del sistema)
brew install pipx
pipx install vmlx

# O: pip dentro de un entorno virtual
python3 -m venv ~/.vmlx-env && source ~/.vmlx-env/bin/activate
pip install vmlx

Serví tu primer modelo

vmlx serve mlx-community/Qwen3-8B-4bit
# Servidor vivo en http://0.0.0.0:8000 (API OpenAI + Anthropic)

Llamalo con el SDK de OpenAI (código sin cambios)

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
resp = client.chat.completions.create(
    model="local",
    messages=[{"role": "user", "content": "¡Hola!"}],
    stream=True,
)
for chunk in resp:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Cuantizá con JANG (perfil recomendado JANG_3M)

pip install "vmlx[jang]"
vmlx convert my-model --jang-profile JANG_3M
vmlx serve ./my-model-JANG_3M --continuous-batching --use-paged-cache

Extras de imagen + audio (dependencias opcionales)

pip install "vmlx[image]"   # Flux schnell/dev vía mflux
vmlx serve schnell

pip install mlx-audio       # TTS Kokoro + STT Whisper
vmlx serve kokoro --port 8002

La Trampa del venv en macOS 14+

En macOS 14+, pip install pelado falla con “externally-managed-environment”. No es un bug de vMLX — es la protección de Apple/Python (PEP 668). Usá uv, pipx o un venv como arriba. Si no querés tocar la terminal, la app de escritorio (MLX Studio, DMG firmado para Tahoe/Sequoia) trae su propio Python 3.12.

Verificá Que Funciona

curl http://localhost:8000/health para el servidor, GET /v1/models para listar modelos cargados y GET /v1/cache/stats para confirmar hits de prefijo. Si un modelo explota la memoria, bajá a un build cuantizado más chico (ej. Llama-3.2-1B-Instruct-4bit) antes de tocar flags.

4. Casos de Uso Reales

vMLX brilla donde ya hay una Mac sobre el escritorio. Estos son los cuatro casos donde lo elegiría primero:

💻

Loop de desarrollo local para agentes

Claude Code, OpenCode, Continue o Cursor apuntados a localhost:8000 te dan un backend de modelos offline y de costo cero para tool-calling y structured output mientras iterás.

🏠

Drop-in de OpenAI para el home-lab

Una Mac siempre encendida sirviendo la familia de modelos mlx-community a cada script, notebook y side project de tu LAN — mismo código SDK que con OpenAI en producción.

🔗

Clúster de dos Macs para modelos gigantes

El pipeline parallelism por Thunderbolt permite que dos o tres Macs sirvan juntas modelos MoE (ej. builds JANG de clase ~400B) que no entran en ninguna máquina sola.

🎨

Esquina multimodal: imagen + voz

Flux Schnell text-to-image, edición de imágenes por instrucciones con Qwen, voces TTS de Kokoro (incluye español) y STT con Whisper — todo desde el mismo servidor.

5. La Parte Honesta: macMLX y Cuándo NO Usar vMLX

Ningún review está completo sin sus límites. Acá va el contraste y las líneas rojas, todo desde la doc oficial de cada proyecto:

Un Párrafo Sobre macMLX (la alternativa nativa Swift)

Si el core Python/FastAPI de vMLX te molesta, macMLX (macmlx.app, Apache 2.0) es el contrapunto nativo: motor de inferencia escrito en Swift corriendo in-process, app de ~50 MB, cero runtime de Python, API compatible con OpenAI siempre activa en macOS 14+ Apple Silicon. Regla práctica: vMLX para la mayor cobertura de modelos y extensibilidad Python (ecosistema JANG, mflux, mlx-audio); macMLX para la huella nativa más liviana en una sola Mac.

⛔ NO uses vMLX cuando…

  • Estás en Linux, Windows o GPUs NVIDIA — vMLX es solo Apple Silicon. Ahí van vLLM o SGLang.
  • Necesitás tensor parallelism CUDA multi-GPU a escala datacenter — ese es territorio vLLM/SGLang, no un servidor Mac.
  • Querés Smelt (carga parcial de expertos) Y entrada de visión a la vez — Smelt desactiva el modo VLM automáticamente (visión sobre un modelo Smelt produce logits basura, según la doc).
  • Tu modelo de edición de imágenes pide ~54 GB (Qwen Image Edit) pero tu Mac tiene 8–16 GB de memoria unificada — elegí Flux Schnell 4-bit.
  • Necesitás una app de un clic firmada y le temés a la terminal — bajá el DMG de MLX Studio en vez de pelear con pip.

Regla de oro

Si el workload entra en la memoria unificada de una Mac y habla HTTP, vMLX es el camino más rápido del modelo a la API. En el momento que necesites CUDA, Windows o escala datacenter, lo superaste — y está bien, nunca fue esa herramienta.

Conclusión

vMLX convierte a la Mac de cliente en infraestructura: serving compatible con OpenAI, batching y caché de nivel producción, cuantización JANG que rinde por encima de su bit-width y clusters multi-Mac por un cable Thunderbolt. Para dueños de Apple Silicon, es lo más cercano a una nube privada de inferencia que podés instalar — perdón, uv-instalar — en una tarde.

Empezá con uv tool install vmlx más un modelo 8B 4-bit, confirmá /health y /v1/cache/stats, y después decidí si necesitás JANG o una segunda Mac. Y si tu flota es NVIDIA, seguí con la guía de vLLM vs SGLang.

vMLX: Resumen

Corré

  • • uv tool install vmlx
  • • vmlx serve <modelo>
  • • localhost:8000/v1

Acelerá

  • • --continuous-batching
  • • --enable-prefix-cache
  • • --enable-pld / JANG_3M

Escalá / evitá

  • • clusters vmlx-worker
  • • DMG MLX Studio
  • • No para CUDA/NVIDIA
Diego Rodriguez

Diego Rodriguez

Ingeniero Senior Full-Stack & AI

Diego tiene mas de 9 anos de experiencia construyendo aplicaciones potenciadas por IA de produccion, desde orquestacion de LLMs y pipelines RAG hasta deteccion de riesgos con ML y sistemas de trading algoritmico.

Conoce mas sobre Diego