Precisión Mixta y Escalado de la Pérdida

Cómo aprenden realmente los modelos, del descenso por gradiente básico a Adam

El entrenamiento con precisión mixta usa formatos numéricos más pequeños por velocidad y memoria. En lugar de almacenar cada cálculo en precisión completa (los flotantes estándar de 32 bits), muchas operaciones usan float16 o bfloat16: formatos de 16 bits que ocupan la mitad de memoria a cambio de menos precisión y, en el caso de float16, un rango más estrecho de tamaños representables.

El riesgo está en el rango numérico. Algunos gradientes son diminutos. Si un número diminuto se redondea a cero, el optimizador pierde información. El escalado de la pérdida protege esos gradientes pequeños multiplicando la pérdida antes de la retropropagación, y luego dividiendo los gradientes de vuelta hacia abajo.

Una báscula de cocina que redondea a gramos enteros puede pasar por alto una pizca diminuta de especia. Si pesas diez pizcas idénticas juntas, la báscula puede ver el total. Luego divides entre diez para recuperar una pizca. El escalado de la pérdida usa el mismo truco: hace que el valor pequeño sea más fácil de representar, y luego lo reescala de vuelta. La figura de abajo es un recordatorio de lo que está en juego. El descenso solo funciona si el gradiente de cada paso sobrevive a la aritmética; la precisión no cambia el bucle, decide si las pendientes diminutas cerca del mínimo siguen siendo visibles para él.

Dónde aparece en el MLLa precisión mixta es una de las razones por las que las redes neuronales grandes entrenan rápido en el hardware moderno. Los optimizadores siguen necesitando los mismos conceptos, pero la escala numérica pasa a formar parte de la receta de entrenamiento.
▶ Precisión Mixta y Escalado de la Pérdida
← Mínimos Cuadrados AlternantesEscalado del Tamaño de Lote →