Ir al contenido principal

Quantization Aware Training: guía para mejorar la inferencia local de Gemma 4

Ejecuta Gemma 4 12B QAT en local con llama.cpp y comprueba cómo Quantization-Aware Training mejora la inferencia GGUF a 4 bits, reduce el uso de VRAM, aumenta la velocidad y hace la IA local más estable en GPUs de consumo.
Actualizado 3 ago 2026  · 8 min leer

Explorar con IA

Abrir en ChatGPTAbrir en ClaudeAbrir en Perplexity

La cuantización es una de las formas más prácticas de ejecutar modelos de lenguaje grandes en GPUs de consumo. En lugar de usar pesos de alta precisión que requieren mucha VRAM, podemos usar modelos comprimidos a 4 bits que caben en GPUs como la NVIDIA RTX 4090. Los modelos Gemma de Google forman parte de este impulso por facilitar la ejecución local de IA abierta y potente.

En este tutorial, ejecutaremos Gemma 4 12B localmente con llama.cpp y compararemos la versión base del modelo con otra versión ajustada mediante Quantization-Aware Training (QAT).

No te pierdas también nuestros otros tutoriales sobre el modelo de Google: cómo crear un agente de IA con Gemma 4 y Ollama, y cómo afinar Gemma 4.

Ingeniero Asociado de IA para Científicos de Datos

Entrena y afina los últimos modelos de IA para producción, incluidos los LLM como Llama 3. ¡Comienza hoy tu viaje para convertirte en Ingeniero de IA!
Explora La Pista

¿Qué es la cuantización?

La cuantización es una técnica de compresión que reduce la precisión de los pesos del modelo. 

Los modelos de lenguaje grandes suelen almacenarse en formatos de alta precisión como BF16 o FP16, que preservan la calidad pero requieren mucha memoria. La cuantización convierte esos pesos a formatos de menos bits, como 8 o 4 bits, para que el modelo use menos VRAM y se ejecute con más facilidad en local. Hugging Face señala que la cuantización a 8 bits puede reducir el uso de memoria aproximadamente a la mitad, mientras que a 4 bits lo reduce aún más.

El compromiso es que una menor precisión puede reducir la calidad de salida, especialmente si el modelo no está optimizado para cuantización. En pocas palabras: BF16 y FP16 suelen ofrecer la mejor calidad pero consumen más memoria; los modelos de 8 bits son más pequeños y normalmente mantienen una calidad alta, y los de 4 bits son mucho más pequeños pero pueden perder algo de precisión o estabilidad. 

Para inferencia local, este intercambio suele compensar, porque permite ejecutar modelos más grandes en GPUs de consumo sin depender de hardware caro de centro de datos.

¿Qué es Quantization Aware Training?

Quantization-Aware Training (QAT) es una técnica de entrenamiento en la que el modelo se entrena o afina simulando el comportamiento de baja precisión. Esto ayuda a que el modelo se mantenga más estable tras la cuantización y puede mejorar el rendimiento de la inferencia local con anchos de bit bajos.

¿Qué hace diferente a QAT?

El enfoque habitual, la cuantización posterior al entrenamiento, comprime un modelo una vez entrenado. Es simple y práctico, pero el modelo puede perder algo de calidad porque no fue entrenado para manejar pesos de baja precisión. 

Según la documentación de Google AI Edge, la cuantización posterior al entrenamiento es un paso de conversión que puede reducir el tamaño del modelo y mejorar la latencia, normalmente con poca pérdida de precisión. No obstante, la calidad final puede depender del modelo y del nivel de cuantización. 

Quantization-Aware Training, o QAT, adopta un enfoque distinto. En lugar de cuantizar solo después del entrenamiento, QAT simula el comportamiento de baja precisión durante el entrenamiento o el fine-tuning. Así, el modelo aprende a mantenerse estable cuando se convierte después a un formato más pequeño. Minimiza la pérdida de calidad al comprimir el modelo.

Por eso Gemma 4 QAT es útil para IA local. Está concebido pensando en la cuantización, de modo que conserva más calidad del modelo original usando menos memoria. Para quienes ejecutan modelos en GPUs de consumo, esto puede traducirse en mayor estabilidad a bajos bits, menor uso de VRAM y una inferencia local más práctica.

Paso 1: instala dependencias y compila llama.cpp

Antes de descargar los modelos, primero preparamos el entorno local. Este tutorial se probó en una máquina con una GPU NVIDIA RTX 4090 y 24 GB de VRAM. Usaremos llama.cpp como runtime de inferencia, GGUF como formato del modelo y los archivos cuantizados UD-Q4_K_XL.

Configuración probada:

  • GPU: NVIDIA RTX 4090
  • VRAM: 24 GB
  • Runtime: llama.cpp
  • Formato de modelo: GGUF
  • Cuantización: UD-Q4_K_XL

Compararemos estos dos modelos GGUF de Unsloth:

  • unsloth/gemma-4-12B-it-GGUF
  • unsloth/gemma-4-12B-it-qat-GGUF

Primero, comprueba que tu GPU esté disponible.

nvidia-smi

RTX 4090 GPU overview

A continuación, instala los paquetes del sistema necesarios para compilar llama.cpp.

apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y

Clona el repositorio oficial de llama.cpp.

git clone https://github.com/ggml-org/llama.cpp

Ahora compila llama.cpp con soporte CUDA habilitado. Así las capas del modelo se ejecutarán en la GPU y no solo en la CPU.

cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF \
    -DGGML_CUDA=ON

Compila los binarios necesarios.

cmake --build llama.cpp/build \
    --config Release \
    -j \
    --clean-first \
    --target llama-cli llama-mtmd-cli llama-server llama-gguf-split

Building Llama.cpp from source

Tras la compilación, el binario principal que usaremos es llama-server. Nos permite ejecutar el modelo GGUF en local y expone un endpoint de API compatible con OpenAI que podemos consultar con curl

Paso 2: descarga los modelos Gemma 4 12B sin QAT y con QAT 

Con llama.cpp listo, podemos descargar desde Hugging Face ambas variantes del modelo Gemma 4 12B. Bajaremos el modelo instruccional estándar y la versión QAT en formato GGUF.

Primero, instala la CLI de Hugging Face Hub con soporte de descarga más rápida.

pip install -U "huggingface_hub[hf_xet]" hf-xet hf_transfer

Activa las descargas Xet de alto rendimiento.

export HF_XET_HIGH_PERFORMANCE=1

Descarga el modelo instruccional estándar Gemma 4 12B en formato GGUF.

hf download unsloth/gemma-4-12B-it-GGUF \
  --local-dir models/gemma-4-12B-it-GGUF \
  --include "*mmproj-BF16*" \
  --include "*UD-Q4_K_XL*"

Ahora, descarga la versión QAT con el mismo formato de cuantización.

hf download unsloth/gemma-4-12B-it-qat-GGUF \
  --local-dir models/gemma-4-12B-it-qat-GGUF \
  --include "*mmproj-BF16*" \
  --include "*UD-Q4_K_XL*"

Las banderas --include aseguran que solo descarguemos los archivos necesarios para este tutorial, en lugar de clonar todo el repositorio. Aquí estamos bajando los archivos GGUF UD-Q4_K_XL y los archivos mmproj-BF16 que usa el paquete del modelo. 

Cuando termine la descarga, confirma que existen ambas carpetas de modelo.

ls models

Salida esperada:

gemma-4-12B-it-GGUF
gemma-4-12B-it-qat-GGUF

A estas alturas, tanto el modelo sin QAT como el QAT están disponibles en local y podemos empezar a servirlos con llama-server.

Paso 3: ejecuta el modelo sin QAT con llama-server

Empezaremos ejecutando el modelo instruccional Gemma 4 12B estándar. Esto nos da una línea base para compararla después con la versión QAT usando los mismos ajustes.

Inicia el modelo sin QAT con llama-server.

./llama.cpp/llama-server \
  -m models/gemma-4-12B-it-GGUF/*UD-Q4_K_XL*.gguf \
  --host 0.0.0.0 \
  --port 8001 \
  --ctx-size 8192 \
  --n-gpu-layers 99 \
  --temp 1.0 \
  --top-p 0.95 \
  --top-k 64

Serving the gemma-4-12B-it-GGUF model

Esto inicia un servidor local compatible con OpenAI en http://localhost:8001.

Abre otra terminal y envía una solicitud al servidor local.

time curl http://localhost:8001/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
  "model": "gemma-4-12B-it",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful local AI assistant."
    },
    {
      "role": "user",
      "content": "Explain why quantization-aware training is useful for running LLMs on consumer GPUs."
    }
  ],
  "temperature": 1.0,
  "top_p": 0.95,
  "max_tokens": 512
}'

En este comando usamos el endpoint local /v1/chat/completions, que sigue el formato de API compatible con OpenAI. El prompt pide al modelo que explique el Quantization-Aware Training, y max_tokens está fijado en 512 para garantizar que ambas variantes del modelo se prueben con la misma longitud de salida. 

En nuestra prueba con la RTX 4090, el modelo sin QAT arrojó los siguientes tiempos:

  • Tokens del prompt: 40
  • Tokens generados: 512
  • Velocidad de prompt: 510.22 tokens/seg
  • Velocidad de generación: 94.65 tokens/seg
  • Tiempo total: 5.516 seg

Uso de memoria de la GPU:

9247 MiB / 24564 MiB

Esto nos da el rendimiento base del modelo Gemma 4 12B estándar. En el siguiente paso, ejecutaremos la versión QAT con la misma configuración y compararemos los resultados.

Paso 4: ejecuta y prueba el modelo QAT

Ahora ejecutaremos la versión QAT de Gemma 4 12B usando los mismos ajustes de llama-server. Asegúrate de detener el servidor anterior (sin QAT) antes de iniciar este, porque ambos comandos usan el mismo puerto.

Inicia el modelo QAT.

./llama.cpp/llama-server \
  -m models/gemma-4-12B-it-qat-GGUF/*UD-Q4_K_XL*.gguf \
  --host 0.0.0.0 \
  --port 8001 \
  --ctx-size 8192 \
  --n-gpu-layers 99 \
  --temp 1.0 \
  --top-p 0.95 \
  --top-k 64

Esto inicia el modelo QAT en el mismo endpoint local compatible con OpenAI, http://localhost:8001.

Serving the gemma-4-12B-it-qat-GGUF

Ahora envía el mismo prompt de prueba al modelo QAT.

time curl http://localhost:8001/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
  "model": "gemma-4-12B-it-qat",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful local AI assistant."
    },
    {
      "role": "user",
      "content": "Explain why quantization-aware training is useful for running LLMs on consumer GPUs."
    }
  ],
  "temperature": 1.0,
  "top_p": 0.95,
  "max_tokens": 512
}'

En nuestra prueba con la RTX 4090, el modelo QAT arrojó los siguientes tiempos:

  1. Tokens del prompt: 40
  2. Tokens generados: 512
  3. Velocidad de prompt: 593.93 tokens/seg
  4. Velocidad de generación: 101.65 tokens/seg
  5. Tiempo total: 5.114 seg

Uso de memoria de la GPU:

8627 MiB / 24564 MiB

También puedes copiar la URL del servidor local (http://localhost:8001) y pegarla en tu navegador:

Testing the gemma-4-12B-it-qat using the llama.cpp WebUI

Esto abre la interfaz web integrada de llama.cpp, que te ofrece una interfaz tipo ChatGPT para probar el modelo local. Puedes usarla para chatear con el modelo QAT directamente en el navegador, experimentar con prompts y utilizarlo como asistente local en tu día a día. 

Comparativa: QAT vs. sin QAT

Tras probar ambos modelos con el mismo prompt y la misma configuración del servidor, podemos comparar directamente su rendimiento en la RTX 4090.

Métrica

Gemma 4 12B sin QAT

Gemma 4 12B QAT

Cuantización

UD-Q4_K_XL

UD-Q4_K_XL

Tamaño de contexto

8192

8192

Tokens del prompt

40

40

Tokens generados

512

512

Velocidad de prompt

510.22 tokens/seg

593.93 tokens/seg

Velocidad de generación

94.65 tokens/seg

101.65 tokens/seg

Tiempo total

5.516 seg

5.114 seg

Uso de VRAM

9247 MiB

8627 MiB

En esta ejecución, el modelo QAT fue a la vez más rápido y ligero que el modelo sin QAT. Usó 620 MiB menos de VRAM, reduciendo el consumo de memoria alrededor de un 6,7%. Para inferencia local esto es útil porque cada mega ahorrado ayuda al ejecutar modelos grandes en GPUs de consumo.

El modelo QAT también generó tokens más rápido, pasando de 94.65 tokens/seg a 101.65 tokens/seg. Es aproximadamente un 7,4% más de velocidad de generación, reduciendo el tiempo total de 5,516 a 5,114 segundos.

En el uso diario, el modelo QAT se sintió más fluido y ágil. La calidad de las respuestas también pareció más estable en esta prueba, que es la razón principal por la que QAT es útil: ayuda al modelo a manejar la cuantización de pocos bits con menos pérdida de calidad, manteniendo los beneficios de memoria y velocidad de un modelo comprimido.

Reflexiones finales

Google está haciendo un trabajo fantástico para la comunidad de IA local. Con modelos como Gemma 4 y técnicas como QAT, el sueño de ejecutar modelos potentes en local, completamente offline e incluso en hardware de consumo se está haciendo realidad. 

Lo más interesante es que no se trata solo de reducir el tamaño del modelo. Con QAT, no estamos simplemente sacrificando calidad para que el modelo quepa: obtenemos modelos diseñados para funcionar mejor en formatos de pocos bits, mejorando la experiencia de IA local. En esta prueba, el modelo QAT fue más rápido, ligero y agradable de usar que la versión sin QAT.

Ahora tengo muchas ganas de probar la versión MTP del modelo, que podría aumentar aún más la velocidad, quizá hasta 2x. Eso facilitaría mucho trasladar más parte de mi flujo de trabajo a la IA local. Podría ejecutar el modelo en local, conectarlo con herramientas como OpenCode y empezar a editar archivos de proyecto directamente con un asistente privado en mi máquina.

Esta nueva ola de IA local está cambiando cómo pensamos el uso de sistemas de IA. Tareas que antes requerían grandes despliegues en la nube, especialmente flujos multimodales con texto, imagen y vídeo, poco a poco están siendo posibles en máquinas locales. Para desarrolladores, investigadores y creadores que valoran la privacidad, la velocidad y el control, es una dirección muy prometedora.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.

Temas

Los mejores cursos de IA

programa

Desarrollo de aplicaciones de IA

21 h
Aprende a crear aplicaciones potenciadas por IA con las últimas herramientas para desarrolladores de IA, como la API OpenAI, Hugging Face y LangChain.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado
An avian AI exits its cage

blog

12 alternativas de código abierto a GPT-4

Alternativas de código abierto a GPT-4 que pueden ofrecer un rendimiento similar y requieren menos recursos informáticos para funcionar. Estos proyectos vienen con instrucciones, fuentes de código, pesos del modelo, conjuntos de datos e IU de chatbot.
Abid Ali Awan's photo

Abid Ali Awan

9 min

An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Visión GPT-4: Guía completa para principiantes

Este tutorial le presentará todo lo que necesita saber sobre GPT-4 Vision, desde cómo acceder a él hasta ejemplos prácticos del mundo real y sus limitaciones.
Arunn Thevapalan's photo

Arunn Thevapalan

Tutorial

Tutorial FLAN-T5: Guía y puesta a punto

Una guía completa para afinar un modelo FLAN-T5 para una tarea de respuesta a preguntas utilizando la biblioteca de transformadores, y ejecutando la inferencia optmizada en un escenario del mundo real.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Cómo ajustar GPT 3.5: Liberar todo el potencial de la IA

Explore GPT-3.5 Turbo y descubra el potencial transformador del ajuste fino. Aprenda a personalizar este modelo de lenguaje avanzado para aplicaciones especializadas, mejore su rendimiento y comprenda los costes asociados, la seguridad y las consideraciones de privacidad.
Moez Ali's photo

Moez Ali

Tutorial

Guía para principiantes de LlaMA-Factory WebUI: Ajuste de los LLM

Aprende a afinar los LLM en conjuntos de datos personalizados, evaluar el rendimiento y exportar y servir modelos sin problemas utilizando el marco de trabajo de bajo/ningún código de LLaMA-Factory.
Abid Ali Awan's photo

Abid Ali Awan

Ver MásVer Más