Escalado de Unidades en Modelos de Aprendizaje Profundo
Explorando el papel del escalado de unidades en formatos de punto flotante en el aprendizaje profundo.
― 11 minilectura
Tabla de contenidos
- Formatos FP8 Propuestos
- ¿Es la Desviación Estándar Unitaria el Criterio Correcto?
- Escalado Unitario y Outliers Emergentes
- Resultados Teóricos
- Compendio de Operaciones con Escalado Unitario
- Alinear el Escalado Unitario con Modelos Existentes
- Ejemplo: Alineando BERT
- Sobrecarga Computacional
- Fusión de Factores de Escalado
- Detalles Experimentales Adicionales y Resultados
- Resultados Adicionales
- Fuente original
- Enlaces de referencia
Cuando hablamos de aprendizaje profundo, los Formatos de punto flotante son clave. Estos formatos determinan cómo se almacenan y procesan los números en las computadoras. Cada formato tiene una disposición específica, que incluye partes conocidas como bits de exponente y bits de mantisa. El exponente nos ayuda a entender la escala del número, mientras que la mantisa indica la precisión.
Aquí hay una rápida mirada a los formatos de punto flotante comunes usados en aprendizaje profundo:
| Formato | Bits de Exponente | Bits de Mantisa | Exponente Máx | Exponente Mín |
|---|---|---|---|---|
| FP32 | 8 | 23 | 127 | -126 |
| TF32 | 8 | 10 | 127 | -126 |
| BFLOAT16 | 8 | 7 | 127 | -126 |
| FP16 | 5 | 10 | 15 | -14 |
| FP8 E5 (a) | 5 | 2 | 15 | -15 |
| FP8 E5 (b) | 5 | 2 | 15 | -14 |
| FP8 E4 (a) | 4 | 3 | 7 | -7 |
| FP8 E4 (b) | 4 | 3 | 8 | -6 |
Formatos FP8 Propuestos
Recientemente, se propusieron nuevos formatos de punto flotante de 8 bits para usar en aprendizaje profundo. Estos formatos incluyen dos variedades: uno con 4 bits de exponente, llamado E4, y otro con 5 bits de exponente, llamado E5. Estos diseños ajustan la cantidad de valores especiales al reducirlos en comparación con el estándar IEEE 754 tradicional. Este cambio ofrece valores máximos y mínimos ligeramente diferentes para la representación.
En el análisis de estos formatos, un concepto clave es el valor de sesgo. El sesgo se resta del exponente, similar a cómo se hace en el formato IEEE 754. Esto significa que escalar los números puede controlar el rango de valores que se pueden expresar. La preferencia podría inclinarse hacia un enfoque de escalado porque se alinea mejor con las prácticas de software, mientras que el enfoque de sesgo de exponente es más relevante para el hardware.
En general, los nuevos formatos FP8 siguen siendo bastante similares a los formatos de 8 bits establecidos.
¿Es la Desviación Estándar Unitaria el Criterio Correcto?
Argumentamos que inicializar tensores con Distribución Normal con una desviación estándar unitaria es lógico. El objetivo es mantener los valores absolutos de los tensores de punto flotante dentro de límites específicos definidos por el formato utilizado.
Al observar cómo se comportan los valores absolutos de una distribución normal, consideramos una variación llamada distribución normal plegada. La mayor parte de la probabilidad en esta distribución se centra alrededor de un cierto punto.
Con los formatos de punto flotante tradicionales, los valores pueden típicamente variar dentro de un intervalo definido, con un punto medio alineado aproximadamente con el centro del rango numérico. Para evitar errores, es importante escalar los valores a este punto medio.
Finalmente, concluimos que apuntar a una desviación estándar unitaria mantendrá la mayoría de los valores cerca del centro del rango numérico. Sin embargo, se debate si esta centralidad es la mejor medida para tensores distribuidos normalmente durante el entrenamiento del modelo de aprendizaje profundo.
Apoyando la idea de escalar por debajo del centro está la noción de que estos valores subnormales ofrecen un rango extra, aunque con menos precisión. Además, el subdesbordamiento ocurre menos a menudo en el entrenamiento de aprendizaje profundo que el desbordamiento.
Por otro lado, favorecer el escalado por encima del centro se basa en la creencia de que los valores, especialmente los gradientes, pueden disminuir durante el entrenamiento. Así, escalar podría ayudar a contrarrestar esta disminución esperada.
Dadas estas perspectivas, esforzarse por un escalado unitario parece ser un término medio razonable. Si el objetivo es alinear perfectamente la distribución con el punto central, podría ser necesario un escalado ligeramente mayor. Sin embargo, esa diferencia es mínima, haciendo que un escalado unitario sea una opción sólida y consistente con varias técnicas establecidas.
Escalado Unitario y Outliers Emergentes
Estudios recientes sobre Cuantización para grandes modelos de lenguaje han mostrado técnicas para gestionar outliers. Estos outliers son valores grandes que aparecen en partes específicas de los datos, especialmente a medida que crecen los tamaños de los modelos.
Un desafío con los outliers es que un solo outlier puede afectar negativamente la precisión de cuantización general de otros valores. Se ha demostrado que los outliers reducen la precisión de cuantización INT8 para modelos grandes, lo que ha llevado a investigar la influencia de los outliers en el escalado unitario.
No esperamos que el escalado unitario cambie significativamente la magnitud de los outliers. Esto se debe a que los valores outliers se encuentran comúnmente en tensores de activación, que tienden a mantener escalas consistentes entre modelos unitarios y no unitarios debido a la presencia de capas de normalización que controlan la escala.
Sin embargo, se anticipa que el escalado unitario sea más estable frente a outliers en comparación con los métodos documentados en la literatura existente. Esto se debe principalmente a que el escalado unitario trata con formatos de punto flotante, mientras que la investigación existente se centró en la cuantización entera, que carece de un rango dinámico adecuado.
Como resultado, creemos que utilizar formatos FP8 en lugar de INT8 reducirá las complicaciones asociadas con los outliers. Una comparación de razones señal-ruido entre formatos respalda aún más esta expectativa.
Para ilustrar, consideremos un escenario donde la presencia de outliers causa que la distribución de cuantización se desvíe, llevando a la mayoría de los bins de cuantización a estar vacíos. Por el contrario, los formatos de punto flotante ofrecen una mejor distribución, albergando un pequeño número de valores más grandes, adecuados para outliers, mientras tienen muchos valores más pequeños para los no-outliers.
Al analizar estos resultados, se vuelve evidente que el escalado unitario puede tener potencial al lidiar con outliers, aunque aún pueden surgir desafíos.
Resultados Teóricos
Ejemplo - Análisis de Escalado
Tomemos un ejemplo que involucra una red neuronal multicapa (MLP). Esto puede entenderse como la entrada transformándose en salida mediante una operación específica, donde se aplica una función de activación elemento a elemento.
En este análisis, nos centramos en separar el examen de una sola capa en dos partes distintas. El procedimiento sigue un algoritmo particular para describir cómo las salidas generan varianza en función de entradas independientes.
Siguiendo esta línea de pensamiento, al calcular los gradientes, reconocemos ciertas suposiciones sobre la correlación entre entradas y activaciones. Aunque algunas de estas suposiciones pueden ser problemáticas, se prestan a un análisis más simple para nuestros fines.
Pruebas en Apoyo a la Proposición
Profundizamos en la dinámica de entrenamiento de dos optimizadores comunes: Descenso de Gradiente Estocástico (SGD) y Adam. La dinámica de entrenamiento de un modelo sin escalar refleja la de un modelo con escala unitaria.
Una trayectoria de entrenamiento indica cómo evolucionan los parámetros en un modelo durante el entrenamiento. Al emplear SGD, podemos delinear estas trayectorias basadas en constantes específicas y gradientes.
Si las trayectorias de un modelo escalado mantienen una relación constante con las de un modelo no escalado, podemos concluir que compartirán dinámicas de entrenamiento similares.
Para Adam, el comportamiento es algo invariante al escalado diagonal. Esta propiedad asegura que los modelos escalados y no escalados puedan alinearse con trayectorias de entrenamiento iguales.
Ejemplo - Un Grafo Computacional Escalado
Consideremos una operación no escalada con valores en un cierto espacio vectorial. Si definimos un grafo computacional escalado, debe reflejar la misma operación. Al establecer un método consistente para los valores hacia adelante y hacia atrás, podemos validar que un grafo no escalado representa correctamente una operación.
En última instancia, mostramos que el grafo escalado también puede representar correctamente una operación escalada, asegurando que la representación sea precisa.
Grafo Computacional con Escalado de Restricción para Otros Esquemas
Al comparar otras estrategias de escalado, podemos ver cómo se ajustan al marco de grafos computacionales escalados por restricción.
Por ejemplo, al aplicar inicialización Glorot, consideramos escalas específicas y las empleamos para combinar valores, asegurando que no se requiera multiplicación excesiva durante el tiempo de ejecución.
Con el escalado de pérdidas, introducimos una operación de identidad escalada, lo que nos permite mantener gradientes sincronizados mientras compartimos una única escala entre esos gradientes. Tales estrategias deben ser seleccionadas con cuidado.
Compendio de Operaciones con Escalado Unitario
El escalado unitario requiere una selección cuidadosa de factores de escalado para cada operación. Estos factores provienen de un análisis del comportamiento de varias operaciones y operaciones de gradiente.
Para ayudar a los practicantes, hemos compilado una tabla de referencia que muestra versiones escaladas de operaciones comunes junto con sus respectivos factores de escalado.
Softmax y Otras Operaciones
Al examinar operaciones como softmax, podemos ver cómo difieren cuando son seguidas por multiplicación de matrices. Se requiere un enfoque cuidadoso para escalar softmax adecuadamente, permitiendo que valores consistentes se propaguen a través de procesos posteriores.
De manera similar, al evaluar softmax combinado con entropía cruzada, lo tratamos como una sola operación. Al centrarnos en las operaciones hacia atrás, podemos derivar factores de escalado necesarios que mantienen los movimientos en control mientras el entrenamiento sigue estable.
Alinear el Escalado Unitario con Modelos Existentes
Diseñar un modelo con el escalado unitario en mente puede diferir de adaptar un modelo existente. En tales casos, hay consideraciones adicionales para asegurarse de que el modelo escalado unitario funcione comparativamente con su modelo base.
Funciones de activación y Su Importancia
Las funciones de activación juegan un papel significativo en el rendimiento del modelo, ya que su comportamiento varía según la escala de entrada. Al pasar al escalado unitario, debemos introducir factores de escalado antes y después de las funciones de activación, asegurando que las entradas permanezcan consistentes.
Parámetros Compartidos y Gradientes de Peso
Los parámetros compartidos, que se utilizan frecuentemente en varias operaciones, deben adherirse a las proporciones de escalado de las unidades en el modelo. Los ajustes deben hacerse adecuadamente para garantizar que el modelo escalado unitario esté alineado con el rendimiento del modelo base.
Ejemplo: Alineando BERT
En nuestros experimentos enfocados en alinear el escalado unitario con modelos BERT, tomamos medidas cuidadosas para asegurarnos de que los niveles de rendimiento coincidieran con los de modelos tradicionales.
Capas de Embedding
BERT opera con múltiples embeddings, incluyendo embeddings de palabras, segmentos y posiciones, que se combinan. Para el escalado unitario, implementamos esto usando configuraciones de peso consistentes a través de los embeddings.
Autoatención Multi-Cabeza
En el proceso de autoatención multi-cabeza, aplicamos la alineación necesaria para las operaciones softmax, asegurando que mantenemos la integridad del rendimiento del modelo a través de ajustes de escalado adecuados.
Consideraciones sobre la Longitud de la Secuencia
Al escalar modelos que operan basados en secuencias, es crucial considerar las implicaciones de la longitud de la secuencia. Por lo tanto, ajustamos los cálculos en función del número promedio de tokens no padding durante el entrenamiento.
Sobrecarga Computacional
Incorporar el escalado unitario típicamente introduce una sobrecarga computacional mínima, que se manifiesta principalmente como llamadas de función adicionales durante el entrenamiento del modelo. Al analizar operaciones de punto flotante, la sobrecarga sigue siendo pequeña en comparación con otros procesos.
Fusión de Factores de Escalado
Integrar factores de escalado fijos en operaciones anteriores puede mejorar la eficiencia. Este método reduce los tiempos de comunicación al disminuir los viajes de memoria adicionales, mientras que potencialmente permite salidas de menor precisión.
Detalles Experimentales Adicionales y Resultados
Modelado de Lenguaje por Caracteres
Usando un conjunto de datos en bruto de Wikipedia, realizamos experimentos sin preprocesamiento. Los resultados se obtuvieron a través de ajustes metódicos de la tasa de aprendizaje, maximizando el rendimiento.
Entrenamiento de Precisión Mixta
En nuestro entrenamiento FP16, todos los componentes se almacenaron consistentemente en sus respectivos formatos, asegurando estabilidad mientras maximizamos la eficiencia del rendimiento.
Resultados Adicionales
Los resultados indican que los modelos escalados unitariamente mantienen el rendimiento en relación con sus contrapartes no escaladas, reafirmando la efectividad de las técnicas exploradas en escenarios de entrenamiento.
Conclusión
El escalado unitario ofrece un enfoque práctico dentro de los modelos de aprendizaje profundo, particularmente en el contexto de grandes modelos de lenguaje. Las ideas extraídas del análisis de varios formatos de punto flotante, su representación y rendimiento destacan la evolución continua de las estrategias de entrenamiento en este campo de rápida evolución.
Título: Unit Scaling: Out-of-the-Box Low-Precision Training
Resumen: We present unit scaling, a paradigm for designing deep learning models that simplifies the use of low-precision number formats. Training in FP16 or the recently proposed FP8 formats offers substantial efficiency gains, but can lack sufficient range for out-of-the-box training. Unit scaling addresses this by introducing a principled approach to model numerics: seeking unit variance of all weights, activations and gradients at initialisation. Unlike alternative methods, this approach neither requires multiple training runs to find a suitable scale nor has significant computational overhead. We demonstrate the efficacy of unit scaling across a range of models and optimisers. We further show that existing models can be adapted to be unit-scaled, training BERT-Large in FP16 and then FP8 with no degradation in accuracy.
Autores: Charlie Blake, Douglas Orr, Carlo Luschi
Última actualización: 2023-05-30 00:00:00
Idioma: English
Fuente URL: https://arxiv.org/abs/2303.11257
Fuente PDF: https://arxiv.org/pdf/2303.11257
Licencia: https://creativecommons.org/licenses/by-sa/4.0/
Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.
Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.