Respuesta rápida: Para el mejor LLM local de programación en Apple Silicon, combina Mac Studio (M2/M3/M4 Max o Ultra) con Qwen 2.5 Coder 32B o DeepSeek Coder V2.5. Usar MLX o llama.cpp con Metal y cuantización Q4_K_M rinde 32–42 tps en Max y 65–78 tps en Ultra con 22GB–95GB de VRAM unificada.
1. Introducción: La revolución del código local en Apple Silicon en 2026
Para los ingenieros de software, depender exclusivamente de APIs comerciales cerradas como Claude 3.7 Sonnet u OpenAI o3 introduce importantes fricciones: límites estrictos de peticiones, picos impredecibles de latencia, gastos mensuales superiores a 500 dólares por desarrollador en bucles de agentes y normativas de confidencialidad que prohíben enviar código a la nube.
La llegada de modelos abiertos de máximo nivel—en especial Qwen 2.5 Coder 32B Instruct y DeepSeek Coder V2.5 MoE—ha transformado las posibilidades locales. Gracias a la Arquitectura de Memoria Unificada (UMA) del Mac Studio (M2, M3 y M4 Max/Ultra), es posible alojar modelos de 32B a 236B de parámetros en VRAM local sin suscripciones ni fugas de datos.
+---------------------------------------------------------------------------------------------------+
| TOPOLOGÍA DE ESTACIÓN DE TRABAJO LOCAL (MAC STUDIO) |
+---------------------------------------------------------------------------------------------------+
|
+-----------------------------------+-----------------------------------+
| |
v v
+-------------------------------+ +-------------------------------+
| Hardware Memoria Unificada | | Pila de Motores Locales |
| - LPDDR5X: 32GB a 192GB UMA | | - llama.cpp (Metal GGUF) |
| - Ancho de banda: 400-820 GB/s| ======= Metal DMA Zero-Copy =====>| - Apple MLX (Grafo Nativo) |
| - Metal Performance Shaders | | - Ollama (Demonio Automático) |
| - Desbloqueo wired_mem sysctl | | - FlashAttention-2 Metal K/V |
+-------------------------------+ +-------------------------------+
| |
v v
[Hardware Mac Studio] [Endpoints Locales de API]
| |
+-----------------------------------+-----------------------------------+
|
v
+-------------------------------+
| Agentes Autónomos de IDE |
| - Roo Code / Cline (VS Code) |
| - Aider / OpenCode Terminal |
| - Puente Local Cursor IDE |
| - Neovim avante.nvim |
+-------------------------------+
Esta guía detalla paso a paso cómo configurar la ejecución de LLMs en Mac Studio (run llm mac studio), evaluando cuantizaciones GGUF (Q4_K_M vs Q8_0), comparando motores con aceleración Metal (Ollama vs llama.cpp vs MLX) y calculando el uso exacto de memoria.
2. Arquitectura de Hardware: Por qué Mac Studio supera a las GPUs dedicadas
Al ejecutar un LLM local (local llama), el límite fundamental es la memoria. En PCs convencionales, las tarjetas gráficas (como NVIDIA GeForce RTX 4090 o RTX 5090) están limitadas a 24GB de VRAM. Si se intenta cargar un modelo de 70B (140GB) o DeepSeek Coder V2.5 (más de 130GB en 4 bits), los datos se transfieren por el bus PCIe (32–64 GB/s) a la RAM del sistema, haciendo que la velocidad caiga de 60 tps a 1.5 tps.
En cambio, Apple Silicon cuenta con una memoria unificada accesible por CPU y GPU sin duplicación de datos ni cuellos de botella PCIe.
+---------------------------------------------------+-------------------------------------+-------------------------------------+
| Característica de Arquitectura | Apple Silicon Memoria Unificada | PC Discreto (x86_64 + NVIDIA RTX) |
+---------------------------------------------------+-------------------------------------+-------------------------------------+
| Límite Físico de Memoria | 32GB a 192GB (M4 Ultra Mac Studio) | 24GB VRAM (GPU consumo única) |
| Cuello de Botella de Bus | Cero copias PCIe (Zero-Copy DMA) | Cuello de botella PCIe Gen 4/5 |
| Ancho de Banda (Max/Ultra) | 400 GB/s (Max) / 800-820 GB/s (Ultra)| 1.008 GB/s (RTX 4090) |
| Ejecución DeepSeek Coder V2.5 (236B MoE Q4) | 100% en VRAM (equipos de 128GB+) | OOM en GPU única (requiere 4 GPUs) |
| Consumo Eléctrico en Reposo | 12W - 18W | 85W - 120W |
| Consumo Pico en Inferencia | 110W - 215W | 450W - 850W (Workstation Dual GPU) |
| Nivel de Ruido Acústico | Casi inaudible (<15 dB) | Ventiladores ruidosos (45-55 dB) |
+---------------------------------------------------+-------------------------------------+-------------------------------------+
Desbloquear el límite de VRAM en macOS: iogpu.wired_mem_limit
Por defecto, macOS restringe la memoria gráfica de Metal a aproximadamente el 75% de la RAM del sistema. En un Mac Studio de 64GB, Metal deniega peticiones superiores a ~48GB.
Para desbloquear hasta el 92% de la memoria unificada, ejecute en la terminal:
# Para Mac Studio de 64GB: Asignar hasta 57.344 MB (56GB) a Metal
sudo sysctl -w iogpu.wired_mem_limit=57344
# Para Mac Studio de 128GB: Asignar hasta 118.784 MB (116GB) a Metal
sudo sysctl -w iogpu.wired_mem_limit=118784
# Para Mac Studio de 192GB: Asignar hasta 180.224 MB (176GB) a Metal
sudo sysctl -w iogpu.wired_mem_limit=180224
3. Selección del modelo: Qwen 2.5 Coder 32B vs DeepSeek Coder V2.5
El mejor LLM local para programación (best local llm for coding) debe adecuarse a la memoria disponible.
+----------------------------------------------------------------------------------------------------+
| COMPARATIVA DE MODELOS DE PROGRAMACIÓN |
+------------------------------------+--------------------------------+------------------------------+
| Métrica | Qwen 2.5 Coder 32B Instruct | DeepSeek Coder V2.5 MoE |
+------------------------------------+--------------------------------+------------------------------+
| Arquitectura | Dense Transformer | Mixture-of-Experts (MoE) |
| Parámetros Totales | 32.5 Mil Millones (32.5B) | 236 Mil Millones (236B) |
| Parámetros Activos por Token | 32.5 Mil Millones (32.5B) | 21 Mil Millones (21B) |
| Contexto Nativo | 32.768 tokens (Yarn a 128k) | 131.072 tokens |
| SWE-bench Verified | 43,6% | 41,8% |
| LiveCodeBench v4 Pass@1 | 51,2% | 49,6% |
| HumanEval+ (EvalPlus) | 92,7% | 90,2% |
| MultiPL-E Benchmark | 83,4% | 81,9% |
| Cuantización Recomendada | Q4_K_M (19,8 GB) / Q8_0 (34 GB)| IQ3_M (82 GB) / Q4_K_M (96GB)|
| Mac Studio Recomendado | 32GB o 64GB M2/M3/M4 Max | 128GB o 192GB M2/M4 Ultra |
| Ventaja Principal | Autocompletado ultra rápido | Comprensión total de repos |
+------------------------------------+--------------------------------+------------------------------+
4. Cuantización GGUF y Cálculo de VRAM
+---------------------------------------------------------------------------------------------------+
| COMPARATIVA DE PRECISIÓN Y CONSUMO VRAM |
+-------------------+-------------------+-------------------+-------------------+-------------------+
| Cuantización | Bits por peso | Tamaño 32B (GB) | Tamaño 236B (GB) | Delta Perplejidad |
+-------------------+-------------------+-------------------+-------------------+-------------------+
| FP16 (Base) | 16.0 bpw | 65,0 GB | 472,0 GB | 0,00 (Referencia) |
| Q8_0 | 8.5 bpw | 34,2 GB | 248,0 GB | +0,008 (Imperceptible)
| Q5_K_M | 5.5 bpw | 23,4 GB | 165,0 GB | +0,032 (Mínimo) |
| Q4_K_M (Óptimo) | 4.5 bpw | 19,8 GB | 138,0 GB | +0,075 (Aceptable)|
| IQ3_M (Para MoE) | 3.3 bpw | 14,6 GB | 94,0 GB | +0,185 (Moderado) |
| Q2_K (Extremo) | 2.5 bpw | 11,2 GB | 72,0 GB | +0,890 (Degradado)|
+-------------------+-------------------+-------------------+-------------------+-------------------+
Al activar la caché KV de 4 bits (--cache-type-k q4_0 --cache-type-v q4_0), el uso de VRAM para un contexto de 32k pasa de 8,58GB a 2,15GB, permitiendo trabajar en equipos de 32GB sin problemas.
5. Benchmarks de Motores: Ollama vs llama.cpp vs MLX
+----------------------------------------------------------------------------------------------------------------------------+
| MATRIZ DE BENCHMARKS EN MAC STUDIO (2026) |
+------------------------+-------------+-----------+----------------------+-----------+------------+------------+------------+
| Modelo | Cuantización| Motor | Configuración Mac | VRAM Usada| TTFT (ms) | Vel. (TPS) | Temp. Máx. |
+------------------------+-------------+-----------+----------------------+-----------+------------+------------+------------+
| Qwen 2.5 Coder 32B | Q4_K_M | MLX | M4 Max (64GB, 410GB/s)| 22,4 GB | 340 ms | 41,2 tps | 68°C |
| Qwen 2.5 Coder 32B | Q4_K_M | llama.cpp | M4 Max (64GB, 410GB/s)| 22,1 GB | 410 ms | 38,6 tps | 66°C |
| Qwen 2.5 Coder 32B | Q4_K_M | Ollama | M4 Max (64GB, 410GB/s)| 23,8 GB | 620 ms | 34,1 tps | 65°C |
| Qwen 2.5 Coder 32B | Q8_0 | llama.cpp | M4 Max (64GB, 410GB/s)| 36,5 GB | 680 ms | 24,8 tps | 72°C |
| Qwen 2.5 Coder 32B | Q4_K_M | MLX | M2 Ultra (128GB, 800G)| 22,5 GB | 280 ms | 68,4 tps | 58°C |
| Qwen 2.5 Coder 32B | Q4_K_M | llama.cpp | M2 Ultra (128GB, 800G)| 22,2 GB | 310 ms | 64,7 tps | 57°C |
| DeepSeek Coder V2.5 | IQ3_M | llama.cpp | M2 Ultra (128GB, 800G)| 88,2 GB | 1.250 ms | 19,4 tps | 74°C |
| DeepSeek Coder V2.5 | Q4_K_M | llama.cpp | M2 Ultra (128GB, 800G)| 104,5 GB | 1.480 ms | 15,8 tps | 76°C |
| DeepSeek Coder V2.5 | Q4_K_M | MLX | M4 Ultra (192GB, 820G)| 102,8 GB | 890 ms | 26,2 tps | 64°C |
| Llama 3.3 70B Instruct | Q4_K_M | MLX | M4 Max (64GB, 410GB/s)| 44,8 GB | 780 ms | 18,2 tps | 78°C |
+------------------------+-------------+-----------+----------------------+-----------+------------+------------+------------+
Nota técnica (¿Por qué no vLLM en Mac Studio?): Aunque vLLM con PagedAttention es el estándar en servidores Linux/NVIDIA, su soporte de Metal en Apple Silicon continúa en fase experimental. En macOS, Apple MLX y llama.cpp aprovechan de forma nativa la memoria unificada (UMA) y los Metal Performance Shaders, logrando una velocidad 2 a 3 veces mayor.
6. Guía de Instalación Paso a Paso
Compilar y Ejecutar llama.cpp con Metal
git clone https://github.com/ggerganov/llama.cpp.git && cd llama.cpp
cmake -B build -DGGML_METAL=ON -DGGML_METAL_EMBED_LIBRARY=ON
cmake --build build --config Release -j$(sysctl -n hw.ncpu)
mkdir -p ~/models && cd ~/models
curl -L -O https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct-GGUF/resolve/main/qwen2.5-coder-32b-instruct-q4_k_m.gguf
./build/bin/llama-server \
--model ~/models/qwen2.5-coder-32b-instruct-q4_k_m.gguf \
--host 127.0.0.1 --port 8080 \
--n-gpu-layers 99 --ctx-size 32768 \
--flash-attn --cache-type-k q4_0 --cache-type-v q4_0
Ejecutar con Apple MLX
python3 -m venv ~/mlx-env && source ~/mlx-env/bin/activate
pip install mlx-lm
python -m mlx_lm.server --model mlx-community/Qwen2.5-Coder-32B-Instruct-4bit --port 8080
7. Integración con Agentes (Cline / Roo Code / Aider)
Apunta la URL base de tu herramienta a http://127.0.0.1:8080/v1:
export OPENAI_API_BASE="http://127.0.0.1:8080/v1"
export OPENAI_API_KEY="dummy-key"
aider --model openai/qwen2.5-coder-32b-instruct-q4_k_m
8. Análisis Económico: Retorno de Inversión (ROI)
+------------------------------+--------------------+--------------------+--------------------+--------------------+
| Perfil de Uso | Tokens Mensuales | Coste Cloud API | Coste Mac Studio | Plazo Amortización |
+------------------------------+--------------------+--------------------+--------------------+--------------------+
| Desarrollador Individual | 20M tokens/mes | 110 $ / mes | M4 Max 64GB (2.199$| 20,0 meses |
| Ingeniero Activo (Cline/Roo) | 75M tokens/mes | 425 $ / mes | M4 Max 64GB (2.199$| 5,2 meses |
| Ingeniero Principal | 180M tokens/mes | 1.050 $ / mes | M4 Ultra (3.999 $) | 3,8 meses |
| Equipo de 5 Desarrolladores | 800M tokens/mes | 4.600 $ / mes | 2x M4 Ultra | 1,7 meses |
+------------------------------+--------------------+--------------------+--------------------+--------------------+
9. Conclusión y Recomendaciones
- Mac Studio 32GB: Usa Qwen 2.5 Coder 32B (Q4_K_M) con 16k de contexto.
- Mac Studio 64GB: Despliega Qwen 2.5 Coder 32B (Q8_0) o MLX con 64k de contexto (38–42 tps).
- Mac Studio 128GB–192GB: Ejecuta DeepSeek Coder V2.5 MoE (Q4_K_M / IQ3_M) para un rendimiento sin concesiones.