Precisión Media
Descubra cómo la precisión media (FP16) acelera la IA con una computación más rápida, un uso reducido de la memoria y una implementación eficiente de los modelos.
La precisión media, 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 precisión simple de 32 bits (FP32) o precisión doble de 64 bits (FP64). En el contexto del aprendizaje profundo, el uso de precisión media reduce significativamente la huella de memoria y los requisitos computacionales de un modelo. Esta compensación se produce a costa de una menor precisión y rango numérico. Sin embargo, las técnicas modernas, en particular el entrenamiento de precisión mixta, han convertido a FP16 en una piedra angular del aprendizaje automático (ML) eficiente al permitir un entrenamiento e inferencia más rápidos con un impacto mínimo en la precisión del modelo.
Cómo funciona la media precisión
Cambiar de FP32 a FP16 reduce a la mitad la memoria necesaria para almacenar los pesos y las activaciones del modelo. Esto permite modelos más grandes, tamaños de lote más grandes o el entrenamiento en GPU con menos memoria. Además, las GPU modernas, como las que tienen NVIDIA Tensor Cores, están diseñadas específicamente para realizar operaciones matriciales de 16 bits a velocidades mucho mayores que las operaciones de 32 bits.
El principal desafío con FP16 es su rango numérico limitado, que puede conducir a problemas como la desaparición de gradientes durante el entrenamiento. Para contrarrestar esto, la precisión media 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 obtener velocidad, pero utilizando estratégicamente FP32 para operaciones críticas, como las actualizaciones de peso y ciertos cálculos de la función de pérdida, para mantener la estabilidad numérica. Los frameworks de aprendizaje profundo como PyTorch y TensorFlow ofrecen soporte integrado para el entrenamiento automático de precisión mixta.
Aplicaciones y ejemplos
La precisión media, principalmente a través de técnicas de precisión mixta, se utiliza ampliamente:
- Acelerar el entrenamiento de modelos: El entrenamiento de modelos grandes de aprendizaje profundo, como los de clasificación de imágenes o procesamiento del lenguaje natural (PNL), se puede acelerar significativamente utilizando 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 entrenamiento en la nube.
- Optimización de la inferencia de detección de objetos: Los modelos como Ultralytics YOLO11 se pueden exportar a formatos como ONNX o TensorRT con precisión FP16 para una inferencia en tiempo real más rápida. Esto es crucial para las aplicaciones que necesitan un alto rendimiento, como un sistema de seguridad que analiza múltiples transmisiones de video o el control de calidad en una línea de producción de alta velocidad.
- Implementación en dispositivos con recursos limitados: La reducida huella de memoria y el coste computacional de los modelos FP16 los hacen adecuados para la implementación en plataformas edge AI como NVIDIA Jetson o dispositivos móviles que utilizan frameworks como TensorFlow Lite o Core ML de Apple.
- Entrenamiento de modelos de lenguaje grandes (LLM): El enorme tamaño de modelos como GPT-3 y otros modelos fundacionales requiere el uso de formatos de 16 bits para ajustar los modelos en la memoria y completar el entrenamiento dentro de plazos razonables.
Precisión Media vs. 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 da el mismo rango dinámico que FP32, haciéndolo más resistente al underflow y overflow, pero a costa de una menor precisión. Se utiliza mucho en las TPU de Google. Puede leer más al respecto en el Blog de IA de Google Cloud.
- Cuantización del modelo: Si bien ambas son técnicas de optimización de modelos, la cuantización del modelo normalmente convierte los pesos de coma flotante (FP32 o FP16) a formatos enteros de bits más bajos, más comúnmente enteros de 8 bits (INT8). Esto puede proporcionar aceleraciones aún mayores, especialmente en las CPU y ciertos aceleradores, pero a menudo requiere un proceso de calibración más cuidadoso, como el Entrenamiento con reconocimiento de la cuantización (QAT), para evitar una caída significativa en el rendimiento del modelo.
- Precisión simple (FP32): Este es el formato predeterminado en la mayoría de los frameworks de deep learning. Ofrece alta precisión y un amplio rango dinámico, lo que lo hace robusto para el entrenamiento. Sin embargo, es más lento y requiere más memoria que la media precisión, por lo que es menos ideal para implementar modelos grandes o para aplicaciones que requieren la máxima velocidad. Las ventajas y desventajas entre estos formatos son una consideración clave, como se muestra en varias comparaciones de modelos.