Inteligencia artificial
UltraFastBERT: Modelado de lenguaje exponencialmente más rápido

Los modelos de lenguaje y la inteligencia artificial generativa, renombrados por sus capacidades, son un tema candente en la industria de la inteligencia artificial. Los investigadores globales están mejorando su eficacia y capacidad. Estos sistemas, típicamente modelos de aprendizaje profundo, se entrenan previamente 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 las 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 al modelado de lenguaje exponencialmente más rápido
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 parte de estos parámetros está contenida en las capas feedforward. Sin embargo, estas capas feedforward no utilizan el 100% de las neuronas disponibles para generar la salida para cada entrada en el momento de la inferencia, 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 un red feedforward rápida (FFF) y una red feedforward (FF), cada una con n número de neuronas, la complejidad temporal de un paso 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 la 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 solo ejecuta una rama del árbol de forma condicional. Además, realizar la inferencia 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 por las columnas de peso naturales individualmente, y la salida de la operación de producto anterior determina el peso de las columnas para proceder. En consecuencia, la red solo utiliza todas las neuronas para unas pocas entradas, y ninguna entrada requiere más de unas pocas neuronas para ser manejada por la red. El producto de la multiplicación de matrices condicional contrasta con la multiplicación de matrices densa (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
- Utiliza solo el 0,3% de las neuronas disponibles durante la etapa de inferencia y solo utiliza 12 neuronas de un total de 4095 neuronas para cada capa de inferencia.
- Proporciona un rendimiento sólido comparable a los modelos BERT de vanguardia al implementar estrategias de ajuste fino en tareas downstream.
- 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 una aceleración de 78 veces en el rendimiento en comparación con la multiplicación de matrices densa (DMM) optimizada nativamente.
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 rápida es que no hay bucles o ciclos en dichas redes y son más sencillas de construir en comparación con las redes neuronales recurrentes (RNN) y las redes neuronales convolucionales (CNN). La arquitectura de una red neuronal feedforward rápida consta 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 ayuda de pesos.
Las neuronas presentes en las capas de entrada reciben las 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 ni a la entrada ni a 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 neuronal feedforward rápida está interconectada con cada neurona en la siguiente capa, lo que hace que las redes neuronales feedforward sean una red completamente conectada. Se utilizan pesos 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 etapas clave en el funcionamiento de una red neuronal feedforward rápida:
Fase feedforward
En la fase feedforward, la entrada se alimenta a la red y luego se propaga hacia adelante. Las capas ocultas calculan la suma ponderada de las entradas e 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 retropropagación
Una vez que el modelo hace una predicción, calcula el error entre la salida generada y la salida esperada. El error se retropropaga 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.
- El marco elimina la diferencia entre los nodos hoja y 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.
- 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 hacer 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 pruebas GLUE, durante un total de 5 épocas.
Interferencia
La interferencia es una parte importante para una red feedforward rápida, y estas redes feedforward rápidas en sí mismas forman una parte importante de los grandes modelos de lenguaje y son conocidas por su potencial de aceleración excepcional. 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 la red feedforward rápida 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 densa 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 densa de un solo hilo depende de la ejecución de las instrucciones de multiplicación y acumulación (MAC) y, en consecuencia, reemplazar la DMM con el enfoque de 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 la 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 individualmente. Además, dado que el marco realiza productos de punto de fila y columna, el procesamiento paralelo de datos de una sola instrucción (SIMD) sigue siendo 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 las tareas de ajuste fino y 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 entrenó 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 un declive, aunque la mayor parte de la degradación del rendimiento ocurre solo para la tarea CoLa. Si se descarta 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 las implementaciones de interferencia y estas implementaciones se distribuyen en tres niveles.
- En la implementación de nivel 1, la implementación se construye utilizando las rutinas de nivel 1 de BLAS, como el producto escalar-vector y los productos de punto vector-vector.
- En el nivel 2, las implementaciones utilizan las rutinas de nivel 2 de BLAS, como el producto escalar-vector por lotes y los productos de punto de matriz-vector por lotes.
- En el nivel 3, las implementaciones emplean el enfoque de multiplicación de matrices por lotes 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 vectorial de la multiplicación de matrices condicional.
Además, el marco UltraFastBERT despliega implementaciones de GPU utilizando kernels personalizados de CUDA 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ápido sobre feedforward 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 rápido como de feedforward utilizan las mismas operaciones de primitivos 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 la salida para cada entrada en el momento de la inferencia, 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 modelos de lenguaje grandes (LLM) pueden entregar un rendimiento sólido al comprometer solo una fracción de sus parámetros para las interferencias individuales, ya que el marco UltraFastBERT utiliza solo el 0,3% de las neuronas disponibles durante la inferencia y, sin embargo, logra una aceleración de 78 veces en los tiempos de interferencia.








