LuAITools.com
提交工具
AI
FP16 para la velocidad, FP32 donde importa

Entrenamiento en precisión mixta

El entrenamiento en precisión mixta hace la mayor parte del cálculo en FP16 de media precisión por velocidad y ahorro de memoria, y deja las partes críticas en FP32: más rápido, más barato y casi sin pérdida de precisión.

¿Qué es el entrenamiento en precisión mixta?

Tradicionalmente, los pesos de una red neuronal y sus cálculos van en coma flotante de 32 bits (FP32): preciso, pero lento y hambriento de memoria. El entrenamiento en precisión mixta usa un enfoque de «precisión donde importa, ligereza en el resto»: la mayor parte del cálculo pasa a coma flotante de 16 bits (FP16) por velocidad y menor memoria, mientras que unos pocos puntos sensibles a la precisión recurren a FP32.

¿Por qué FP16 es más rápido?

Calcula más rápido
En las GPUs modernas, el álgebra de matrices en FP16 va varias veces más rápido que en FP32, y el hardware pensado para media precisión (como los Tensor Cores) multiplica el rendimiento.
Ahorra memoria y ancho de banda
La mitad de bits significa pesos y resultados intermedios más pequeños, así que caben modelos o batches más grandes.

¿Por qué no usar FP16 en todo?

La precisión puede desbordarse o desvanecerse
FP16 tiene rango y precisión limitados: los números grandes se desbordan a infinito, los gradientes diminutos se anulan a cero, y el entrenamiento se vuelve inestable o no converge.
Por eso se «mezcla»
Las partes delicadas — actualizaciones de gradientes, ciertas sumas — van en FP32, y el resto en FP16: velocidad y estabilidad a la vez.

Un par de trucos clave

Escalado de pérdida (loss scaling)
¿Gradientes demasiado pequeños para sobrevivir en FP16? Multiplica la pérdida por un factor antes de la retropropagación y deshazlo después, para que los gradientes pequeños no desaparezcan.
Pesos maestros en FP32
Guarda los pesos en FP32, calcula en FP16 y vuelve a FP32 para actualizar: lo mejor de ambos mundos.

¿Merece la pena?

Hoy la precisión mixta es casi la configuración por defecto para entrenar modelos grandes: el doble de velocidad, la mitad de memoria y una pérdida de precisión despreciable. Combinada con trucos como el checkpointing de gradientes, a menudo hace ejecutable un modelo que antes no cabía.

En resumen: el entrenamiento en precisión mixta hace la mayor parte del cálculo en FP16 por velocidad y deja los puntos críticos en FP32 por precisión — rápido, barato y sin venirse abajo.

Comentarios