Guía para principiantes para construir tus propios modelos de lenguaje grandes desde cero.

Guía para construir modelos de lenguaje grandes desde cero para principiantes.

Introducción

Ya sea en Twitter o Linkedin, me encuentro con numerosas publicaciones sobre Modelos de Lenguaje Grande (LLMs) cada día. Tal vez me pregunte por qué hay una cantidad increíble de investigación y desarrollo dedicada a estos modelos intrigantes. Desde ChatGPT hasta BARD, Falcon y muchos otros, sus nombres giran alrededor, dejándome ansioso por descubrir su verdadera naturaleza. ¿Cómo se crean estos modelos? ¿Cómo construir modelos de lenguaje grandes? ¿Cómo poseen la capacidad de responder virtualmente cualquier pregunta que les hagas? Estas preguntas candentes han quedado en mi mente, alimentando mi curiosidad. Esta curiosidad insaciable ha encendido un fuego dentro de mí, empujándome a sumergirme de lleno en el mundo de los LLMs.

Acompáñenme en un emocionante viaje mientras discutimos el estado actual del arte en LLMs. Juntos, desvelaremos los secretos detrás de su desarrollo, comprenderemos sus extraordinarias capacidades y arrojaremos luz sobre cómo han revolucionado el mundo del procesamiento del lenguaje.

Objetivos de Aprendizaje

  1. Aprender sobre LLMs y su estado actual del arte.
  2. Comprender los diferentes LLMs disponibles y los enfoques para entrenar estos LLMs desde cero.
  3. Explorar las mejores prácticas para entrenar y evaluar LLMs.

Prepárense y comencemos nuestro viaje hacia el dominio de los LLMs.

Una Breve Historia de los Modelos de Lenguaje Grandes

La historia de los Modelos de Lenguaje Grandes se remonta a la década de 1960. En 1967, un profesor del MIT construyó el primer programa de Procesamiento del Lenguaje Natural (NLP, por sus siglas en inglés) llamado Eliza para entender el lenguaje natural. Utiliza técnicas de coincidencia de patrones y sustitución para comprender e interactuar con los humanos. Más tarde, en 1970, otro programa de NLP fue construido por el equipo del MIT para entender e interactuar con los humanos, conocido como SHRDLU.

En 1988, se introdujo la arquitectura de redes neuronales recurrentes (RNN) para capturar la información secuencial presente en los datos de texto. Durante la década de 2000, hubo una extensa investigación en NLP utilizando RNNs. Los modelos de lenguaje utilizando RNNs eran las arquitecturas más avanzadas hasta la fecha. Sin embargo, los RNNs funcionaban bien solo con oraciones más cortas pero no con oraciones largas. Por lo tanto, en 2013 se introdujo el LSTM. Durante este período, surgieron grandes desarrollos en aplicaciones basadas en LSTM. Simultáneamente, también comenzó la investigación en mecanismos de atención.

Hubo 2 preocupaciones principales con LSTM. LSTM resolvió el problema de las oraciones largas en cierta medida, pero realmente no pudo destacar al trabajar con oraciones realmente largas. El entrenamiento de modelos LSTM no podía ser paralelizado. Debido a esto, el entrenamiento de estos modelos tomaba más tiempo.

En 2017, hubo un avance en la investigación de NLP a través del artículo Attention Is All You Need. Este artículo revolucionó todo el panorama de NLP. Los investigadores introdujeron la nueva arquitectura conocida como Transformers para superar los desafíos con los LSTMs. Los Transformers fueron esencialmente los primeros LLM desarrollados que contenían una gran cantidad de parámetros. Los Transformers se convirtieron en modelos de vanguardia para los LLMs. Incluso hoy en día, el desarrollo de LLMs sigue siendo influenciado por los transformers.

En los próximos cinco años, hubo una investigación significativa centrada en la construcción de mejores LLMs en comparación con los transformers. El tamaño de los LLM aumentó exponencialmente con el tiempo. Los experimentos demostraron que aumentar el tamaño de los LLMs y los conjuntos de datos mejoraba el conocimiento de los LLMs. Por lo tanto, se introdujeron LLMs como BERT, GPT y sus variantes como GPT-2, GPT-3, GPT 3.5 y XLNet con un aumento en el tamaño de los parámetros y conjuntos de datos de entrenamiento.

En 2022, hubo otro avance en NLP, ChatGPT. ChatGPT es un LLM optimizado para diálogos que es capaz de responder cualquier cosa que desees. En un par de meses, Google presentó BARD como competidor de ChatGPT.

En el último año, se han desarrollado cientos de Modelos de Lenguaje Grandes. Puedes obtener la lista de LLMs de código abierto junto con su ranking de rendimiento aquí. El LLM de última generación hasta la fecha es Falcon 40B Instruct.

¿Qué son los Modelos de Lenguaje Grandes?

En pocas palabras, los Modelos de Lenguaje Grandes son modelos de aprendizaje profundo entrenados con conjuntos de datos enormes para entender los lenguajes humanos. Su objetivo principal es aprender y comprender los lenguajes humanos de manera precisa. Los Modelos de Lenguaje Grandes permiten a las máquinas interpretar los lenguajes de la misma manera que nosotros, los humanos, los interpretamos.

Los Modelos de Lenguaje Grandes aprenden los patrones y las relaciones entre las palabras en el lenguaje. Por ejemplo, comprende la estructura sintáctica y semántica del lenguaje, como la gramática, el orden de las palabras y el significado de las palabras y frases. Adquiere la capacidad de comprender el lenguaje en su totalidad.

Pero, ¿en qué se diferencian exactamente los modelos de lenguaje de los Modelos de Lenguaje Grandes?

Los modelos de lenguaje y los Modelos de Lenguaje Grandes aprenden y comprenden el lenguaje humano, pero la diferencia principal radica en el desarrollo de estos modelos.

Los modelos de lenguaje son generalmente modelos estadísticos desarrollados utilizando HMMs o modelos basados en probabilidades, mientras que los Modelos de Lenguaje Grandes son modelos de aprendizaje profundo con miles de millones de parámetros entrenados en un conjunto de datos muy grande.

Pero, ¿por qué necesitamos Modelos de Lenguaje Grandes en primer lugar?

¿Por qué Modelos de Lenguaje Grandes?

La respuesta a esta pregunta es simple. Los MLG son modelos agnósticos a la tarea. Literalmente, estos modelos tienen la capacidad de resolver cualquier tarea. Por ejemplo, ChatGPT es un ejemplo clásico de esto. Cada vez que le preguntas algo a ChatGPT, te sorprende.

Y otra característica asombrosa de estos MLG es que no tienes que ajustar los modelos como cualquier otro modelo preentrenado para tu tarea. Lo único que necesitas hacer es proporcionarle una indicación al modelo. Él hace el trabajo por ti. Por lo tanto, los MLG proporcionan soluciones instantáneas a cualquier problema en el que estés trabajando. Además, es solo un modelo para todos tus problemas y tareas. Por lo tanto, estos modelos son conocidos como los modelos fundamentales en el procesamiento del lenguaje natural (NLP, por sus siglas en inglés).

Diferentes tipos de MLG

Los MLG se pueden clasificar ampliamente en 2 tipos según su tarea:

  1. Continuación del texto
  2. Optimizado para diálogos

Continuación del Texto

Estos MLG están entrenados para predecir la siguiente secuencia de palabras en el texto de entrada. Su tarea es continuar el texto.

Por ejemplo, dado el texto “¿Cómo estás?”, estos MLG podrían completar la oración con “¿Cómo estás haciendo?” o “¿Cómo estás? Estoy bien”.

La lista de MLG que pertenecen a esta categoría son: Transformers, BERT, XLNet, GPT y sus variantes como GPT-2, GPT-3, GPT-4, etc.

Ahora, el problema con estos MLG es que son muy buenos en completar el texto en lugar de responder. A veces, esperamos una respuesta en lugar de una continuación.

Como se discutió anteriormente, dado “¿Cómo estás?” como entrada, el MLG intenta completar el texto con “¿Cómo estás haciendo?” o “¿Cómo estás? Estoy bien”. La respuesta puede ser cualquiera de ellos: una continuación o una respuesta. Es exactamente por eso que se introdujeron los MLG optimizados para diálogos.

2. Optimizado para diálogos

Estos MLG responden con una respuesta en lugar de completarla. Dado el texto de entrada “¿Cómo estás?”, estos MLG podrían responder con “Estoy bien.” en lugar de completar la oración.

La lista de MLG optimizados para diálogos incluye: InstructGPT, ChatGPT, BARD, Falcon-40B-instruct, etc.

Ahora veremos los desafíos involucrados en el entrenamiento de MLG desde cero.

¿Cuáles son los desafíos del entrenamiento de MLG?

El entrenamiento de MLG desde cero es realmente desafiante debido a 2 factores principales: infraestructura y costo.

Infraestructura

Los MLG se entrenan en un corpus de texto masivo que tiene al menos el tamaño de 1000 GB. Los modelos utilizados para entrenar estos conjuntos de datos son muy grandes y contienen miles de millones de parámetros. Para entrenar estos modelos grandes en el corpus de texto masivo, necesitamos configurar una infraestructura/hardware que admita múltiples GPUs. ¿Puedes adivinar cuánto tiempo llevaría entrenar GPT-3, un modelo con 175 mil millones de parámetros, en una sola GPU NVIDIA Tesla V100?

Llevaría 355 años entrenar GPT-3 en una sola GPU NVIDIA Tesla V100.

Esto muestra claramente que no es posible entrenar MLG en una sola GPU. Se requiere cómputo distribuido y paralelo con miles de GPUs.

Solo para darte una idea, aquí está el hardware utilizado para entrenar MLG populares:

  1. Falcon-40B se entrenó en 384 GPU A100 40GB, utilizando una estrategia de paralelismo en 3D (TP=8, PP=4, DP=12) combinado con ZeRO.
  2. Los investigadores calcularon que OpenAI podría haber entrenado GPT-3 en tan solo 34 días con 1,024x GPU A100.
  3. PaLM (540B, Google): se utilizaron un total de 6144 chips TPU v4.

Costo

Es muy obvio a partir de lo anterior que la infraestructura de GPU es muy necesaria para entrenar LLMs desde cero. Configurar una infraestructura de este tamaño es muy costoso. Las empresas e instituciones de investigación invierten millones de dólares para configurarla y entrenar LLMs desde cero.

Se estima que GPT-3 costó alrededor de $4.6 millones de dólares para entrenarlo desde cero

En promedio, el modelo de 7B parámetros costaría aproximadamente $25000 para entrenarlo desde cero.

Ahora, veremos cómo entrenar LLMs desde cero

¿Cómo entrenas LLMs desde cero?

El proceso de entrenamiento de LLMs es diferente para el tipo de LLM que deseas construir, ya sea continuación del texto o optimizado para diálogos. El rendimiento de LLMs depende principalmente de 2 factores: conjunto de datos y arquitectura del modelo. Estos 2 son los principales factores que impulsan el rendimiento de LLMs.

Veamos ahora los diferentes pasos involucrados en el entrenamiento de los LLMs.

1. Continuación del Texto

El proceso de entrenamiento de los LLMs que continúan el texto se conoce como preentrenamiento de LLMs. Estos LLMs se entrenan en aprendizaje auto-supervisado para predecir la siguiente palabra en el texto. Veremos exactamente los diferentes pasos involucrados en el entrenamiento de LLMs desde cero.

a. Recolección de Conjunto de Datos

El primer paso en el entrenamiento de LLMs es recolectar un corpus masivo de datos de texto. El conjunto de datos juega el papel más significativo en el rendimiento de LLMs. Recientemente, OpenChat es el último modelo de lenguaje grande optimizado para diálogos, inspirado en LLaMA-13B. Alcanza el 105.7% de la puntuación de ChatGPT en la evaluación de Vicuna GPT-4. ¿Sabes cuál es el motivo de su éxito? Son los datos de alta calidad. Se ha ajustado finamente con solo ~6K datos.

Los datos de entrenamiento se crean raspando internet, sitios web, plataformas de redes sociales, fuentes académicas, etc. Asegúrate de que los datos de entrenamiento sean lo más diversos posible.

Trabajos recientes han demostrado que una mayor diversidad de conjunto de datos de entrenamiento mejora el conocimiento general entre dominios y la capacidad de generalización para modelos de lenguaje a gran escala

¿Qué dice? Permíteme explicarlo.

Es posible que hayas visto titulares como “ChatGPT falló en el JEE” o “ChatGPT no pasa el UPSC” y así sucesivamente. ¿Cuáles pueden ser las posibles razones? La razón es que carecía del nivel necesario de inteligencia. Esto depende en gran medida del conjunto de datos utilizado para el entrenamiento. Por lo tanto, la demanda de conjuntos de datos diversos continúa aumentando, ya que los conjuntos de datos de alta calidad y transversales tienen un impacto directo en la generalización del modelo en diferentes tareas.

¡Desbloquea el potencial de LLMs con datos de alta calidad!

Anteriormente, Common Crawl era el conjunto de datos utilizado para entrenar LLMs. Common Crawl contiene datos de páginas web sin procesar, metadatos extraídos y extracciones de texto desde 2008. El tamaño del conjunto de datos está en petabytes (1 petabyte = 1e6 GB). Se ha demostrado que los modelos de lenguaje grande entrenados con este conjunto de datos mostraron resultados efectivos pero no lograron generalizar bien en otras tareas. Por lo tanto, se creó un nuevo conjunto de datos llamado Pile a partir de 22 conjuntos de datos diversos de alta calidad. Es una combinación de fuentes de datos existentes y nuevos conjuntos de datos en el rango de 825 GB. En tiempos recientes, se lanzó una versión refinada del Common Crawl bajo el nombre de RefinedWeb Dataset. Los conjuntos de datos utilizados para GPT-3 y GPT-4 no se han hecho de código abierto para mantener una ventaja competitiva sobre los demás.

b. Preprocesamiento del Conjunto de Datos

El siguiente paso es preprocesar y limpiar el conjunto de datos. Como el conjunto de datos se obtiene de múltiples páginas web y diferentes fuentes, es probable que contenga diversas sutilezas. Debemos eliminar estas sutilezas y preparar un conjunto de datos de alta calidad para el entrenamiento del modelo.

Los pasos de preprocesamiento específicos dependen del conjunto de datos con el que estés trabajando. Algunos de los pasos de preprocesamiento comunes incluyen eliminar el código HTML, corregir errores ortográficos, eliminar datos tóxicos/sesgados, convertir emojis en su equivalente de texto y eliminar duplicados de datos. La eliminación de duplicados de datos es uno de los pasos de preprocesamiento más importantes al entrenar LLMs. Se refiere al proceso de eliminar contenido duplicado del corpus de entrenamiento.

Es obvio que los datos de entrenamiento pueden contener oraciones duplicadas o casi idénticas, ya que se recopilan de diversas fuentes de datos. Necesitamos la deduplicación de datos por 2 razones principales: Ayuda al modelo a no memorizar los mismos datos una y otra vez. Nos ayuda a evaluar mejor los LLM porque los datos de entrenamiento y prueba contienen información no duplicada. Si contiene información duplicada, existe una alta probabilidad de que la información que ha visto en el conjunto de entrenamiento se proporcione como salida durante el conjunto de prueba. Como resultado, los números reportados pueden no ser correctos. Puede leer más sobre técnicas de deduplicación de datos aquí .

c. Preparación del conjunto de datos

El siguiente paso es crear los pares de entrada y salida para entrenar el modelo. Durante la fase de preentrenamiento, los LLM se entrenan para predecir el siguiente token en el texto. Por lo tanto, los pares de entrada y salida se crean en consecuencia.

Por ejemplo, tomemos un corpus simple-

  • Ejemplo 1: Soy un Chatbot de DHS.
  • Ejemplo 2: DHS significa DataHack Summit.
  • Ejemplo 3: Puedo proporcionarte información sobre DHS

En el caso del ejemplo 1, podemos crear los pares de entrada-salida de la siguiente manera-

De manera similar, en el caso del ejemplo 2, la siguiente es una lista de pares de entrada y salida-

Cada par de entrada y salida se pasa al modelo para el entrenamiento. ¿Y ahora qué? Vamos a definir la arquitectura del modelo.

d. Arquitectura del modelo

El siguiente paso es definir la arquitectura del modelo y entrenar el LLM.

A día de hoy, se están desarrollando una gran cantidad de LLM. Puede obtener una visión general de diferentes LLM aquí . Los investigadores siguen un proceso estándar al construir LLM. La mayoría de los investigadores comienzan con una arquitectura existente de modelo de lenguaje grande como GPT-3 junto con los hiperparámetros reales del modelo. Y luego ajustan la arquitectura del modelo y los hiperparámetros para crear una arquitectura de modelo de vanguardia.

Por ejemplo,

  • Falcon es un LLM de vanguardia. Ocupa el primer lugar en la clasificación de LLM de código abierto. Falcon se inspira en la arquitectura de GPT-3 con algunas modificaciones.

Ajustar los hiperparámetros es un proceso muy costoso en términos de tiempo y costo. Imagina ejecutar este experimento para el modelo de mil millones de parámetros. ¿No es factible, verdad? Por lo tanto, el método ideal es utilizar los hiperparámetros del trabajo de investigación actual, por ejemplo, utilizar los hiperparámetros de GPT-3 mientras se trabaja con la arquitectura correspondiente y luego encontrar los hiperparámetros óptimos a pequeña escala y luego interpolarlos para el modelo final.

Los experimentos pueden involucrar cualquiera o todos los siguientes: inicialización de pesos, incrustaciones posicionales, optimizador, activación, tasa de aprendizaje, decaimiento de peso, función de pérdida, longitud de secuencia, número de capas, número de cabezales de atención, número de parámetros, capas densas vs. dispersas, tamaño de lote y abandono.

Discutamos ahora las mejores prácticas para los hiperparámetros populares-

ChatGPT es un LLM optimizado para diálogos. El método de entrenamiento de ChatGPT es similar a los pasos discutidos anteriormente. Solo que incluye un paso adicional conocido como RLHF, aparte del preentrenamiento y el ajuste fino supervisado.

Pero recientemente, ha habido un artículo conocido como LIMA: Less Is for More Alignment . Revela que no necesitas RLHF en absoluto en primer lugar. Todo lo que necesitas es el preentrenamiento en una gran cantidad de datos y el ajuste fino supervisado en datos de alta calidad, tan poco como 1000 datos.

A día de hoy, OpenChat es el último modelo de gran lenguaje optimizado para diálogos inspirado en LLaMA-13B. Logra el 105.7% de la puntuación de ChatGPT en la evaluación de Vicuna GPT-4. Se ha ajustado finamente solo con 6k datos de alta calidad.

¿Cómo evalúas los LLM?

La evaluación de los LLM no puede ser subjetiva. Tiene que ser un proceso lógico para evaluar el rendimiento de los LLM.

En el caso de problemas de clasificación o regresión, tenemos las etiquetas reales y las etiquetas predichas y luego las comparamos para entender qué tan bien está funcionando el modelo. ¿Miramos la matriz de confusión para esto, verdad? ¿Pero qué pasa con los grandes modelos de lenguaje? Ellos simplemente generan el texto.

Existen 2 formas de evaluar los LLM (Large Language Models): métodos intrínsecos y métodos extrínsecos.

Métodos Intrínsecos

Los modelos de lenguaje tradicionales se evaluaban utilizando métodos intrínsecos como la perplejidad, bits por carácter, etc. Estas métricas miden el rendimiento en el ámbito del lenguaje, es decir, qué tan bien el modelo es capaz de predecir la siguiente palabra.

Métodos Extrínsecos

Con los avances en los LLM de hoy en día, se prefieren los métodos extrínsecos para evaluar su rendimiento. La forma recomendada de evaluar los LLM es ver qué tan bien se desempeñan en diferentes tareas como resolución de problemas, razonamiento, matemáticas, ciencias de la computación y exámenes competitivos como MIT, JEE, etc.

EleutherAI lanzó un marco llamado Language Model Evaluation Harness para comparar y evaluar el rendimiento de los LLM. Hugging Face integró este marco de evaluación para evaluar los LLM de código abierto desarrollados por la comunidad.

El marco propuesto evalúa los LLM en 4 conjuntos de datos diferentes. La puntuación final es la agregación de la puntuación de cada conjunto de datos.

  • AI2 Reasoning Challenge: Una colección de preguntas de ciencias diseñadas para estudiantes de primaria.
  • HellaSwag: Una prueba que desafía a los modelos de última generación a realizar inferencias de sentido común, que son relativamente fáciles para los humanos (con una precisión del 95%).
  • MMLU: Una prueba exhaustiva que evalúa la precisión multitarea de un modelo de texto. Incluye 57 tareas diferentes que abarcan temas como matemáticas básicas, historia de EE. UU., ciencias de la computación, derecho y más.
  • TruthfulQA: Una prueba creada específicamente para evaluar la tendencia de un modelo a generar respuestas precisas y evitar reproducir información falsa comúnmente encontrada en línea.

También te puede interesar: 10 proyectos emocionantes sobre grandes modelos de lenguaje (LLM).

Notas Finales

¡Espero que ahora estés listo para construir tus propios grandes modelos de lenguaje!

¿Alguna idea? Comenta abajo.

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

Ciencia de Datos

Motivando la Autoatención

¿Por qué necesitamos consultas, claves y valores? Desentrañando el mecanismo de auto-atención de una manera menos abr...

Inteligencia Artificial

Anunciando nuevas herramientas para ayudar a cada negocio a aprovechar la IA generativa

Desde startups hasta empresas, organizaciones de todos los tamaños están comenzando a utilizar la IA generativa. Quie...

Ciencia de Datos

Mejorando la inferencia de PyTorch en CPU desde la cuantificación posterior al entrenamiento hasta el multihilo.

Acelere el tiempo de inferencia en CPU con la selección de modelos, la cuantización posterior al entrenamiento con ON...