Última medición: 27 de octubre de 2026. Medición completa de referencia: 15 de septiembre de 2026.
Esta página reúne las velocidades de LLM local que hemos medido en un Apple M5 Max con 128 GB de memoria unificada, servidos con oMLX. Cada cifra sale de un registro de medición con fecha, versión y configuración, y todas están en un CSV que puedes descargar y reutilizar con licencia CC BY 4.0.
Con oMLX 0.7.3.dev2 y Lightning MTP, Qwen3.6-35B-A3B oQ4e-mtp genera código a 147,2 tokens/s y Qwen3.8-27B oQ4e-mtp a 70,8 tokens/s. Con oMLX 0.6.4, en septiembre, daban 119,2 y 39,7 tokens/s. Son medianas de 6 respuestas de 768 tokens pedidas por la API, como las pediría una aplicación.
El CSV tiene una fila por medida: modelo, configuración, método, longitud del prompt, número de repeticiones, mediana, mínimo y máximo, y el registro del que sale. Incluye todo lo que muestran las gráficas y algunas medidas más, como el tiempo total de las pruebas de contexto largo.
Decode: tokens generados por segundo una vez que empieza la respuesta. Es la velocidad que se ve al leer.
TTFT: tiempo hasta el primer token. Con prompts largos lo domina el prefill.
Prefill: tokens del prompt procesados por segundo.
Respuesta completa: segundos desde que se envía la petición hasta el último token.
Pico de memoria: memoria MLX máxima que registra oMLX durante la prueba, con los pesos del modelo incluidos.
Última medición: oMLX 0.7.3.dev2 (27 de octubre de 2026)
La comprobación de octubre repite el método de las respuestas de código de septiembre con los tres modelos que el autor usa a diario, todos con Lightning MTP. Qwen3.8-27B es un 79 % más rápido y Qwen3.6-35B-A3B, un 23 %.
Velocidad de decode en respuestas de código, septiembre frente a octubretokens/s · más es mejor
15-09 · oMLX 0.6.4
27-10 · oMLX 0.7.3.dev2
Qwen3.6-35B-A3B oQ4e-mtp
15-09 · oMLX 0.6.4: 119,2
27-10 · oMLX 0.7.3.dev2: 147,2
Qwen3.8-27B oQ4e-mtp
15-09 · oMLX 0.6.4: 39,7
27-10 · oMLX 0.7.3.dev2: 70,8
Gemma 4 26B-A4B it oQ4e-mtp
15-09 · oMLX 0.6.4: -
27-10 · oMLX 0.7.3.dev2: 126,2
Ver tabla de valores
Modelo (Lightning MTP)
15-09 · oMLX 0.6.4
27-10 · oMLX 0.7.3.dev2
Qwen3.6-35B-A3B oQ4e-mtp
119,2
147,2
Qwen3.8-27B oQ4e-mtp
39,7
70,8
Gemma 4 26B-A4B it oQ4e-mtp
-
126,2
Apple M5 Max, 128 GB. Mediana de 6 respuestas de 768 tokens por la API (/v1/chat/completions en streaming, temperatura 0,6, sin razonamiento). Gemma 4 26B-A4B no se midió en septiembre.
Tiempo hasta completar una respuesta de código de 768 tokenss · menos es mejor
15-09 · oMLX 0.6.4
27-10 · oMLX 0.7.3.dev2
Qwen3.6-35B-A3B oQ4e-mtp
15-09 · oMLX 0.6.4: 6,9 s
27-10 · oMLX 0.7.3.dev2: 5,4 s
Qwen3.8-27B oQ4e-mtp
15-09 · oMLX 0.6.4: 20,4 s
27-10 · oMLX 0.7.3.dev2: 11,2 s
Gemma 4 26B-A4B it oQ4e-mtp
15-09 · oMLX 0.6.4: -
27-10 · oMLX 0.7.3.dev2: 6,2 s
Ver tabla de valores
Modelo (Lightning MTP)
15-09 · oMLX 0.6.4
27-10 · oMLX 0.7.3.dev2
Qwen3.6-35B-A3B oQ4e-mtp
6,9 s
5,4 s
Qwen3.8-27B oQ4e-mtp
20,4 s
11,2 s
Gemma 4 26B-A4B it oQ4e-mtp
-
6,2 s
Apple M5 Max, 128 GB. Mediana de 6 respuestas, desde el envío de la petición hasta el último token.
La diferencia no se puede atribuir solo a la versión de oMLX. En septiembre el Mac estaba en presión térmica Heavy casi todo el tiempo y en octubre no se registró. Además, entre las dos fechas cambiaron mlx, mlx-lm y mlx-vlm. Sí se mantuvieron los archivos del modelo, las tres instrucciones de código, la temperatura y la longitud de la respuesta.
Referencia completa por la API: oMLX 0.6.4 (15 de septiembre de 2026)
Con respuestas de código, la aceleración especulativa adecuada a cada modelo dio entre 1,19 y 1,88 veces la velocidad base. Con 15.000 tokens de contexto la ganancia bajó a entre 1,07 y 1,47 veces, y ninguna configuración generó más despacio que su base.
Decode en respuestas de código, con y sin aceleracióntokens/s · más es mejor
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
Sin aceleración: 79,7
Con aceleración: 117,5
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
Sin aceleración: 100,2
Con aceleración: 119,2
Qwen3.8-27B MLX-4bit (VLM MTP)
Sin aceleración: 24,1
Con aceleración: 34,5
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
Sin aceleración: 21,1
Con aceleración: 39,7
Gemma 4 12B it 8-bit (VLM MTP)
Sin aceleración: 27,4
Con aceleración: 50,5
Ver tabla de valores
Modelo (aceleración)
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
79,7
117,5
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
100,2
119,2
Qwen3.8-27B MLX-4bit (VLM MTP)
24,1
34,5
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
21,1
39,7
Gemma 4 12B it 8-bit (VLM MTP)
27,4
50,5
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Mediana de 6 respuestas de 768 tokens (tres instrucciones de código × 2) por la API, temperatura 0,6.
Tiempo hasta completar una respuesta de código de 768 tokens, con y sin aceleracións · menos es mejor
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
Sin aceleración: 10,0 s
Con aceleración: 6,9 s
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
Sin aceleración: 8,0 s
Con aceleración: 6,9 s
Qwen3.8-27B MLX-4bit (VLM MTP)
Sin aceleración: 32,6 s
Con aceleración: 22,8 s
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
Sin aceleración: 37,3 s
Con aceleración: 20,4 s
Gemma 4 12B it 8-bit (VLM MTP)
Sin aceleración: 28,9 s
Con aceleración: 15,9 s
Ver tabla de valores
Modelo (aceleración)
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
10,0 s
6,9 s
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
8,0 s
6,9 s
Qwen3.8-27B MLX-4bit (VLM MTP)
32,6 s
22,8 s
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
37,3 s
20,4 s
Gemma 4 12B it 8-bit (VLM MTP)
28,9 s
15,9 s
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Mediana de 6 respuestas.
Las pruebas de contexto largo preguntan dos veces por un módulo de Python de unos 15.100 tokens (17.024 con el tokenizador de Gemma) y piden 512 tokens de respuesta.
Decode con unos 15.000 tokens de contexto, con y sin aceleracióntokens/s · más es mejor
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
Sin aceleración: 84,0
Con aceleración: 90,7
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
Sin aceleración: 100,2
Con aceleración: 115,5
Qwen3.8-27B MLX-4bit (VLM MTP)
Sin aceleración: 21,7
Con aceleración: 23,2
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
Sin aceleración: 21,4
Con aceleración: 27,2
Gemma 4 12B it 8-bit (VLM MTP)
Sin aceleración: 26,6
Con aceleración: 39,2
Ver tabla de valores
Modelo (aceleración)
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
84,0
90,7
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
100,2
115,5
Qwen3.8-27B MLX-4bit (VLM MTP)
21,7
23,2
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
21,4
27,2
Gemma 4 12B it 8-bit (VLM MTP)
26,6
39,2
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Mediana de 2 respuestas de 512 tokens, temperatura 0,6.
Tiempo hasta el primer token con unos 15.000 tokens de contextos · menos es mejor
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
Sin aceleración: 6,2 s
Con aceleración: 6,0 s
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
Sin aceleración: 5,8 s
Con aceleración: 6,1 s
Qwen3.8-27B MLX-4bit (VLM MTP)
Sin aceleración: 34,5 s
Con aceleración: 32,6 s
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
Sin aceleración: 31,3 s
Con aceleración: 35,2 s
Gemma 4 12B it 8-bit (VLM MTP)
Sin aceleración: 20,1 s
Con aceleración: 19,3 s
Ver tabla de valores
Modelo (aceleración)
Sin aceleración
Con aceleración
Qwen3.6-35B-A3B 8-bit (VLM MTP)
6,2 s
6,0 s
Qwen3.6-35B-A3B oQ4e-mtp (Lightning MTP)
5,8 s
6,1 s
Qwen3.8-27B MLX-4bit (VLM MTP)
34,5 s
32,6 s
Qwen3.8-27B oQ4e-mtp (Lightning MTP)
31,3 s
35,2 s
Gemma 4 12B it 8-bit (VLM MTP)
20,1 s
19,3 s
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Mediana de 2 peticiones; el prefill del prompt domina este tiempo.
Benchmark integrado de oMLX por longitud de prompt (oMLX 0.6.4)
El benchmark integrado mide dentro del proceso, sin HTTP ni plantilla de chat y con muestreo voraz (temperatura 0), así que muestra el mejor caso de la decodificación especulativa. DFlash fue lo más rápido con prompts de 1.000 tokens en tres de los cinco modelos, pero con 32.000 tokens cayó muy por debajo de la base en los cuatro Qwen. Con Gemma 4 12B se mantuvo por encima.
Un aviso antes de comparar filas: este benchmark carga los modelos de visión en el motor de texto salvo que Lightning MTP o VLM MTP estén activos. Por eso la fila sin aceleración de Qwen3.6-35B-A3B oQ4e-mtp sale mucho más lenta aquí que por la API.
Qwen3.6-35B-A3B 8-bit (mlx-community): decode según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Sin aceleración
1k: 92,1
4k: 91,1
16k: 84,1
32k: 77,9
VLM MTP
1k: 118,3
4k: 106,6
16k: 100,2
32k: 94,4
DFlash (borrador w4)
1k: 112,4
4k: 110,5
16k: 32,6
32k: 16,6
Ver tabla de valores
Configuración
1k
4k
16k
32k
Sin aceleración
92,1
91,1
84,1
77,9
VLM MTP
118,3
106,6
100,2
94,4
DFlash (borrador w4)
112,4
110,5
32,6
16,6
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones, 256 tokens generados, perfil code_python. Borradores: Qwen3.6-35B-A3B-MTP-bf16 (VLM MTP) y z-lab/Qwen3.6-35B-A3B-DFlash cuantizado a 4 bits.
Qwen3.6-35B-A3B oQ4e-mtp (Jundot): decode según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Sin aceleración
1k: 49,3
4k: 46,1
16k: 45,2
32k: 42,2
Lightning MTP
1k: 77,2
4k: 85,8
16k: 87,9
32k: 82,8
DFlash (borrador w4)
1k: 142,7
4k: 86,3
16k: 39,2
32k: 17,3
Ver tabla de valores
Configuración
1k
4k
16k
32k
Sin aceleración
49,3
46,1
45,2
42,2
Lightning MTP
77,2
85,8
87,9
82,8
DFlash (borrador w4)
142,7
86,3
39,2
17,3
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones. La fila sin aceleración usa el motor de texto (ver el aviso de arriba).
Qwen3.8-27B MLX-4bit (lmstudio-community): decode según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Sin aceleración
1k: 30,6
4k: 27,3
16k: 25,0
32k: 23,5
VLM MTP
1k: 39,3
4k: 36,6
16k: 36,4
32k: 30,9
DFlash2 (borrador w4)
1k: 48,2
4k: 43,7
16k: 35,8
32k: 6,3
DFlash2 (borrador bf16)
1k: 36,9
4k: 35,1
16k: 22,3
32k: 5,9
Ver tabla de valores
Configuración
1k
4k
16k
32k
Sin aceleración
30,6
27,3
25,0
23,5
VLM MTP
39,3
36,6
36,4
30,9
DFlash2 (borrador w4)
48,2
43,7
35,8
6,3
DFlash2 (borrador bf16)
36,9
35,1
22,3
5,9
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones. Borradores: Qwen3.8-27B-MTP-bf16 (VLM MTP) y z-lab/Qwen3.8-27B-DFlash2.
Qwen3.8-27B oQ4e-mtp (Jundot): decode según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Sin aceleración
1k: 27,0
4k: 26,4
16k: 24,4
32k: 21,4
Lightning MTP
1k: 48,0
4k: 37,7
16k: 41,1
32k: 35,4
Lightning MTP + TurboQuant KV 4 bits
1k: 42,2
4k: 37,7
16k: 39,7
32k: 30,3
Lightning MTP + prefill ANE afinado
1k: 35,6
4k: 33,1
16k: 35,8
32k: 30,9
DFlash2 (borrador w4)
1k: 41,4
4k: 33,8
16k: 18,8
32k: 5,8
Ver tabla de valores
Configuración
1k
4k
16k
32k
Sin aceleración
27,0
26,4
24,4
21,4
Lightning MTP
48,0
37,7
41,1
35,4
Lightning MTP + TurboQuant KV 4 bits
42,2
37,7
39,7
30,3
Lightning MTP + prefill ANE afinado
35,6
33,1
35,8
30,9
DFlash2 (borrador w4)
41,4
33,8
18,8
5,8
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones. Borrador DFlash2: z-lab/Qwen3.8-27B-DFlash2 a 4 bits.
Gemma 4 12B it 8-bit (mlx-community): decode según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Sin aceleración
1k: 31,0
4k: 30,5
16k: 30,1
32k: 28,8
VLM MTP
1k: 65,6
4k: 42,7
16k: 50,6
32k: 49,0
DFlash (borrador w4)
1k: 92,4
4k: 34,4
16k: 53,4
32k: 51,2
Ver tabla de valores
Configuración
1k
4k
16k
32k
Sin aceleración
31,0
30,5
30,1
28,8
VLM MTP
65,6
42,7
50,6
49,0
DFlash (borrador w4)
92,4
34,4
53,4
51,2
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones. Borradores: gemma-4-12B-it-assistant-bf16 (VLM MTP) y z-lab/gemma4-12B-it-DFlash a 4 bits.
gpt-oss-20b MXFP4-Q8 (mlx-community): decode según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Sin aceleración, 1.ª tanda (parte en frío)
1k: 120,2
4k: 106,5
16k: 100,4
32k: 78,8
Sin aceleración, repetición en caliente
1k: 126,6
4k: 121,1
16k: 80,8
32k: 69,2
Ver tabla de valores
Tanda
1k
4k
16k
32k
Sin aceleración, 1.ª tanda (parte en frío)
120,2
106,5
100,4
78,8
Sin aceleración, repetición en caliente
126,6
121,1
80,8
69,2
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones. La primera tanda abrió la sesión con el Mac en parte frío; la repetición se hizo al final, en caliente.
Prefill sin aceleración según la longitud del prompttokens/s · más es mejor
1k
4k
16k
32k
Qwen3.6-35B-A3B 8-bit
1k: 3.440
4k: 2.426
16k: 2.450
32k: 2.162
Qwen3.6-35B-A3B oQ4e-mtp
1k: 3.133
4k: 2.258
16k: 1.986
32k: 1.701
Qwen3.8-27B MLX-4bit
1k: 913
4k: 525
16k: 546
32k: 500
Qwen3.8-27B oQ4e-mtp
1k: 629
4k: 545
16k: 545
32k: 480
Gemma 4 12B it 8-bit
1k: 1.150
4k: 955
16k: 985
32k: 899
gpt-oss-20b MXFP4-Q8
1k: 3.744
4k: 3.737
16k: 1.755
32k: 1.622
Ver tabla de valores
Modelo
1k
4k
16k
32k
Qwen3.6-35B-A3B 8-bit
3.440
2.426
2.450
2.162
Qwen3.6-35B-A3B oQ4e-mtp
3.133
2.258
1.986
1.701
Qwen3.8-27B MLX-4bit
913
525
546
500
Qwen3.8-27B oQ4e-mtp
629
545
545
480
Gemma 4 12B it 8-bit
1.150
955
985
899
gpt-oss-20b MXFP4-Q8
3.744
3.737
1.755
1.622
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Benchmark integrado, mediana de 3 repeticiones; gpt-oss-20b, repetición en caliente.
Pico de memoria sin aceleración hasta 32.000 tokens de promptGiB
Qwen3.6-35B-A3B 8-bit
38,7 GiB
Qwen3.6-35B-A3B oQ4e-mtp
23,2 GiB
Qwen3.8-27B MLX-4bit
21,7 GiB
Qwen3.8-27B oQ4e-mtp
22,2 GiB
Gemma 4 12B it 8-bit
14,5 GiB
gpt-oss-20b MXFP4-Q8
12,4 GiB
Ver tabla de valores
Modelo
Pico
Qwen3.6-35B-A3B 8-bit
38,7 GiB
Qwen3.6-35B-A3B oQ4e-mtp
23,2 GiB
Qwen3.8-27B MLX-4bit
21,7 GiB
Qwen3.8-27B oQ4e-mtp
22,2 GiB
Gemma 4 12B it 8-bit
14,5 GiB
gpt-oss-20b MXFP4-Q8
12,4 GiB
Apple M5 Max, 128 GB, oMLX 0.6.4, 15 de septiembre de 2026. Máximo de la memoria MLX que registra el benchmark integrado, pesos incluidos.
Equipo y versiones
Elemento
15 de septiembre de 2026
27 de octubre de 2026
Máquina
Apple M5 Max, GPU de 40 núcleos, 128 GB de memoria unificada
La misma
oMLX
0.6.4, app de barra de menús
0.7.3.dev2
Motores
No registrados
mlx 0.32.4, mlx-lm 0.32.3.dev8, mlx-vlm 0.7.10
Presión térmica
Heavy en 76 de las 80 celdas del benchmark integrado
No registrada
Ajustes por modelo
Uno por prueba, como indica cada gráfica
Lightning MTP con profundidad adaptativa de hasta 3 tokens; TurboQuant, DFlash, prefill en el ANE y SpecPrefill desactivados
El Mac es el equipo de trabajo del autor. En septiembre tenía otras aplicaciones abiertas, con unos 48 GB ocupados antes de cargar ningún modelo. Las cifras absolutas son las de un Mac en uso real, no las de una máquina dedicada en frío.
Método
Usamos dos métodos, y las cifras de uno no se comparan con las del otro.
Por la API: peticiones en streaming a /v1/chat/completions desde un contenedor que corre en el propio Mac (OrbStack), con temperatura 0,6, top_p 0,95 y el razonamiento desactivado. Cada petición lleva un prefijo único para que la caché de prefijos no ayude. Las respuestas de código son tres instrucciones (Python, TypeScript y Go) repetidas dos veces, con 768 tokens de respuesta, tras una petición de calentamiento. El decode se calcula como tokens generados menos uno, dividido entre el tiempo que va del primer al último fragmento recibido.
Benchmark integrado: POST /admin/api/bench/start de oMLX con prompts de 1.025, 4.097, 16.385 y 32.769 tokens, 256 tokens generados, perfil code_python y align_prompt_to_ane activado, que además evita que los resultados se suban a omlx.ai. Lo lanzamos tres veces por configuración y damos la mediana.
Las comparaciones con y sin aceleración usan siempre el mismo motor en los dos lados. Las de septiembre se hicieron en una sesión de unas tres horas, cambiando un ajuste cada vez. Cuándo compensa cada aceleración, y por qué, está en la guía de instalación y ajuste de oMLX en el M5 Max.
Lo que estas cifras no dicen: no miden la calidad de las respuestas ni sirven como clasificación de modelos, y en otro chip o con otra cantidad de memoria los números cambian. Para estimar otro equipo, usa la calculadora de LLM local.
Actualizaciones
Volvemos a medir con cada versión nueva de oMLX que cambia el número menor (0.8, 0.9…), con el mismo método. Las mediciones anteriores siguen en el CSV con su fecha y su versión, así que una cita a una fecha concreta sigue siendo válida.
Cómo citar
Los datos (el CSV y las cifras de esta página) se publican con licencia Creative Commons Atribución 4.0 Internacional (CC BY 4.0). Puedes copiarlos, adaptarlos y publicarlos, también con fines comerciales, si citas la fuente y enlazas esta página. Indica la fecha de la medición que uses, porque las cifras cambian con cada versión.
Javier Cañete (2026), Benchmarks de LLM local en Apple Silicon [conjunto de datos], jacar.es, https://jacar.es/benchmarks-llm-local-apple-silicon/, medición del 27 de octubre de 2026, licencia CC BY 4.0.
@misc{jacar_llm_apple_silicon_2026,
author = {Cañete, Javier},
title = {Benchmarks de LLM local en Apple Silicon},
year = {2026},
url = {https://jacar.es/benchmarks-llm-local-apple-silicon/},
note = {Conjunto de datos, CC BY 4.0. Medición del 27 de octubre de 2026}
}
Usamos cookies propias y de terceros para analizar el tráfico del sitio. Puedes aceptarlas, rechazarlas o configurar tu elección.
Más información sobre las cookies
Preferencias de cookies
NecesariasImprescindibles para el funcionamiento del sitio. Siempre activas.
AnalíticasNos ayudan a entender cómo se usa el sitio (Google Analytics).