Modelos y plataformas de IA

UltraFastBERT: Una Introducción a la Modelización del Lenguaje Exponencialmente Más Rápida

mm
Añade Unite.AI a tus fuentes preferidas en Google

Los modelos de lenguaje y la inteligencia artificial generativa, conocidos por sus capacidades, son un tema candente en la industria de la IA. Los investigadores globales están mejorando su eficacia y capacidad. Estos sistemas, generalmente modelos de aprendizaje profundo, se entrenan en datos etiquetados extensos, incorporando redes neuronales para la autoatención. Utilizan varias capas – feedforward, recurrentes, incrustadas y de atención – para procesar el texto de entrada y producir salidas relevantes.

En su mayoría, las capas feedforward de los grandes modelos de lenguaje contienen la mayoría de los parámetros. Los estudios muestran que estos modelos solo utilizan una fracción de los neuronas disponibles para el cálculo de la salida durante la inferencia.

Este artículo presenta UltraFastBERT, un marco basado en BERT que coincide con la eficacia de los modelos BERT líderes, pero que utiliza solo el 0,3% de las neuronas durante la inferencia, específicamente 12 de 4095 en cada capa. Exploraremos la arquitectura, funcionalidad y resultados de UltraFastBERT. Comencemos.

UltraFastBERT: Una Introducción a la Modelización del Lenguaje Exponencialmente Más Rápida

Tradicionalmente, un modelo de lenguaje emplea diferentes componentes para equiparse con capacidades de generación de contenido, incluyendo capas feedforward, capas recurrentes, capas incrustadas y capas de atención. Estos componentes son responsables de aprender a reconocer patrones durante el entrenamiento y, en última instancia, generar salidas precisas en función de los textos de entrada. Cada uno de estos componentes tiene algunos parámetros, y en modelos de lenguaje, la mayoría de estos parámetros están en las capas feedforward. Sin embargo, estas capas feedforward no utilizan el 100% de las neuronas disponibles para generar salidas para cada entrada en el momento de la interferencia, lo que lleva a un desperdicio de recursos que aumenta la complejidad, el tiempo de cálculo y los costos computacionales.

En su núcleo, el marco UltraFastBERT es una variante del marco BERT, se basa en este concepto y reemplaza las capas feedforward con redes feedforward más rápidas en su arquitectura, lo que resulta en que el marco UltraFastBERT utilice solo el 0,3% de las neuronas disponibles mientras entrega resultados comparables a los modelos BERT con un tamaño y proceso de entrenamiento similares, especialmente en las tareas downstream. Debido a sus implementaciones de diseño, las capas intermedias en el marco UltraFastBERT son exponencialmente más rápidas.

Dado una red feedforward rápida (FFF) y una red feedforward (FF), cada una con n número de neuronas, la complejidad temporal de una pasada hacia adelante en una red feedforward es O(n), mientras que la complejidad temporal es O(log2n) para una red feedforward rápida, y la diferencia en complejidad temporal se debe principalmente a que en una red feedforward rápida, las neuronas se organizan en un árbol binario equilibrado y, cuando se proporciona la entrada, la red ejecuta solo una rama del árbol de forma condicional. Además, realizar interferencia en una red feedforward rápida da como resultado la multiplicación de matrices condicional (CMM), en la que las filas de entrada se multiplican con las columnas de peso naturales de forma individual, y la salida de la operación de producto anterior determina el peso de las columnas para proceder. En consecuencia, la red utiliza todas las neuronas solo para algunas entradas, y ninguna entrada requiere más de unas pocas neuronas para ser manejada por la red. El producto de CMM se contrasta con la multiplicación de matrices densas (DMM) que calcula el producto de todas las entradas con todas las columnas de peso.

En resumen, UltraFastBERT es un marco basado en BERT que proporciona resultados comparables a los modelos de lenguaje BERT de vanguardia que

  1. Utiliza solo el 0,3% de las neuronas disponibles durante la fase de interferencia y solo 12 neuronas de un total de 4095 neuronas para cada capa de interferencia.
  2. Entrega un rendimiento sólido comparable a los modelos BERT de vanguardia al implementar estrategias de ajuste fino en tareas downstream.
  3. Proporciona una implementación nativa de la multiplicación de matrices condicional (CMM) que forma la base de la red feedforward rápida y, en última instancia, conduce a un aumento de velocidad de 78 veces en comparación con la multiplicación de matrices densas (DMM) optimizada.

Redes Neuronales Feedforward

Una red neuronal feedforward es una de las redes neuronales artificiales más sencillas que mueve la información solo en la dirección hacia adelante, desde los nodos de entrada hasta los nodos de salida a través de nodos ocultos. Uno de los aspectos destacados de una red neuronal feedforward es que no hay bucles o ciclos en dichas redes y son más sencillas de construir en comparación con las RNN o Redes Neuronales Recurrentes y las CNN o Redes Neuronales Convolucionales. La arquitectura de una red neuronal feedforward se compone de tres componentes: capas de entrada, capas ocultas y capas de salida, y cada capa consta de unidades llamadas neuronas, y cada capa está interconectada con la otra mediante pesos.

Las neuronas presentes en las capas de entrada reciben entradas y las reenvían a la siguiente capa. La cantidad de neuronas en cada capa de entrada se determina por la dimensión de los datos de entrada. A continuación, tenemos las capas ocultas que no están expuestas a la entrada o la salida y son responsables de los cálculos necesarios. Las neuronas en cada capa oculta toman la suma ponderada de las salidas dadas por la capa anterior, aplican una función de activación y pasan el resultado a la siguiente capa, y el proceso se repite una y otra vez. Finalmente, tenemos la capa de salida que produce la salida para las entradas dadas. Cada neurona en cada capa de una red feedforward rápida está interconectada con cada neurona en la siguiente capa, lo que hace que las redes FFF sean una red completamente conectada. Los pesos se utilizan para representar la fuerza de la conexión entre las neuronas, y la red actualiza estos pesos para aprender los patrones actualizando los pesos en función del error que ocurre en la salida.

Avanzando, hay dos fases clave en el funcionamiento de una red neuronal feedforward: la fase feedforward y la fase de propagación hacia atrás.

Fase Feedforward

En la fase feedforward, la entrada se alimenta a la red y se propaga hacia adelante. Las capas ocultas calculan la suma ponderada de las entradas, introducen no linealidad en el modelo al pasar la suma de las entradas a través de una función de activación como ReLu, Sigmoid y TanH. El proceso se repite una y otra vez hasta que los pesos llegan a la capa de salida y el modelo hace una predicción.

Fase de Propagación hacia Atrás

Una vez que el modelo hace una predicción, calcula el error entre la salida generada y la salida esperada. El error se propaga hacia atrás a través de la red, y la red utiliza un algoritmo de optimización de gradiente descendente para ajustar los pesos en un intento de minimizar el error.

UltraFastBERT: Arquitectura del Modelo y Funcionamiento

El marco UltraFastBERT se basa en la arquitectura crammedBERT, y el marco UltraFastBERT emplea todos los componentes de la arquitectura crammedBERT excepto la naturaleza de las capas intermedias. En su lugar, el marco UltraFastBERT reemplaza el codificador de transformador en las redes feedforward contenidas en las capas intermedias de la arquitectura crammedBERT con redes feedforward rápidas. El marco UltraFastBERT realiza los siguientes cambios en las redes feedforward originales.

  1. El marco elimina la diferencia entre nodos hoja y nodos no hoja al utilizar la función de activación GeLu en todos los nodos y equiparlos con pesos de salida y eliminar los sesgos de salida en su totalidad. Después de esto, el marco fija el tamaño de la hoja a 1.
  2. Finalmente, el marco permite múltiples árboles de redes feedforward rápidas en paralelo al calcular conjuntamente las capas de salida intermedias. El marco logra esta computación tomando la suma de los árboles individuales y luego presenta la suma como la capa de salida intermedia.

Avanzando, en el entrenamiento, el marco UltraFastBERT sigue el procedimiento de entrenamiento empleado por la arquitectura crammedBERT que incluye deshabilitar el dropout en el preentrenamiento y utilizar el programa de aprendizaje de tasa triangular de 1 ciclo. El modelo se ajusta entonces para maximizar su rendimiento en una amplia variedad de tareas, principalmente del conjunto de datos GLUE, durante un total de 5 épocas.

Interferencia

La interferencia es una parte importante para una red feedforward rápida, y estas redes feedforward en sí mismas forman una parte importante de los grandes modelos de lenguaje, y son conocidas por su excepcional potencial de aceleración. Para entender este potencial de aceleración, consideremos un ejemplo de uno de los modelos de lenguaje más avanzados, el GPT-3, en el que las redes feedforward en cada capa de transformador constan de más de 49.100 neuronas. Si se entrenara, una red feedforward rápida (profundidad máxima de 15) podría reemplazar la red feedforward original. La red feedforward rápida introducida tendría más de 65.000 neuronas, pero solo utilizaría 16 de estas neuronas para la interferencia, lo que equivale aproximadamente al 0,03% de las neuronas disponibles para el GPT-3.

Algoritmo y Compatibilidad

El marco UltraFastBERT utiliza un algoritmo de pseudocódigo recursivo para la interferencia de redes feedforward rápidas, y el algoritmo se muestra en la imagen a continuación.

Aquí, B representa el tamaño del lote, H representa el ancho de las capas de entrada y M representa las columnas. Otra causa importante de preocupación con el uso del enfoque de multiplicación de matrices condicional es si hace que las redes feedforward rápidas sean incompatibles con el proceso que ya se utiliza para la multiplicación de matrices densas y los marcos de aprendizaje profundo existentes. Afortunadamente, el uso de CMM no afecta el rendimiento ni introduce incompatibilidad, aunque aumenta la complejidad de caché.

Es vital tener en cuenta que, como parte de la red feedforward rápida, la multiplicación de matrices densas de un solo hilo depende de la ejecución de las instrucciones de multiplicación y acumulación (MAC), y, en consecuencia, reemplazar DMM con el enfoque CMM beneficiará a las CPU porque se necesitan menos instrucciones MAC para calcular la salida de la capa por elemento. Por lo tanto, a pesar de emplear una condicionalidad que normalmente se asocia con ramificación, la “ramificación neuronal” actúa como una adición al desplazamiento de memoria de los punteros relevantes en el marco. Por lo tanto, en el marco UltraFastBERT, la predicción de la rama de instrucción nunca se compromete completamente para facilitar la condicionalidad de la CMM, y solo carga las columnas relevantes de la matriz de peso de forma individual. Además, dado que el marco realiza productos de filas y columnas, el procesamiento paralelo de vectores de una sola instrucción, múltiples datos (SIMD) todavía es una buena opción para acelerar las implementaciones de interferencia para dispositivos específicos.

UltraFastBERT: Rendimiento y Resultados

Hablaremos sobre el rendimiento del marco UltraFastBERT para el ajuste fino y las tareas de interferencia para analizar cómo se desempeña el marco en comparación con los modelos de lenguaje de vanguardia.

Resultados de Ajuste Fino

La siguiente figura muestra el rendimiento de varios modelos en los conjuntos de datos de prueba GLUE-dev. Aquí, N representa el número de neuronas disponibles para los marcos para el entrenamiento, “Avg” representa la puntuación promedio de todas las tareas.

Como se puede ver claramente, el marco UltraFastBERT que se ha entrenado en la GPU A6000 durante más de 24 horas logra retener casi el 96% del rendimiento predictivo en las tareas downstream de GLUE en comparación con el marco BERT original. Además, también se puede ver que con el aumento de la profundidad de las redes feedforward rápidas, el rendimiento de los marcos experimenta una disminución, aunque la mayor parte de la degradación del rendimiento ocurre solo para la tarea CoLa. Si se ignora la tarea CoLa por un momento, el marco UltraFastBERT devuelve una puntuación de rendimiento predictivo de aproximadamente el 98,6%.

Resultados de Interferencia

En esta sección, compararemos el rendimiento de varias redes feedforward o redes feedforward rápidas en implementaciones de interferencia, y estas implementaciones se extienden a lo largo de tres niveles.

  1. En la implementación de nivel 1, la implementación se construye utilizando rutinas de nivel 1 de BLAS, como el producto escalar-vector y los productos de vector-vector.
  2. En el nivel 2, las implementaciones utilizan rutinas de nivel 2 de BLAS, como el producto escalar-vector por lotes y los productos de matriz-vector por lotes.
  3. En el nivel 3, las implementaciones emplean el enfoque de multiplicación de matrices por lotes no agrupados de nivel 3 de BLAS, y aunque es la implementación más rápida disponible para las redes feedforward, tales implementaciones no están disponibles para las redes feedforward rápidas porque la biblioteca no admite la dispersión de vector de la multiplicación de matrices condicional.

Además, el marco UltraFastBERT despliega implementaciones de GPU mediante el uso de núcleos CUDA personalizados o PyTorch.

La tabla anterior compara el rendimiento del marco UltraFastBERT con sus predecesores, los marcos basados en BERT, en términos de capas feedforward y capas feedforward rápidas, donde cada columna contiene las aceleraciones de implementación de interferencia de feedforward rápida relativas cuando utilizan los mismos primitivos de operaciones de álgebra lineal.

Sin embargo, es importante tener en cuenta que las aceleraciones informadas en la tabla anterior están destinadas a “comparaciones justas”, es decir, tanto las implementaciones de feedforward como las implementaciones de feedforward rápidas utilizan los mismos primitivos de operaciones de álgebra lineal. Además, en los niveles 1 y 2, las implementaciones de las redes feedforward rápidas pueden realizar la interferencia 48 veces y 78 veces más rápido que la implementación de feedforward más rápida, respectivamente.

Pensamientos Finales

En este artículo, hemos hablado sobre UltraFastBERT, una variante del marco BERT, que se basa en el concepto de que las capas feedforward no utilizan el 100% de las neuronas disponibles para generar salidas para cada entrada en el momento de la interferencia, lo que lleva a un desperdicio de recursos que aumenta la complejidad, el tiempo de cálculo y los costos computacionales, y reemplaza las capas feedforward con redes feedforward más rápidas en su arquitectura, lo que resulta en que el marco UltraFastBERT utilice solo el 0,3% de las neuronas disponibles mientras entrega resultados comparables a los modelos BERT con un tamaño y proceso de entrenamiento similares, especialmente en las tareas downstream.

Debido a sus implementaciones de diseño, las capas intermedias en el marco UltraFastBERT son exponencialmente más rápidas. Además, el rendimiento sólido entregado por el marco UltraFastBERT es una prueba de que los LLM pueden entregar un rendimiento sólido al comprometer solo una fracción de sus parámetros para interferencias individuales, ya que el marco UltraFastBERT utiliza solo el 0,3% de las neuronas disponibles durante la interferencia y, sin embargo, logra un aumento de velocidad de 78 veces en los tiempos de interferencia.

Kunal Kejriwal es un ingeniero de backend especializado en Python, PostgreSQL, Redis e infraestructura en la nube en GCP y AWS. Con tres años de experiencia construyendo y escalando sistemas de producción, escribe sobre infraestructura de IA, sistemas distribuidos y la arquitectura detrás del despliegue de cargas de trabajo de aprendizaje automático.