Inteligencia artificial
Modelos de lenguajes grandes basados en decodificadores: una guía completa
Modelos de lenguaje grande (LLM) han revolucionado el campo del procesamiento del lenguaje natural (PLN) al demostrar capacidades notables para generar texto similar a un humano, responder preguntas y ayudar con una amplia gama de tareas relacionadas con el lenguaje. En el centro de estos poderosos modelos se encuentra la arquitectura de transformador solo decodificador, una variante de la arquitectura del transformador original propuesta en el artículo fundamental "La atención es todo lo que necesitas”por Vaswani et al.
En esta guía completa, exploraremos el funcionamiento interno de los LLM basados en decodificadores, profundizando en los componentes fundamentales, las innovaciones arquitectónicas y los detalles de implementación que han impulsado estos modelos a la vanguardia de la investigación y las aplicaciones de PNL.
La arquitectura del transformador: un repaso
Antes de profundizar en los detalles de los LLM basados en decodificadores, es esencial revisar la arquitectura del transformador, la base sobre la que se construyen estos modelos. El transformador introdujo un enfoque novedoso para el modelado de secuencias, basándose únicamente en mecanismos de atención para capturar dependencias de largo alcance en los datos, sin la necesidad de capas recurrentes o convolucionales.
La arquitectura del transformador original consta de dos componentes principales: un codificador y un decodificador. El codificador procesa la secuencia de entrada y genera una representación contextualizada, que luego es consumida por el decodificador para producir la secuencia de salida. Esta arquitectura se diseñó inicialmente para tareas de traducción automática, donde el codificador procesa la oración de entrada en el idioma de origen y el decodificador genera la oración correspondiente en el idioma de destino.
Autoatención: la clave del éxito de Transformer
En el corazón de la transformador radica el mecanismo de autoatención, una técnica poderosa que permite al modelo sopesar y agregar información desde diferentes posiciones en la secuencia de entrada. A diferencia de los modelos de secuencia tradicionales, que procesan tokens de entrada de forma secuencial, la autoatención permite al modelo capturar dependencias entre cualquier par de tokens, independientemente de su posición en la secuencia.
La operación de autoatención se puede dividir en tres pasos principales:
- Proyecciones de consultas, claves y valores: La secuencia de entrada se proyecta en tres representaciones separadas: consultas (q), claves (K), y valores (V). Estas proyecciones se obtienen multiplicando la entrada con matrices de peso aprendidas.
- Cálculo de la puntuación de atención: Para cada posición en la secuencia de entrada, las puntuaciones de atención se calculan tomando el producto escalar entre el vector de consulta correspondiente y todos los vectores clave. Estas puntuaciones representan la relevancia de cada puesto para el puesto actual que se está procesando.
- Suma ponderada de valores: Las puntuaciones de atención se normalizan mediante una función softmax y las ponderaciones de atención resultantes se utilizan para calcular una suma ponderada de los vectores de valores, lo que produce la representación de salida para la posición actual.
La atención de múltiples cabezas, una variante del mecanismo de autoatención, permite que el modelo capture diferentes tipos de relaciones calculando puntuaciones de atención en múltiples "¡Aviso!”en paralelo, cada uno con su propio conjunto de proyecciones de consulta, clave y valor.
Variantes y configuraciones arquitectónicas
Si bien los principios básicos de los LLM basados en decodificadores siguen siendo consistentes, los investigadores han explorado varias variantes y configuraciones arquitectónicas para mejorar el rendimiento, la eficiencia y las capacidades de generalización. En esta sección profundizaremos en las diferentes opciones arquitectónicas y sus implicaciones.
Tipos de arquitectura
Los LLM basados en decodificadores se pueden clasificar en términos generales en tres tipos principales: codificador-decodificador, decodificador causal y decodificador de prefijo. Cada tipo de arquitectura exhibe distintos patrones de atención.
Arquitectura codificador-decodificador
Basada en el modelo Vanilla Transformer, la arquitectura codificador-decodificador consta de dos pilas: un codificador y un decodificador. El codificador utiliza capas de autoatención de múltiples cabezales apiladas para codificar la secuencia de entrada y generar representaciones latentes. Luego, el decodificador realiza atención cruzada sobre estas representaciones para generar la secuencia objetivo. Si bien son eficaces en diversas tareas de PNL, pocos LLM, como Flan-T5, adopta esta arquitectura.
Arquitectura del decodificador causal
La arquitectura del decodificador causal incorpora una máscara de atención unidireccional, lo que permite que cada token de entrada atienda solo a los tokens pasados y a sí mismo. Tanto los tokens de entrada como los de salida se procesan dentro del mismo decodificador. Modelos notables como GPT-1, GPT-2 y GPT-3 se basan en esta arquitectura, y GPT-3 muestra notables capacidades de aprendizaje en contexto. Muchos LLM, incluidos OPT, BLOOM y Gopher, han adoptado ampliamente decodificadores causales.
Arquitectura del decodificador de prefijo
También conocida como decodificador no causal, la arquitectura del decodificador de prefijo modifica el mecanismo de enmascaramiento de los decodificadores causales para permitir la atención bidireccional sobre los tokens de prefijo y la atención unidireccional sobre los tokens generados. Al igual que la arquitectura codificador-decodificador, los decodificadores de prefijos pueden codificar la secuencia de prefijos de forma bidireccional y predecir tokens de salida de forma autorregresiva utilizando parámetros compartidos. Los LLM basados en decodificadores de prefijos incluyen GLM130B y U-PaLM.
Los tres tipos de arquitectura se pueden ampliar utilizando el mezcla de expertos (MoE) técnica de escalado, que activa escasamente un subconjunto de pesos de red neuronal para cada entrada. Este enfoque se ha empleado en modelos como Switch Transformer y GLaM, y el aumento del número de expertos o del tamaño total de los parámetros muestra mejoras significativas en el rendimiento.
Transformador solo decodificador: adoptando la naturaleza autorregresiva
Si bien la arquitectura transformadora original fue diseñada para tareas de secuencia a secuencia como la traducción automática, muchas tareas de PNL, como el modelado de lenguaje y la generación de texto, pueden enmarcarse como problemas autorregresivos, donde el modelo genera un token a la vez, condicionado a la tokens generados previamente.
Ingrese el transformador solo decodificador, una variante simplificada de la arquitectura del transformador que conserva solo el componente decodificador. Esta arquitectura es particularmente adecuada para tareas autorregresivas, ya que genera tokens de salida uno por uno, aprovechando los tokens generados previamente como contexto de entrada.
La diferencia clave entre el transformador solo decodificador y el decodificador transformador original radica en el mecanismo de autoatención. En la configuración de solo decodificador, la operación de autoatención se modifica para evitar que el modelo preste atención a tokens futuros, una propiedad conocida como causalidad. Esto se logra mediante una técnica llamada "autoatención enmascarada", donde las puntuaciones de atención correspondientes a posiciones futuras se establecen en infinito negativo, enmascarándolas efectivamente durante el paso de normalización de softmax.
Componentes arquitectónicos de LLM basados en decodificadores
Si bien los principios básicos de la autoatención y la autoatención enmascarada siguen siendo los mismos, los LLM modernos basados en decodificadores han introducido varias innovaciones arquitectónicas para mejorar el rendimiento, la eficiencia y las capacidades de generalización. Exploremos algunos de los componentes y técnicas clave empleados en los LLM de última generación.
Representación de entrada
Antes de procesar la secuencia de entrada, los LLM basados en decodificadores emplean técnicas de tokenización e incrustación para convertir el texto sin formato en una representación numérica adecuada para el modelo.
Tokenization: El proceso de tokenización convierte el texto de entrada en una secuencia de tokens, que pueden ser palabras, subpalabras o incluso caracteres individuales, según la estrategia de tokenización empleada. Las técnicas de tokenización populares para LLM incluyen codificación de par de bytes (BPE), SentencePiece y WordPiece. Estos métodos tienen como objetivo lograr un equilibrio entre el tamaño del vocabulario y la granularidad de la representación, permitiendo que el modelo maneje palabras raras o fuera de vocabulario de manera efectiva.
Incrustaciones de tokens: Después de la tokenización, cada token se asigna a una representación vectorial densa llamada incrustación de token. Estas incorporaciones se aprenden durante el proceso de capacitación y capturan las relaciones semánticas y sintácticas entre los tokens.
Incrustaciones posicionales: Los modelos de transformadores procesan toda la secuencia de entrada simultáneamente, careciendo de la noción inherente de posiciones de tokens presentes en los modelos recurrentes. Para incorporar información posicional, se agregan incrustaciones posicionales a las incrustaciones de tokens, lo que permite que el modelo distinga entre tokens en función de sus posiciones en la secuencia. Los primeros LLM utilizaban incrustaciones posicionales fijas basadas en funciones sinusoidales, mientras que los modelos más recientes han explorado incrustaciones posicionales que se pueden aprender o técnicas de codificación posicional alternativas como incrustaciones posicionales rotativas.
Bloques de atención de múltiples cabezas
Los componentes básicos de los LLM basados en decodificadores son las capas de atención de múltiples cabezales, que realizan la operación de autoatención enmascarada descrita anteriormente. Estas capas se apilan varias veces, y cada capa atiende a la salida de la capa anterior, lo que permite que el modelo capture dependencias y representaciones cada vez más complejas.
Cabezas de atención: Cada capa de atención de múltiples cabezas consta de múltiples "cabezas de atención", cada una con su propio conjunto de proyecciones de consulta, clave y valor. Esto permite que el modelo preste atención a diferentes aspectos de la entrada simultáneamente, capturando diversas relaciones y patrones.
Conexiones residuales y normalización de capas.: Para facilitar el entrenamiento de redes profundas y mitigar el problema del gradiente que desaparece, los LLM basados en decodificadores emplean conexiones residuales y técnicas de normalización de capas. Las conexiones residuales agregan la entrada de una capa a su salida, lo que permite que los gradientes fluyan más fácilmente durante la retropropagación. La normalización de capas ayuda a estabilizar las activaciones y gradientes, mejorando aún más la estabilidad y el rendimiento del entrenamiento.
Capas de avance
Además de las capas de atención de múltiples cabezas, los LLM basados en decodificadores incorporan capas de retroalimentación, que aplican una red neuronal de retroalimentación simple a cada posición de la secuencia. Estas capas introducen no linealidades y permiten que el modelo aprenda representaciones más complejas.
Funciones de activación: La elección de la función de activación en las capas de avance puede afectar significativamente el rendimiento del modelo. Mientras que los LLM anteriores se basaban en la activación ReLU ampliamente utilizada, los modelos más recientes han adoptado funciones de activación más sofisticadas como la Unidad lineal de error gaussiano (GELU) o la activación SwiGLU, que han mostrado un rendimiento mejorado.
Escasa atención y transformadores eficientes
Si bien el mecanismo de autoatención es poderoso, presenta una complejidad computacional cuadrática con respecto a la longitud de la secuencia, lo que lo hace computacionalmente costoso para secuencias largas. Para abordar este desafío, se han propuesto varias técnicas para reducir los requisitos computacionales y de memoria de la autoatención, permitiendo el procesamiento eficiente de secuencias más largas.
Atención escasa: Las técnicas de atención dispersa, como la empleada en el modelo GPT-3, atienden selectivamente a un subconjunto de posiciones en la secuencia de entrada, en lugar de calcular puntuaciones de atención para todas las posiciones. Esto puede reducir significativamente la complejidad computacional manteniendo un rendimiento razonable.
Atención de ventana corrediza: Introducida en el modelo Mistral 7B, la atención de ventana deslizante (SWA) es una técnica simple pero efectiva que restringe la capacidad de atención de cada token a un tamaño de ventana fijo. Este enfoque aprovecha la capacidad de las capas transformadoras para transmitir información a través de múltiples capas, aumentando efectivamente la capacidad de atención sin la complejidad cuadrática de la autoatención total.
Caché de búfer rodante: Para reducir aún más los requisitos de memoria, especialmente para secuencias largas, el modelo Mistral 7B emplea un caché de búfer continuo. Esta técnica almacena y reutiliza los vectores de clave y valor calculados para un tamaño de ventana fijo, evitando cálculos redundantes y minimizando el uso de memoria.
Atención de consultas agrupadas: Introducida en el modelo LLaMA 2, la atención de consultas agrupadas (GQA) es una variante del mecanismo de atención de consultas múltiples que divide las cabezas de atención en grupos, cada grupo comparte una clave y una matriz de valores comunes. Este enfoque logra un equilibrio entre la eficiencia de la atención de consultas múltiples y el rendimiento de la autoatención estándar, proporcionando tiempos de inferencia mejorados y manteniendo resultados de alta calidad.