Decodificar LLMs Creando Codificadores Trasnformadores y Capas de Atención Multicabeza en Python desde cero

Decodificando LLMs Construyendo Codificadores, Transformadores y Capas de Atención Multicabeza en Python desde cero

Explorando las intrincacias de codificación de posicionamiento, encabezado múltiple y distribución semántica en grandes modelos de lenguaje

Este artículo fue coescrito con Rafael Nardi.

Introducción

Hoy en día, el Procesamiento Computacional del Lenguaje Natural (NLP) es un esfuerzo en constante evolución en el que la potencia de la computación se encuentra con la lingüística. El aspecto lingüístico se atribuye principalmente a la teoría de la Semántica Distributiva de John Rupert Firth. Él dijo una vez lo siguiente:

“Conocerás una palabra por las compañías que tiene”

Entonces, la representación semántica de una palabra se determina por el contexto en el que se está usando. Es precisamente en atención a esta premisa que el artículo “La atención es todo lo que necesitas” de Ashish Vaswani et. al. [1] asume su relevancia innovadora. Establece la arquitectura del transformador como el núcleo de muchas de las herramientas de rápido crecimiento como BERT, GPT4, Llama, etc.

En este artículo, examinamos las operaciones matemáticas clave en el corazón del segmento codificador en la arquitectura del transformador.

Figura 1: La auto-atención es compleja (imagen por el autor)

Como siempre, el código está disponible en nuestro GitHub.

Tokenización, Embeddings y Espacios Vectoriales

La primera tarea a la que uno se enfrenta al tratar con problemas de NLP es cómo codificar la información contenida en una oración para que la máquina pueda manejarla. Las máquinas solo pueden trabajar con números, lo que significa que las palabras, sus significados, puntuación, etc., deben traducirse a una representación numérica. Este es básicamente el problema del embedding.

Antes de adentrarnos en qué son los embeddings, debemos dar un paso intermedio y discutir la tokenización. Aquí, los bloques de palabras o partes de palabras se definen como los bloques de construcción básicos (llamados tokens) que luego se representarán como números. Una nota importante es que no podemos caracterizar una palabra o parte de palabra con un solo número y, por lo tanto, usamos listas de números (vectores). Esto nos da un mayor poder de representación.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Permite un entrenamiento más rápido con la biblioteca de paralelismo de datos de Amazon SageMaker

El entrenamiento de modelos de lenguaje de gran tamaño (LLM, por sus siglas en inglés) se ha vuelto cada vez más popu...

Inteligencia Artificial

Meet LLMWare Un marco de Inteligencia Artificial todo en uno para agilizar el desarrollo de aplicaciones basadas en LLM para aplicaciones de IA generativa

A pesar del gran interés en los Modelos de Lenguaje Grande LLM (por sus siglas en inglés) durante el último año, much...

Inteligencia Artificial

Obteniendo audio de imágenes estáticas, videos silenciosos

Una herramienta de aprendizaje automático desarrollada en la Universidad Northeastern puede obtener audio de imágenes...

Inteligencia Artificial

La manía de la IA ¿Se dirige hacia una burbuja a punto de estallar?

El mundo de la inteligencia artificial (IA) experimentó un gran aumento de interés por parte de los inversores de cap...

Inteligencia Artificial

¿En qué te has alimentado? Este modelo de IA puede extraer datos de entrenamiento de modelos de difusión

Los modelos de difusión se convirtieron en una parte clave del dominio de la IA en 2022. Hemos visto imágenes fotorre...