Intermedio 11 minRendimiento

Sacar el máximo partido a un Mac Apple Silicon

Respuesta directa

Optimizar un LLM en Apple Silicon consiste en aumentar el límite de memoria que macOS permite usar a la GPU (sudo sysctl iogpu.wired_limit_mb), elegir un modelo y una cuantización adecuados, cuantizar la caché KV para contextos largos y elegir el motor adecuado. Ningún ajuste permite superar el ancho de banda del chip: este limita la velocidad de generación.

Un Mac no es un PC con una GPU: su memoria es compartida y la parte que puede utilizar la GPU es ajustable. Esta página explica el límite de memoria de la GPU y cómo modificarlo, los modelos adecuados para cada capacidad de memoria, la caché KV, la atención flash y la elección del motor.

¿Estás eligiendo un equipo? Nuestras opciones por presupuesto →

Por Mohamed Meguedmi·Actualización 2026-09-29·Probado en macOS 14+
Hardware recomendado

Alternativa de compra para esta guía: Mac mini M5 Pro (24 GB / 512 GB).

¿Por qué esta elección? Nuestra ficha completa sobre Mac mini M5 Pro (24 GB / 512 GB) →

Comparar todas las opciones por presupuesto, de 800 a 3 500 € →

Presupuesto ajustado: RTX 5060 · Modelos grandes: RTX 5090 · Mac Studio.

Cuando te desplazas: qué portátil elegir para la IA local →

Enlaces de afiliados — posible comisión sin coste adicional para ti. Como socio de Amazon, QuelLLM obtiene un beneficio de las compras que cumplen las condiciones requeridas.

#Optimizar un LLM en Apple Silicon: las cuatro palancas

Para extraer el máximo rendimiento de un Mac Apple Silicon, cuatro factores cuentan, en este orden: el límite de memoria que macOS permite usar a la GPU, el tamaño y la cuantización del modelo, la caché KV y la atención flash para contextos largos, y la elección del motor (Ollama, llama.cpp, MLX o LM Studio). Todo parte de un hecho: la memoria unificada se comparte entre CPU y GPU, por lo que la RAM total sirve como VRAM, pero macOS limita la parte que la GPU puede reservar de forma fija. Elevar este límite permite usar modelos más grandes; los demás factores evitan saturar la memoria o ralentizar la generación. Ninguno hace que la máquina sea más rápida de lo que permite su ancho de banda.

Memoria unificada
La CPU y la GPU leen los mismos datos sin copiarlos. MLX lo resume así: los arrays residen en una memoria compartida. Por tanto, un Mac de 64 GB puede cargar un modelo que no cabe en ninguna tarjeta gráfica de consumo de 24 o 32 GB.
Eficiencia
Un Mac consume mucho menos que un PC equipado con una tarjeta de gama alta, cuya potencia supera los 500 W en el caso de la RTX 5090 de NVIDIA: el Mac se mantiene silencioso y consume poco con cargas ligeras.
Ecosistema
El repositorio de llama.cpp describe Apple silicon como una plataforma con soporte de primer nivel, optimizada mediante ARM NEON, Accelerate y Metal. Ollama, LM Studio y MLX también aprovechan Metal.
Límites
Sin CUDA, por lo que las bibliotecas que lo requieren no funcionan; el ancho de banda de un Mac (hasta 546 GB/s en un M4 Max) sigue por debajo del de una tarjeta gráfica de gama alta; el fine-tuning es posible, pero más lento.

#VRAM de un Mac: límite de memoria GPU y iogpu.wired_limit_mb

El kit Mac

La IA local en tu Mac, a fondo: memoria unificada, MLX vs GGUF, el modelo adecuado para tu chip, Ollama y LM Studio configurados para Apple Silicon.

  • Espacio en línea de por vida
  • PDF + archivos
  • Reembolsado 30 j

En un Mac, no hay VRAM separada: la «VRAM» es una parte de la memoria unificada que macOS permite fijar en memoria para la GPU. Esta parte es inferior a la RAM total. Las fuentes públicas no coinciden sobre la fracción predeterminada, que oscila entre dos tercios y tres cuartos según el caso; no la des por supuesta, consulta su valor en tu máquina. MLX muestra el valor establecido por el sistema mediante device_info(), en el campo max_recommended_working_set_size, y la documentación de MLX indica que se puede aumentar este límite del sistema con sudo sysctl iogpu.wired_limit_mb seguido del tamaño en megabytes.

El repositorio mlx-lm establece la regla de precaución: el valor debe superar el tamaño del modelo en megabytes, pero mantenerse por debajo de la memoria de la máquina. Apple no documenta este ajuste como un parámetro para el público general: trátalo como una modificación del sistema que conlleva riesgos.

Orden de magnitud para elegir el valor (reserva prudente para macOS, que debe adaptarse)
Memoria del MacReserva recomendada para el sistemaMemoria que se pretende asignar a la GPUValor de iogpu.wired_limit_mb
16 GB≈ 5 GB≈ 11 GB11264
24 GB≈ 6 GB≈ 18 GB18432
32 GB≈ 8 GB≈ 24 GB24576
64 GB≈ 8 a 10 GB≈ 54 a 56 GB55296 à 57344
128 GB≈ 16 GB≈ 112 GB114688

La fórmula es simple: valor en MB = memoria deseada en GB × 1 024. La reserva es una medida de prudencia adoptada en esta guía, no un dato de Apple: depende de las aplicaciones que dejes abiertas. Si la máquina se ralentiza, escribe en el disco o se vuelve inestable, reduce el valor.

Para consultar el límite que macOS aplica realmente, basta con una línea de Python si el paquete mlx está instalado. La salida contiene el campo max_recommended_working_set_size, expresado en bytes: divide entre 1.073.741.824 para obtener gigabytes. Compara esa cifra con el tamaño de tu modelo antes de modificar cualquier ajuste: si el modelo ya cabe por debajo de ese límite, aumentarlo no aporta nada.

Terminal
python3 -c "import mlx.core as mx; print(mx.device_info())"
  1. 01
    Leer el valor actual
    En el Terminal, el comando sysctl iogpu.wired_limit_mb muestra el valor. Un cero indica generalmente que macOS aplica su límite predeterminado.
  2. 02
    Calcular el nuevo valor
    Suma el tamaño del modelo y el de su caché KV, añade un margen y después deja al sistema una reserva de al menos 5 GB. Convierte el resultado a megabytes.
  3. 03
    Aplicar el ajuste
    Ejecuta sudo sysctl iogpu.wired_limit_mb con el valor deseado. El ajuste se aplica sin reiniciar, según las guías publicadas.
  4. 04
    Verificar
    Reinicia el modelo: los registros de Ollama o de llama.cpp indican la memoria de trabajo recomendada; con MLX, vuelve a leer device_info(). Monitorea la presión de memoria en el Monitor de actividad.
  5. 05
    Volver atrás
    Vuelve a poner el valor a 0 para devolver el control al sistema, o reinicia: el ajuste no necesariamente se conserva tras un reinicio; compruébalo con sysctl.
Terminal
# Lire la valeur actuelle (0 = plafond par défaut du système)
sysctl iogpu.wired_limit_mb

# Exemple : 24 Go au GPU sur un Mac de 32 Go (24 x 1024)
sudo sysctl iogpu.wired_limit_mb=24576

# Retour au comportement par défaut
sudo sysctl iogpu.wired_limit_mb=0
!
Lo que este ajuste no hace
No crea memoria: permite que la GPU mantenga una mayor cantidad de memoria fijada en RAM. Si la GPU fija demasiada memoria, deja muy poca para el sistema, que empieza a recurrir al intercambio en disco: la generación se desploma. El repositorio mlx-lm también especifica que la fijación automática de memoria para los modelos que ocupan mucha memoria requiere macOS 15 o superior.

#¿Qué modelos según la memoria del Mac?

El peso de un modelo en Q4 sigue las cifras de referencia del sitio: 3B, aproximadamente 2 GB; 7-8B, aproximadamente 5 GB; 14B, aproximadamente 9 GB; 32B, aproximadamente 19 a 20 GB; 70B, aproximadamente 40 GB. A este peso se añaden el caché KV y el margen del sistema. La tabla cruza estas cifras de referencia con la memoria del Mac, antes y después de aumentar el límite de la GPU.

Clase de modelo realista según la memoria del Mac (Q4_K_M)
MemoriaSin ajusteCon el límite aumentado
16 GB7-9B, contexto medio12B, contexto corto
24 GB12-14B24B en Q4 (≈ 14 GB), contexto medio
32 GB24B32B en Q4 (≈ 19-20 GB), contexto corto
64 GB32B con contexto largo70B en Q4 (≈ 40 GB), contexto medio
128 GB70B con contexto largo70B con contexto muy largo, o varios modelos cargados

La velocidad máxima se calcula a partir del ancho de banda del chip: el ancho de banda dividido por el tamaño en gigabytes. Este dato se indica en la ficha de cada máquina: ver las guías de MacBook Air, MacBook Pro, Mac mini y Mac Studio, que incluyen las cifras del chip de cada uno.

Caso concreto: en un Mac de 32 GB, un modelo de 32 mil millones de parámetros en Q4 pesa aproximadamente entre 19 y 20 GB. Con un contexto de 8.000 tokens y una caché KV en f16, hay que contar con unos gigabytes más, es decir, unos 23 a 24 GB en total. Si el límite de memoria de la GPU por defecto es más bajo, parte del modelo pasa a la CPU y la velocidad cae: aumentar el límite a 24 o 26 GB soluciona el problema, siempre que se deje suficiente memoria para que el sistema funcione con holgura. Si la presión de memoria pasa a rojo, elige mejor un modelo de 24 mil millones de parámetros.

#Cuantización: por qué Q4 sigue siendo una buena opción por defecto en Mac

En un Mac, la generación está limitada por el ancho de banda de la memoria: un modelo más pequeño se lee más rápido. Por tanto, Q4_K_M sigue siendo la opción por defecto, con la mejor relación entre tamaño, velocidad y calidad. Q5_K_M y Q6_K reducen la velocidad unos pocos puntos porcentuales a cambio de una mejora modesta de calidad; Q8_0 casi duplica el tamaño de Q4 y, por tanto, reduce aproximadamente a la mitad la velocidad máxima. Los formatos MLX de 4 bits desempeñan el mismo papel en el ecosistema MLX. La guía sobre cuantización explica este equilibrio, sin necesidad de repetir aquí las cifras.

#Metal y atención flash

Los motores habituales aprovechan la GPU del Mac a través de Metal, sin necesidad de ajustes. Con Ollama, el comando ollama ps indica si el modelo está cargado en la GPU. La atención flash reduce la memoria utilizada por los contextos largos: Ollama la activa automáticamente cuando el motor y el hardware lo permiten, y la variable OLLAMA_FLASH_ATTENTION=1 fuerza su activación. En llama.cpp, la opción -fa acepta on, off o auto, con auto como valor por defecto; la opción -ngl fija el número de capas colocadas en la GPU.

Terminal
# Ollama : forcer l'attention flash
export OLLAMA_FLASH_ATTENTION=1
ollama serve

# llama.cpp : toutes les couches sur le GPU, attention flash active
llama-server -m modele.gguf -ngl all -fa on -c 16384

#Caché KV: la parte de memoria que se olvida

El caché KV almacena, para cada token del contexto, vectores de cada capa. Su tamaño es dos veces el número de capas, multiplicado por el número de cabezas KV, por su dimensión, por la longitud del contexto y por los bytes por valor. Ejemplo puramente aritmético, con una arquitectura típica de 32 capas, 8 cabezas KV de dimensión 128 y un contexto de 32 000 tokens en f16: 2 × 32 × 8 × 128 × 32 000 × 2 bytes, es decir, aproximadamente 4,2 GB, además de los pesos. En q8_0, este caché se reduce aproximadamente a la mitad; en q4_0, aproximadamente a un cuarto, con una ligera pérdida de precisión.

Ollama aplica cuantización a la caché con la variable OLLAMA_KV_CACHE_TYPE (f16 por defecto); llama.cpp lo hace con la opción -ctk para las claves y -ctv para los valores. En un Mac de 32 GB que asigna 24 GB a la GPU, ahorrar unos gigabytes de caché marca la diferencia entre un contexto que no cabe en la memoria y uno que cabe holgadamente. Ollama también elige el contexto predeterminado según la memoria: 4.000 tokens con menos de 24 GiB.

Terminal
# Ollama
export OLLAMA_KV_CACHE_TYPE=q8_0
ollama serve

# llama.cpp
llama-server -m modele.gguf -ngl all -fa on -ctk q8_0 -ctv q8_0 -c 32768

#Ollama, LM Studio, llama.cpp o MLX

¿Qué motor para qué necesidad en Mac?
MotorPunto fuerteCuándo conviene elegirlo
OllamaInstalación y API local sencillasUso diario, integración con otras herramientas
LM StudioInterfaz gráfica, modelos MLX y GGUFExplorar modelos sin terminal
llama.cppOpciones de ajuste detalladas, funciones más recientesQuieres ajustar las capas GPU, la caché KV y el servidor
MLX / mlx-lmFramework de Apple, fine-tuning, memoria compartidaFormatos Apple, entrenamiento ligero, scripts en Python

El repositorio mlx-lm presenta el paquete como una herramienta de generación de texto y fine-tuning de modelos en Apple Silicon, con soporte para modelos cuantizados. Para comparar las velocidades entre MLX y llama.cpp, la guía dedicada al tema sirve de referencia; esta página se limita a los ajustes comunes.

#Batería y modo de ahorro de energía

En un MacBook, la generación continua mantiene la GPU trabajando constantemente: la autonomía queda muy por debajo de la que Apple anuncia para la navegación web. Esta página no da una duración precisa por falta de una fuente; depende del modelo y de la carga. El modo de ahorro de energía de macOS reduce el rendimiento: resérvalo para los desplazamientos en los que la autonomía prima sobre la velocidad y conecta el equipo a la corriente para cualquier sesión larga.

#Preguntas frecuentes

FAQ
¿Cuánta VRAM tiene un Mac Apple Silicon?+
Sin VRAM separada: la GPU utiliza la memoria unificada. Puede mantener bloqueada en memoria una parte de la RAM total, inferior al 100 %. Las fuentes discrepan sobre la fracción por defecto, entre dos tercios y tres cuartos, así que consulta el valor del sistema con el comando MLX device_info o los registros de Ollama y auméntalo si es necesario con iogpu.wired_limit_mb.
¿Cómo aumentar la memoria GPU de un Mac con sysctl?+
Ejecuta sudo sysctl iogpu.wired_limit_mb seguido del valor en megabytes, por ejemplo 24576 para 24 GB. El valor debe superar el tamaño del modelo, pero ser inferior a la memoria total, según el repositorio mlx-lm. Deja al menos 5 GB para el sistema. Vuelve a establecer el valor en 0 para recuperar el comportamiento predeterminado.
¿El ajuste iogpu.wired_limit_mb sobrevive al reinicio?+
No lo des por hecho: comprueba el valor con sysctl después de cada reinicio. Si ha vuelto a 0, tienes que volver a aplicarlo. Apple no documenta este ajuste; cualquier método para aplicarlo automáticamente al arrancar corre por tu cuenta y riesgo, y un valor demasiado alto puede volver inestable la máquina.
¿Debe usarse MLX o llama.cpp en Mac?+
Depende del uso. MLX es el framework de Apple, adaptado a los formatos Apple y al fine-tuning; llama.cpp ofrece ajustes finos y Ollama, que se basa en él, simplicidad. La guía comparativa del sitio mide la diferencia de velocidad; empieza por Ollama y cambia solo si aparece una necesidad específica.
¿Puede un Mac reemplazar una tarjeta gráfica NVIDIA para los LLM?+
En cuanto al tamaño del modelo, normalmente sí: un Mac de 64 o 128 GB puede cargar modelos que no caben en una tarjeta de 24 o 32 GB. En cuanto a la velocidad, una tarjeta de gama alta tiene un mayor ancho de banda y CUDA ofrece acceso a más herramientas. La elección depende, por tanto, del modelo que quieras utilizar.
¿Por qué mi modelo es lento aunque cabe en memoria?+
Varias causas posibles: un modelo demasiado grande para el límite de la GPU se ejecuta en parte en la CPU (verifica con ollama ps), la presión de memoria desencadena el swap, o el contexto es demasiado largo. Reduce el contexto, cuantiza la caché KV y aumenta el límite de la GPU antes de cambiar de modelo.
¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.