Ajuste práctico de Gemma 4 MTP: acercarse a 120 tokens/s con un modelo borrador assistant

Guía de comandos para usar el modelo borrador assistant-MTP con Gemma 4 en speculative decoding: cómo montar el modelo draft en llama-cli, entender -md, --draft-max y -ngl, y por qué 120 tokens/s debe verse como un objetivo de ajuste en hardware específico.

Si el modelo principal, el modelo borrador assistant y el framework de inferencia están correctamente emparejados, MTP puede acelerar de forma notable Gemma 4 en una GPU local. En algunas tarjetas con 12GB de VRAM, como la RTX 4070, una cuantización y unos parámetros adecuados pueden acercarse a 120 tokens/s.

Pero no es una cifra que se obtenga necesariamente copiando un comando. Conviene tratarla como un objetivo de ajuste: el modelo debe ejecutarse, la VRAM debe alcanzar, la tasa de acierto del borrador debe ser alta y los parámetros de muestreo deben ser estables para que la velocidad luzca bien.

Qué Hace MTP Aquí

MTP significa Multi-Token Prediction.

Un modelo autorregresivo normal genera un token cada vez. assistant-MTP primero redacta varios tokens futuros para el modelo principal, y luego el modelo principal los verifica en paralelo. Si el borrador acierta, el modelo principal puede aceptar varios tokens a la vez y reducir la espera token por token.

Este mecanismo suele llamarse:

  • Speculative Decoding
  • decodificación especulativa
  • aceleración con modelo borrador
  • draft model / drafter

Su objetivo es acelerar, no mejorar la capacidad del modelo. La decisión final sobre si aceptar un token sigue siendo del modelo principal.

Ejemplo De Línea De Comandos

Este es un comando de referencia algo avanzado para llama-cli:

1
2
3
4
5
6
./llama-cli \
  -m gemma-4-12b-it-qat-GGUF.gguf \
  --draft-max 2 \
  -md gemma-4-12b-it-qat-assistant-MTP-Q8_0-GGUF.gguf \
  -ngl 99 \
  -p "<|think|>\n写一篇关于量子计算的短文。"

Este comando significa:

  • Usar gemma-4-12b-it-qat-GGUF.gguf como modelo principal.
  • Usar gemma-4-12b-it-qat-assistant-MTP-Q8_0-GGUF.gguf como modelo borrador.
  • Dejar que el modelo borrador prediga como máximo 2 tokens por ronda.
  • Intentar descargar tantas capas como sea posible a la GPU.
  • Pasar un prompt directamente para probar la velocidad de generación.

Nota: los nombres de parámetros pueden variar entre versiones de llama.cpp. Algunas versiones usan -md, otras recomiendan --model-draft; algunas usan --draft-max, otras --spec-draft-n-max. Antes de medir, revisa:

1
./llama-cli --help

O:

1
./llama-server --help

Explicación De Parámetros

-m

1
-m gemma-4-12b-it-qat-GGUF.gguf

Este es el modelo principal. La salida final la verifica y decide este modelo.

assistant-MTP debe coincidir con el modelo principal. No conviene usar cualquier assistant con un modelo principal de otro tamaño o versión; en el mejor caso no habrá mejora de velocidad, y en el peor puede fallar la carga o producir salidas anómalas.

-md

1
-md gemma-4-12b-it-qat-assistant-MTP-Q8_0-GGUF.gguf

-md sirve para montar el draft model, es decir, el modelo borrador assistant-MTP.

Puedes entenderlo como un pequeño ayudante que predice respuestas candidatas. Primero adivina los siguientes tokens, y luego el modelo principal decide si los acepta.

Si tu versión de llama.cpp no reconoce -md, prueba:

1
--model-draft gemma-4-12b-it-qat-assistant-MTP-Q8_0-GGUF.gguf

--draft-max

1
--draft-max 2

Controla cuántos tokens puede predecir el modelo borrador como máximo en una vez.

Es mejor empezar con 2, no subirlo mucho desde el inicio. Más tokens borrador no significa necesariamente más velocidad; si aumenta la tasa de error, el modelo principal rechazará candidatos con frecuencia y se desperdiciará cómputo.

Puedes probar así:

1
--draft-max 1
1
--draft-max 2
1
--draft-max 4

Observa tokens/s y la calidad de salida, y luego decide qué valor conservar.

-ngl 99

1
-ngl 99

Este parámetro intenta descargar capas del modelo a la GPU tanto como sea posible. Con 12GB de VRAM, si la cuantización es suficientemente pequeña, quizá puedas colocar la mayoría o incluso todas las capas en la GPU.

Pero en 8GB de VRAM normalmente no conviene copiarlo sin ajustes. MTP carga además un modelo assistant, así que la presión sobre VRAM es mayor que al ejecutar solo el modelo principal.

Si aparece OOM, baja en este orden:

1
-ngl 80
1
-ngl 60
1
-ngl 40

El valor realmente estable depende de la cuantización del modelo, la longitud de contexto, la VRAM libre de la GPU y el uso del escritorio o del sistema.

-p

1
-p "<|think|>\n写一篇关于量子计算的短文。"

-p pasa el prompt directamente.

Si <|think|> es necesario depende de la plantilla de chat y de la documentación del modelo GGUF actual. No es un interruptor universal para todos los modelos Gemma 4. Para medir velocidad, empieza con un prompt más simple:

1
-p "写一篇关于量子计算的短文。"

Primero confirma que MTP funciona, y luego revisa plantillas y tokens especiales.

Un Comando De Prueba Más Estable

Para la primera prueba, conviene usar parámetros más conservadores:

1
2
3
4
5
6
7
8
9
./llama-cli \
  -m gemma-4-12b-it-qat-GGUF.gguf \
  -md gemma-4-12b-it-qat-assistant-MTP-Q8_0-GGUF.gguf \
  --draft-max 2 \
  -ngl 60 \
  -c 8192 \
  -n 512 \
  --temp 0.7 \
  -p "用三段话解释量子计算。"

Si funciona de forma estable, aumenta -ngl gradualmente:

1
-ngl 80

Luego prueba:

1
-ngl 99

No pongas -ngl al máximo en la primera ejecución. MTP añade un modelo draft, por lo que el margen de VRAM importa más que en una ejecución normal.

Por Qué 120 tokens/s Puede No Reproducirse

120 tokens/s es atractivo, pero depende de muchas condiciones.

Factor Explicación
GPU Las GPU de 12GB como RTX 4070 suelen permitir un -ngl más alto que las de 8GB
Cuantización Las combinaciones QAT / Q4 / Q8 del modelo draft afectan VRAM y velocidad
Tasa de acierto del draft Cuanto más acierte el borrador, más tokens acepta el modelo principal de una vez
Tipo de prompt Texto estructurado, código y formatos fijos suelen acelerar mejor
temperature Cuanto más aleatoria la salida, más difícil es acertar para el borrador
Longitud de contexto Cuanto más largo el contexto, mayor presión sobre KV cache
Versión de llama.cpp El soporte MTP sigue evolucionando, y los parámetros y el rendimiento pueden cambiar

Por eso es mejor verlo como un objetivo de velocidad que se puede intentar alcanzar, no como una promesa.

Prompts Adecuados Para Medir Velocidad

MTP suele mostrar mejor su valor en salidas estructuradas y de baja aleatoriedad. Para medir, no pidas solo prosa libre; prueba también esto:

1
写一个 Python 函数,把 Markdown 表格转换成 CSV,只输出代码。
1
2
修复下面 JSON,只输出合法 JSON:
{"name":"demo","items":[{"id":1,"tags":["a","b",],},]}
1
用固定格式输出 10 条 Linux 故障排查步骤,每条包含:问题、命令、判断标准。

Si el tokens/s mejora claramente en estas tareas y la estructura de salida no empeora, assistant-MTP tiene valor en tu máquina.

Problemas Comunes

Añadir -md Provoca OOM

Es normal. assistant-MTP también consume VRAM o RAM.

Primero baja:

1
-ngl 60

Luego baja el contexto:

1
-c 4096

Si todavía no es estable, cambia a una cuantización más pequeña o deja MTP para más adelante.

Parámetro No Reconocido

Significa que tu versión de llama.cpp no coincide con el comando del artículo. Mira primero la ayuda:

1
./llama-cli --help

Busca especialmente:

1
draft
1
spec

Si la versión actual no tiene soporte MTP / draft, necesitas actualizar llama.cpp.

La Salida Se Vuelve Extraña

Primero elimina <|think|> y prueba con un prompt normal. Luego baja la temperature:

1
--temp 0.4

Después reduce el número de draft a:

1
--draft-max 1

Si así vuelve a la normalidad, la plantilla, el muestreo o los parámetros draft anteriores eran demasiado agresivos.

Resumen

El modo de alta velocidad de Gemma 4 assistant-MTP es, en esencia, speculative decoding con un modelo principal y un modelo borrador. -md monta el modelo borrador, --draft-max controla cuántos tokens se redactan por vez, y -ngl determina el grado de descarga a GPU.

Las máquinas con 12GB de VRAM pueden intentar velocidades más altas, y 120 tokens/s puede servir como objetivo de ajuste. En máquinas con 8GB de VRAM conviene ser más conservador, porque el modelo draft consume recursos adicionales.

La forma más estable es ejecutar primero y acelerar después: empieza con -ngl bajo, contexto corto y pocos tokens draft; confirma estabilidad y luego aumenta gradualmente.

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy