Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Aprendizaje automático

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


Escalando Modelos deEscalando Modelos deAprendizaje Profundoprofundo.manera efectiva en aprendizajeEstrategias para escalar unidades de
Tabla de contenidos

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:

FormatoBits de ExponenteBits de MantisaExponente MáxExponente Mín
FP32823127-126
TF32810127-126
BFLOAT1687127-126
FP1651015-14
FP8 E5 (a)5215-15
FP8 E5 (b)5215-14
FP8 E4 (a)437-7
FP8 E4 (b)438-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.

Más de autores

Artículos similares