Media precisión
Descubra cómo la media precisión (FP16) acelera la IA con un cálculo más rápido, un menor uso de la memoria y un despliegue eficiente de los modelos.
La media precisión, también conocida como FP16, es un formato de número de coma flotante que utiliza 16 bits de memoria para representar un número, en contraste con los formatos más comunes de 32 bits de precisión simple (FP32) o 64 bits de doble precisión (FP64). En el contexto del aprendizaje profundo, el uso de la semiprecisión reduce significativamente la huella de memoria y los requisitos computacionales de un modelo. Esta contrapartida tiene el coste de reducir el rango numérico y la precisión. Sin embargo, las técnicas modernas, en particular la formación de precisión mixta, han hecho de FP16 una piedra angular del aprendizaje automático eficiente al permitir una formación e inferencia más rápidas con un impacto mínimo en la precisión del modelo.
Cómo funciona la semiprecisión
El cambio de FP32 a FP16 reduce a la mitad la memoria necesaria para almacenar los pesos y las activaciones del modelo. Esto permite utilizar modelos más grandes, lotes de mayor tamaño o entrenar en GPU con menos memoria. Además, las GPU modernas, como las que incorporan NVIDIA Tensor Cores, están específicamente diseñadas para realizar operaciones matriciales de 16 bits a velocidades muy superiores a las de 32 bits.
El principal reto del FP16 es su limitado rango numérico, que puede provocar problemas como la desaparición de gradientes durante el entrenamiento. Para contrarrestarlo, la semiprecisión casi siempre se implementa utilizando un enfoque de precisión mixta. Esta estrategia implica realizar la mayoría de los cálculos en FP16 para ganar velocidad, pero utilizar estratégicamente FP32 para operaciones críticas, como actualizaciones de pesos y ciertos cálculos de funciones de pérdida, para mantener la estabilidad numérica. Los marcos de aprendizaje profundo como PyTorch y TensorFlow ofrecen soporte integrado para el entrenamiento automático de precisión mixta.
Aplicaciones y ejemplos
La semiprecisión, principalmente a través de técnicas de precisión mixta, está muy extendida:
- Aceleración del entrenamiento de modelos: El entrenamiento de grandes modelos de aprendizaje profundo, como los de clasificación de imágenes o procesamiento del lenguaje natural (PLN), puede acelerarse significativamente utilizando la precisión mixta, lo que reduce el tiempo y los costes de entrenamiento. Plataformas como Ultralytics HUB suelen utilizar estas optimizaciones durante las sesiones de formación en la nube.
- Optimización de la inferencia de detección de objetos: Los modelos como Ultralytics YOLO11 pueden exportarse a formatos como ONNX o TensorRT con precisión FP16 para una inferencia más rápida en tiempo real. Esto es crucial para aplicaciones que necesitan un alto rendimiento, como un sistema de seguridad que analiza múltiples señales de vídeo o el control de calidad en una línea de producción de alta velocidad.
- Despliegue en dispositivos con recursos limitados: La reducida huella de memoria y el coste computacional de los modelos FP16 los hacen adecuados para su despliegue en plataformas de IA periféricas como NVIDIA Jetson o dispositivos móviles que utilicen marcos como TensorFlow Lite o Core ML de Apple.
- Entrenamiento de grandes modelos lingüísticos (LLM): El enorme tamaño de modelos como el GPT-3 y otros modelos fundacionales hace necesario el uso de formatos de 16 bits para que los modelos quepan en la memoria y se pueda completar el entrenamiento en plazos razonables.
Media precisión frente a otros formatos
- Bfloat16 (BF16): Un formato alternativo de 16 bits desarrollado por Google, Bfloat16 asigna más bits al exponente y menos a la mantisa en comparación con FP16. Esto le confiere el mismo rango dinámico que FP32, haciéndolo más resistente al desbordamiento y al subdesbordamiento, pero a costa de una menor precisión. Se utiliza mucho en las TPU de Google. Puede obtener más información en el blog de Google Cloud AI.
- Cuantización de modelos: Aunque ambas son técnicas de optimización de modelos, la cuantización de modelos suele convertir los pesos de coma flotante (FP32 o FP16) en formatos enteros de bits más bajos, normalmente enteros de 8 bits (INT8). Esto puede proporcionar una mayor velocidad, especialmente en CPUs y ciertos aceleradores, pero a menudo requiere un proceso de calibración más cuidadoso, como el Quantization-Aware Training (QAT), para evitar una caída significativa en el rendimiento del modelo.
- Precisión única (FP32): Es el formato predeterminado en la mayoría de los marcos de aprendizaje profundo. Ofrece una alta precisión y un amplio rango dinámico, lo que lo hace robusto para el entrenamiento. Sin embargo, es más lento y consume más memoria que el de media precisión, lo que lo hace menos idóneo para desplegar modelos grandes o para aplicaciones que requieran la máxima velocidad. Las compensaciones entre estos formatos son una consideración clave, como se muestra en varias comparaciones de modelos.