Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Quantization-Aware Training (QAT)

El entrenamiento consciente de la cuantización (QAT) simula el redondeo INT8 durante el entrenamiento para que los pesos se adapten antes de la exportación y conserven la precisión que se pierde con una conversión INT8 normal.

El entrenamiento consciente de la cuantización (QAT) es una técnica de entrenamiento que prepara un modelo para la inferencia de baja precisión simulando la cuantización durante el entrenamiento. Normalmente, los modelos se entrenan y almacenan con números de coma flotante de 32 bits (FP32), y la cuantización del modelo los convierte a formatos como enteros de 8 bits (INT8) para el despliegue; así, los pesos ocupan 4 veces menos y las CPU, GPU y unidades de procesamiento neuronal (NPUs) pueden realizar operaciones aritméticas enteras con rapidez. La conversión redondea cada valor y recorta los valores atípicos, lo que reduce la exactitud. QAT incorpora ese redondeo a la pasada hacia delante mientras el modelo sigue aprendiendo, para que el descenso de gradiente encuentre pesos que sigan funcionando tras la cuantización. Normalmente se ejecuta como una breve etapa de ajuste fino de un modelo ya entrenado. El esquema de inferencia basado únicamente en aritmética entera de Google para CPU móviles combinó la inferencia INT8 con este tipo de procedimiento de entrenamiento, y desde entonces QAT se ha convertido en una herramienta estándar para el despliegue de IA en el borde.

Cómo funciona el entrenamiento consciente de la cuantización#

QAT añade operaciones de cuantización simulada, también llamadas pares de cuantización y descuantización (Q/DQ), a los pesos y las activaciones del modelo. Cada operación asigna un valor flotante al nivel INT8 más cercano mediante una escala y un punto cero, y después lo convierte de nuevo inmediatamente a flotante; así, la red sigue calculando en coma flotante, pero ve los mismos valores redondeados que usaría un motor INT8. Las escalas proceden de la calibración, que registra el rango habitual de cada tensor en unos cuantos lotes de datos, aunque algunos métodos también las aprenden durante el entrenamiento.

El gradiente del redondeo es cero en casi todas partes, lo que detendría el aprendizaje. QAT utiliza el estimador de paso directo (STE), que trata el paso de redondeo como la función identidad durante la retropropagación, para que los gradientes lleguen a los pesos FP32 subyacentes:

import torch

# FP32 weights that training keeps and updates
w = torch.tensor([0.3137, -0.7214, 0.0521, 1.1800], requires_grad=True)

# Symmetric INT8 fake quantization: snap each weight to one of 255 levels, then map back to float
scale = w.detach().abs().max().item() / 127
w_q = torch.fake_quantize_per_tensor_affine(w, scale, 0, -127, 127)
print(f"Fake-quantized: {[round(v, 4) for v in w_q.tolist()]}")

# The forward pass sees the rounded weights; the straight-through estimator still delivers gradients to w
x = torch.tensor([1.0, 2.0, 3.0, 4.0])
loss = (w_q * x).sum()
loss.backward()
print(f"Gradient on FP32 weights: {w.grad.tolist()}")

La pasada hacia delante usa los pesos redondeados 0.3159, −0.7247, 0.0557 y 1.18, cada uno a menos de medio paso de cuantización (0.0046) de su valor FP32; sin embargo, el gradiente que llega a los pesos FP32 es exactamente la entrada: 1.0, 2.0, 3.0 y 4.0, como si no se hubiera producido ningún redondeo. A lo largo de muchos pasos, el optimizador desplaza los pesos a posiciones en las que el error de redondeo causa el menor daño, y el modelo entrenado se exporta a INT8 con las escalas que ha aprendido.

QAT frente a la cuantización posterior al entrenamiento#

La cuantización posterior al entrenamiento (PTQ) convierte directamente un modelo FP32 ya terminado y usa unos cientos de imágenes de calibración para establecer los rangos. Tarda unos minutos y no necesita un pipeline de entrenamiento, pero los pesos no tienen ocasión de adaptarse al redondeo, por lo que los modelos sensibles pueden perder bastante exactitud. QAT requiere un ajuste fino con todos los datos de entrenamiento y, a cambio, recupera la mayor parte de esa pérdida. Los equipos suelen probar primero PTQ y recurren a QAT solo cuando la caída de exactitud en INT8 es demasiado grande:

Ultralytics YOLO ejecuta QAT cuando el entrenamiento recibe quantize=8: calibra la cuantización INT8 simulada mediante NVIDIA Model Optimizer, realiza el ajuste fino con ella en el bucle y guarda los rangos que las exportaciones a ONNX y TensorRT escriben como nodos Q/DQ sin datos de calibración aparte. En motores TensorRT sobre COCO val2017, PTQ redujo el modelo YOLO26 mediano YOLO26 de 0.527 a 0.470 de mAP50-95, mientras que QAT lo mantuvo en 0.514; el modelo nano solo perdió 0.010 con PTQ, así que QAT no aportó nada en ese caso.

from ultralytics import YOLO

# Parte de un punto de control YOLO26 FP32 entrenado
model = YOLO("yolo26n.pt")

# Ajusta el modelo con cuantización INT8 simulada en el bucle y usa una tasa de aprendizaje baja
model.train(data="coco8.yaml", epochs=5, quantize=8, optimizer="AdamW", lr0=0.00001, cos_lr=True)

# Exporta a ONNX; los rangos INT8 aprendidos se convierten en nodos Q/DQ, por lo que no se necesitan datos de calibración
model.export(format="onnx", quantize=8)

Dónde se usa QAT#

  • Visión en el borde: detectores INT8 en móviles, cámaras inteligentes, drones y NPU, donde los aceleradores que solo admiten enteros no pueden ejecutar modelos de coma flotante.
  • Servidores de inferencia: motores de GPU como TensorRT ejecutan kernels Tensor Core INT8 para aumentar el rendimiento, y QAT mantiene la exactitud cerca de FP32.
  • Modelos de lenguaje: QAT ya llega a menos de 8 bits. Google publicó puntos de control QAT de Gemma 3 en formato Q4_0 de 4 bits, que conservan una calidad cercana a bfloat16 con una fracción de la memoria.

Los principales frameworks incluyen herramientas de QAT, como torchao de PyTorch, el kit de herramientas de optimización de modelos de TensorFlow y NNCF de Intel para OpenVINO.

  • Cuantización del modelo: Término general para reducir la precisión numérica. PTQ y QAT son sus dos flujos de trabajo principales.
  • Entrenamiento de precisión mixta: Entrena en FP16 o BF16 para ahorrar memoria y tiempo, sin preparar el modelo para la inferencia INT8.
  • Precisión media: Inferencia FP16, que la mayoría de los modelos tolera sin reentrenamiento, por lo que rara vez se necesita QAT.
  • Poda de modelos: Elimina pesos o canales en lugar de reducir su precisión; ambas técnicas de compresión son compatibles.
  • Destilación de conocimiento: Entrena una arquitectura más pequeña para que imite a otra más grande. A menudo se combina con QAT, con el modelo de precisión completa como profesor de su propia copia cuantizada.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático