Explorando Modelos de Lenguaje Grandes – Parte 2

Explorando Modelos de Lenguaje Grandes - Parte 2

Usar LLMs de manera efectiva: Recuperación de información, Asistentes personales, Agentes de razonamiento causal, Explicabilidad y despliegue basado en control jerárquico.

Este artículo está escrito principalmente para el autoestudio. Por lo tanto, se aborda de manera amplia y profunda. Siéntete libre de saltar ciertas secciones según tus intereses o para buscar el área que te interese.

A continuación se presentan algunas de las preguntas que me intrigaron o surgieron mientras intentaba ajustar LLMs. El artículo es un intento de responder a estas preguntas y compartir esta información con otros curiosos.

Dado que los LLMs se basan en redes neuronales con función de pérdida, ¿no es todo el entrenamiento de LLMs un entrenamiento supervisado? ¿Por qué se le suele llamar entrenamiento no supervisado? ¿Puedes entrenar un LLM en una oración muy corta para ilustrar cómo funciona el entrenamiento de LLM en la práctica? ¿Qué es un Masked LM y un Causal LM? ¿Puedes explicar la intuición detrás de la arquitectura de Transformer en una sola imagen? ¿Qué se entiende exactamente por entrenamiento no supervisado en LLM? ¿Por qué el principal arquitecto de ChatGPT, Ilya Suverskar, considera el entrenamiento no supervisado como el Santo Grial del aprendizaje automático? ¿Qué se entiende por la Emergencia/Comprensión de los LLMs?

¿Cuáles son los casos de uso de los LLMs? ¿Por qué los LLMs son más adecuados como asistentes de productividad? ¿Cuál es el patrón de recuperación de información del Vector DB/Embedding? ¿Se pueden utilizar los LLMs para cosas distintas a las tareas textuales? ¿Qué es el razonamiento causal? ¿Cuál es el problema con los LLMs? ¿Por qué mentes como Yan LeCun piensan que los LLMs actuales son desesperanzadores? ¿Son los LLMs explicables, cómo se pueden utilizar de manera efectiva si no lo son?

¿Cuál es la necesidad de ajustar/volver a entrenar los LLMs? ¿Por qué es difícil entrenar LLMs? ¿Cómo ayudan la cuantización y LoRA en el entrenamiento de grandes LLMs? ¿Cómo funcionan la cuantización y LoRA? ¿Cuál es una forma efectiva de ajustar LLMs pre-entrenados? ¿Qué es Instruct Tuning? ¿Qué es Self Instruct? ¿Cómo podemos generar un conjunto de datos de entrenamiento de alta calidad para Instruct Tuning?

Aún por responder: ¿Puedes mostrar cómo se pueden estructurar jerárquicamente LLMs de diferentes capacidades para crear una automatización compleja con razonamiento causal? ¿Por qué estamos tratando de crear una inteligencia similar a la humana a partir de LLMs o redes neuronales? ¿Por qué esto parece extrañamente similar a crear un vuelo similar al de las aves en el pasado antes de la invención del avión de ala fija?

Dado que el artículo es bastante largo, lo he estructurado en tres partes para una mejor legibilidad.

Parte 1 discutirá la evolución del entrenamiento de LLMs. La intención es establecer el contexto para que podamos entender la magia, o más técnicamente, la emergencia, que comienza a suceder cuando el tamaño del modelo aumenta por encima de un umbral y se entrena con una gran cantidad de datos. Las secciones de inmersión profunda ilustran estos conceptos con mayor detalle y profundidad, aunque también son fáciles de seguir para la mayoría de los programadores.

Parte 2 discutirá brevemente los casos de uso populares de LLMs, asistentes personales y chatbots con datos personalizados a través de patrones de recuperación de información (búsqueda en espacio vectorial con augmentación de LLM). También exploraremos semillas sobre cómo el modelo mental y la comprensión del lenguaje natural de los modelos podrían convertirse en casos de uso más poderosos. En este contexto, exploraremos una limitación principal del modelo LLM al contrastar las fortalezas del entrenamiento supervisado con una debilidad de los modelos LLM: la falta de explicabilidad o la dificultad para determinar hechos frente a alucinaciones. Exploraremos cómo estos sistemas se han utilizado de manera muy efectiva en sistemas informáticos mediante una jerarquía de controles, sistemas poco confiables que se vuelven confiables mediante un control de nivel superior, como nuestro uso diario de ChatGPT, por ejemplo, y cómo se puede extender a otros casos de uso.

Parte 3 discutirá algunos conceptos relacionados con el entrenamiento de los LLMs en dominios personalizados. Nos enfocaremos en la comprensión del dominio en esta parte y en cómo esto es mucho más poderoso que los patrones simples de recuperación de información en el espacio vectorial. Esto es fácil en ejemplos de juguete, pero prácticamente no es muy fácil con datos reales. Exploraremos cómo las técnicas de cuantización han abierto LLMs muy grandes al mundo y cómo esto, junto con los conceptos de reducción de parámetros de entrenamiento, ha democratizado el ajuste fino de LLMs. Exploraremos la técnica principal de ajuste fino: Instruct tuning, y cómo resolver el mayor problema práctico de Instruct tuning: la falta de un conjunto de datos de entrenamiento de instrucciones de calidad con todos los conceptos que hemos revisado hasta ahora.

Las secciones futuras discutirán el concepto de aprovechar la comprensión de los LLMs y el uso de la jerarquía de controles para potenciar estos sistemas poderosos en la mejora de los sistemas de IA/ML.

Un caso de uso primario es Mejora de la productividad: Asistente inteligente.

Este es un patrón importante y ampliamente utilizable para LLMs. Este artículo “El Potencial Económico de la IA Generativa: La próxima frontera de la productividad” (junio de 2023) de McKinsey & Company tiene proyecciones sobre cómo este aspecto de los LLMs, aplicado en diferentes formatos, puede alterar el trabajo actual en diferentes sectores y agregar billones a la economía mundial.

Antes de entrar en los detalles, hubo una charla reciente en la que el autor habla sobre cómo se pueden construir sistemas más confiables a partir de sistemas menos confiables, citando el famoso diseño de la pila TCP/IP. Hay un diseño en capas donde las capas IP no confiables/con pérdidas se vuelven confiables mediante el control de transmisión y la lógica de retransmisión (en caso de detectar pérdida de paquetes) de la capa TCP.

El tipo de casos de uso del asistente también es en capas, donde las debilidades de los LLMs como las alucinaciones se superan mediante un control superior y mejor (generalmente un humano)

También podría ser un modelo más cognitivo que los modelos más simples. Esto es lo que hace que este caso de uso sea tan extendido y robusto. Un ejemplo clásico es el uso de Github Co-pilot por parte de los ingenieros de software. La inferencia del modelo se combina con un mejor control que puede utilizar de manera efectiva la salida, aprovechar los aspectos positivos y ajustar o descartar los aspectos negativos (errores, alucinaciones). Cuanto más capacitado sea el humano, más eficientemente podrá utilizar estos modelos. Las ganancias de alta eficiencia de este enfoque como asistente de programación o de dominio son bien conocidas en el poco tiempo desde su introducción. Lo mismo ocurre cuando se desarrollan estos asistentes para otros campos, como el reciente ejemplo de Med-Palm2 de Google y su capacidad sorprendente para ayudar a los médicos en el campo médico.

Esta necesidad de un mejor control está implícitamente vinculada al concepto de Explicabilidad.

Explicabilidad y su impacto.

Mencionamos aquí el caso de uso del asistente, el enfoque en capas y Med_Palm2. Lo que es implícito en esto es el concepto de Explicabilidad.

La explicabilidad es una debilidad en los LLMs en la actualidad.

Esto es lo que opina Yann LeCun. Lo expresa de manera bastante contundente

¡Los LLMs autorregresivos son malos! Son buenos como asistentes. No son buenos para proporcionar respuestas factuales y consistentes (debido a las alucinaciones), teniendo en cuenta la información reciente (siempre desactualizada debido al entrenamiento)

Los LLMs autorregresivos están condenados. No se pueden hacer que sean factuales y no se puede solucionar (sin un rediseño importante)…

La falta de explicabilidad obliga a un mayor nivel de control y una menor automatización. Hemos explorado anteriormente el caso de uso popular del asistente de dominio, o a través de ChatGPT, experimentamos a diario el caso de uso de nosotros, los humanos, como control de alto nivel.

Pero cuando hablamos de IA/ML, apuntamos a la automatización basada en computadoras. Para dar un ejemplo en un escenario no LLM y proporcionar algunas ideas, veamos cómo las redes neuronales convolucionales han revolucionado la visión por computadora y cómo superan este problema de explicabilidad de manera efectiva.

Incluso los mejores modelos de visión por computadora no tienen ningún entendimiento de las imágenes. En consecuencia, es muy fácil engañar a estos modelos con imágenes adversarias para predecir algo diferente. Un modelo entrenado para detectar, por ejemplo, algunas enfermedades a partir de imágenes médicas, no se puede confiar en que esté manipulado o capte algo en la imagen que se presente como similar a una imagen adversaria. (Los autos autónomos que dependen de cámaras a veces también interpretan incorrectamente los casos límite, a veces con resultados fatales)

Un mejor control: aquí un médico necesita revisar esto. Sin embargo, si un médico tuviera que revisar detalles minuciosos de las imágenes, no habría mucho uso en automatizar en primer lugar. Aquí es donde entra en juego la explicabilidad visual en la visión por computadora para casos de uso como este. El médico necesitará alguna explicación sobre por qué el modelo predijo como lo hizo: Explicabilidad de la predicción. Para la visión por computadora, esto puede representarse visualmente utilizando los algoritmos de Grad-CAM. A continuación, podemos ver que el modelo realmente está captando las características relevantes para predecir que la imagen contiene un cuerno francés. En el campo médico, donde los sujetos no son tan evidentes, esto ayuda a acelerar el diagnóstico con un control efectivo.

Fuente - Autor generado https://medium.com/data-science-engineering/how-to-train-your-cnn-a8c84d108a77

Para otros modelos de DL que se basan en datos, la Explicabilidad se refiere a las combinaciones de características que el modelo seleccionó para su predicción. La Explicabilidad es un problema difícil en todas partes en el ML, especialmente cuando se utiliza DL cuando hay demasiadas características en primer lugar para un motor basado en reglas o un humano para correlacionar. Pero aún así, es posible hasta cierto punto en sistemas de ML supervisados entrenados al eliminar características y verificar cómo afecta la salida del modelo y otros métodos similares.

Hasta que se inventen técnicas de este tipo en LLMs, se necesitará un control estricto ya que no hay forma de identificar las alucinaciones. La otra alternativa es utilizar estos escenarios donde algunos errores no importan mucho. Veremos un caso de uso de este tipo en el que utilizamos LLMs para crear datos de entrenamiento para entrenar LLMs en la Sección 3. Hay muchos otros casos de uso como motores de recomendación de productos mejorados y similares donde algunos errores no importan.

LLMs como motores de búsqueda (LLM mejorado de recuperación de información)

Este es un caso de uso extremadamente popular y en crecimiento, con nuevos actores surgiendo con frecuencia. Uno se preguntará por qué esto es mucho mejor que la búsqueda empresarial tradicional basada en técnicas de indexación de palabras clave.

La principal intuición técnica aquí es el Vector Embedding y la Búsqueda de Similitud; y la principal intuición no técnica de esto en comparación con otras búsquedas empresariales (por ejemplo, ElasticSearch) es que esto aprovecha el concepto de embedding contextual de palabras/embedding de frases.

Mientras que los motores de búsqueda convencionales indexan cada palabra (o el concepto de índice invertido de ES), en esto cada oración se agrupa según su similitud con otras oraciones. Esto lo convierte, en teoría, en agentes de recuperación de información mucho mejores. Necesitamos volver a la Parte 1 y ver cómo los Transformers ayudan a hacer esto a través de su mecanismo de Atención para entender esto más profundamente. Además, la primera parte de este artículo explica esto bastante profundamente para GPT2.

En la práctica, esto se hace calculando el embedding de orden superior o el embedding semántico de los datos a través de modelos pre-entrenados (como SentenceTransformers) y algunas bibliotecas como FAISS (Facebook AI Similarity Search) para una rápida recuperación basada en búsqueda de similitud de estos embeddings en relación con el vector similarmente calculado de la consulta del usuario. En lugar de, o también del embedding, FAISS u otras tecnologías similares son bases de datos de vectores en constante crecimiento, como Pinecone, Weviate, Milvus, etc. Vea este artículo de Forbes.

DeepDive: Todos los documentos se dividen primero en componentes (oraciones, párrafos o incluso documentos con URL y alguna información como metadatos) y se convierten en embeddings de vectores utilizando un modelo como Sentence Transformers. (Piensa en ellos como flotando en un espacio N-dimensional (N es un número muy grande), y los vectores similares se agrupan juntos en este espacio vectorial).

Aquí hay un Cuaderno de Colab donde se utiliza SentenceTransformer y FAISS con solo almacenamiento local para este patrón: https://colab.research.google.com/drive/1PU-KEHq-vUpUUhjbMbrJip6MP7zGBFk2?usp=sharing. Ten en cuenta que Langchain tiene envoltorios más simples sobre muchas bibliotecas y eso es lo que estamos usando arriba. La forma directa es un poco más críptica, consulta este cuaderno de Colab.

Se utiliza el embedding semántico de los fragmentos como embedding de vector. Por ejemplo, en caso de que estés utilizando LamaCPPEmbedding, puedes ver que los logits se recogen de la evaluación del modelo donde se selecciona el embedding de la última palabra para representar la oración. langchain -> lmacpp(python) -> lamacpp (c++)

La ventaja de este enfoque es que es más fácil calcular los embeddings de vectores y luego utilizar estos datos en comparación con el ajuste fino del modelo. La desventaja es que la selección de los datos se basa en no entender la consulta del usuario, sino en una división basada en las palabras de la consulta con la sofisticación de la atención/embedding semántico. El modelo no tiene una “comprensión” del dominio como hemos explicado anteriormente. Dado que se utiliza un modelo pre-entrenado, comprende la consulta y puede utilizar los contextos de la búsqueda de similitud para crear una respuesta significativa.

Por lo general, esto será suficiente para muchos usos. Pero si sientes que la misma cantidad de sutileza en la salida que obtienes, por ejemplo, con ChatGPT o Bard, es elusiva con esto, entonces la opción es ajustar finamente un modelo en tu dominio personalizado.

LLMs como Agentes de Razonamiento Causal

Relacionado con la Explicabilidad que descubrimos antes está el concepto de Causalidad en el ML (SHAP, LIME, The Book of Why – Judea Pearl explica este concepto más en profundidad y está fuera del alcance aquí).

En términos sencillos, es el razonamiento de causa y efecto. Imagina cómo los primeros humanos asociaban causa y efecto. Una noche estaban haciendo una danza ritualista y al día siguiente llovía.

Autor + Dalle2; Hombres de las cavernas asociando la danza con la lluvia

Esto se repitió una o dos veces más y ellos asociaron estos dos hechos. La asociación es el primer paso en la escalera del pensamiento causal, pero no el único.

Según Judea P., todos nuestros sistemas de IA están en este paso. (Supongo que muchos de nosotros los humanos también estamos aún fuertemente aquí). Los humanos simples seguirían bailando la próxima vez que llueva. Ahora, para nuestros antepasados de ejemplo, suponiendo que hicieron esta danza cada vez que llovía, sería casi imposible convencerlos de lo contrario.

A menos que “no” bailaran y aún lloviera, o que bailaran y no lloviera. El primer paso, “Asociación”, también se puede representar como “Ver”, el siguiente “Hacer” y el tercero como “Imaginar” (como en el libro).

Esperemos que esto nos haga conscientes de que el Razonamiento Causal necesita comprensión y no solo asociación (como en la asociación entre tokens).

Hay un interesante artículo de investigación de Microsoft que utiliza LLMs para el descubrimiento causal

Descubrimos que los métodos basados en LLM establecen una nueva precisión de última generación en múltiples pruebas de causalidad.

Comprobé las mismas indicaciones en el artículo con ChatGPT 4, y obtuvo mejores resultados de los que habían obtenido anteriormente con el mismo modelo; lo que no significa mucho, pero aún ilustra su capacidad en el razonamiento causal de forma predeterminada.

Autor y ChatGPT

Observa aquí que no se mencionó la demografía en línea y fuera de línea, etc. El modelo GPT4 ha identificado los confusores y ha razonado no solo sobre los datos, sino también basándose en su visión del mundo. Como describen los autores, los LLM no son perfectos en esto y cometen errores.

Nuevamente, no es fácil ilustrar esto con un caso de uso simple para mí ahora, pero este es un campo emocionante para investigar. Especialmente me gusta esta cita del artículo, que evita efectivamente probar o refutar argumentos sobre si son imitaciones o no y utilizar las capacidades prácticamente.

Independientemente de si los LLM realizan o no un razonamiento causal de manera verdadera, su capacidad observada empíricamente para realizar ciertas tareas causales es lo suficientemente fuerte como para proporcionar un útil complemento para aspectos del razonamiento causal en los que actualmente confiamos solo en los humanos.

Es decir, aunque estos sistemas en sí mismos son difíciles de explicar, se pueden utilizar como herramientas para descubrir relaciones causales entre variables en un conjunto de datos. Esto ilustra su posible potencial en tareas de razonamiento de nivel superior.

En la Parte 3, exploraremos cómo ajustar modelos utilizando los propios modelos para ayudar en la generación de datos y cómo eso puede aprovecharse en aplicaciones de dominio personalizado.