Local AI & Hardware

Ejecutar DeepSeek Coder en Mac Studio: VRAM, Metal y Guía TPS

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.
← Todos los Artículos
0 / 4