![]() | Este es el repositorio no oficial del libro: Modelos de idiomas grandes: aplicar e implementar estrategias para modelos de idiomas grandes (Apress). El libro se basa en el contenido de este repositorio, pero los cuadernos se están actualizando, y estoy incorporando nuevos ejemplos y capítulos. Si está buscando el repositorio oficial del libro, con los cuadernos originales, debe visitar el repositorio de Aprss, donde puede encontrar todos los cuadernos en su formato original tal como aparecen en el libro. Cómpralo en: [Amazon] [Springer] |
Tenga en cuenta que el curso en GitHub no contiene toda la información que se encuentra en el libro.
Esta práctica práctica práctica en el curso sobre modelos de idiomas grandes y sus aplicaciones está en desarrollo permanente ". Publicaré las diferentes lecciones y muestras a medida que las complete.
El curso proporciona una experiencia práctica utilizando modelos de OpenAI y la biblioteca de abrazaderas. Vamos a ver y usar muchas herramientas y practicar con pequeños proyectos que crecerán a medida que podamos aplicar el nuevo conocimiento adquirido.
Algunos de los temas y tecnologías cubiertas en esta sección incluyen: chatbots, generación de códigos, API de OpenAI, cara de abrazo, bases de datos de vectores, langchain, ajuste fino, ajuste fino de PEFT, ajuste de inmediato, lora, qlora, modelos de evaluación, destilación de conocimiento.
Cada lección se conforma con cuadernos y artículos. Los cuadernos contienen información suficiente para comprender el código dentro de ellos, el artículo proporciona explicaciones más detalladas sobre el código y el tema cubierto.
Mi consejo es tener el artículo abierto junto con el cuaderno y seguir. Muchos de los artículos ofrecen pequeños consejos sobre variaciones que puede presentar a los cuadernos. Recomiendo seguirlos para mejorar la claridad de los conceptos.
La mayoría de los cuadernos están alojados en Colab, mientras que algunos están en Kaggle. Kaggle proporciona más memoria en la versión gratuita en comparación con Colab, pero encuentro que copiar y compartir cuadernos es más simple en Colab, y no todos tienen una cuenta de Kaggle.
Algunos de los cuadernos requieren más memoria de lo que proporciona la versión gratuita de Colab. Mientras trabajamos con modelos de idiomas grandes, esta es una situación común que recurrirá si continúa trabajando con ellos. Puede ejecutar los cuadernos en su propio entorno u optar por la versión Pro de Colab.
Cada cuaderno es compatible con un artículo mediano donde el código se explica en detalle.
En esta primera sección del curso, aprenderemos a trabajar con la API de Operai creando dos pequeños proyectos. Profundamos en los roles de OpenAi y cómo proporcionar las instrucciones necesarias al modelo a través del indicador para que se comporte como deseamos.
El primer proyecto es un chatbot de restaurante donde la modelo tomará los pedidos de los clientes. Sobre la base de este proyecto, construiremos un generador de instrucciones SQL. Aquí, intentaremos crear un mensaje seguro que solo acepte comandos de creación SQL y nada más.
Utilizaremos Operai GPT-3.5 y panel para desarrollar un chatbot sencillo adaptado para un restaurante de comida rápida. Durante el curso, exploraremos los fundamentos de la ingeniería rápida, incluida la comprensión de los diversos roles de Operai, la manipulación de la configuración de temperatura y cómo evitar inyecciones rápidas.
| Panel de artículo / artículo Gradio | Panel de cuaderno / cuaderno Gradio |
|---|
Siguiendo el mismo marco utilizado en el artículo anterior para crear el chatbot, hicimos algunas modificaciones para desarrollar un lenguaje natural para el traductor SQL. En este caso, el modelo debe proporcionar las estructuras de la tabla, y se hicieron ajustes a la solicitud para garantizar una funcionalidad suave y evitar cualquier mal funcionamiento potencial. Con estas modificaciones en su lugar, el traductor es capaz de convertir consultas de lenguaje natural en consultas SQL. @fmquaglia ha creado un cuaderno usando DBML para describir las tablas que, con mucho, son un mejor emprendedor que el original.
| Artículo / artículo Gradio | Notebook / portátil Gradio / cuaderno dbml |
|---|
Exploraremos técnicas de ingeniería rápidas para mejorar los resultados que obtenemos de los modelos. Me gusta cómo formatear la respuesta y obtener una respuesta estructurada usando pocas muestras de disparos.
| Artículo | Computadora portátil |
|---|
Una breve introducción a las bases de datos de vectores, una tecnología que nos acompañará en muchas lecciones a lo largo del curso. Trabajaremos en un ejemplo de generación aumentada de recuperación utilizando información de varios conjuntos de datos de noticias almacenados en ChromAdB.
Si hay un aspecto que gane importancia en el mundo de los modelos de idiomas grandes, es explorar cómo aprovechar la información patentada con ellos. En esta lección, exploramos una posible solución que implica almacenar información en una base de datos vectorial, ChromAdB en nuestro caso y usarla para crear indicaciones enriquecidas.
| Artículo | Computadora portátil |
|---|
Mejoramos el sistema RAG al introducir una capa de caché semántica capaz de determinar si se ha hecho una pregunta similar antes. Si es afirmativo, recupera información de un sistema de caché creado con FAISS en lugar de acceder a la base de datos Vector.
La inspiración y el código base del caché semántico presente en este cuaderno existen gracias al curso: https://maven.com/boring-bot/advanced-llm/1/home desde Hamza Farooq.
| Artículo | Computadora portátil |
|---|---|
| Ceñudo | Computadora portátil |
Langchain ha sido una de las bibliotecas en el universo de modelos de idiomas grandes que más ha contribuido a esta revolución. Nos permite encadenar llamadas a modelos y otros sistemas, lo que nos permite crear aplicaciones basadas en modelos de idiomas grandes. En el curso, lo usaremos varias veces, creando proyectos cada vez más complejos.
En esta lección, utilizamos Langchain para mejorar el cuaderno de la lección anterior, donde utilizamos datos de dos conjuntos de datos para crear un mensaje enriquecido. Esta vez, con la ayuda de Langchain, construimos una tubería responsable de recuperar datos de la base de datos Vector y pasarlo al modelo de idioma. El cuaderno está configurado para funcionar con dos conjuntos de datos diferentes y dos modelos diferentes. Uno de los modelos está entrenado para la generación de texto, mientras que el otro está entrenado para la generación Text2Text.
| Artículo | Computadora portátil |
|---|
Crearemos un sistema de respuesta de comentarios utilizando una tubería de dos modelos construida con Langchain. En esta configuración, el segundo modelo será responsable de moderar las respuestas generadas por el primer modelo.
Una forma efectiva de evitar que nuestro sistema genere respuestas no deseadas es mediante el uso de un segundo modelo que no tiene interacción directa con los usuarios para manejar la generación de respuesta.
Este enfoque puede reducir el riesgo de respuestas no deseadas generadas por el primer modelo en respuesta a la entrada del usuario.
Crearé cuadernos separados para esta tarea. Uno involucrará modelos de OpenAI, y los otros utilizarán modelos de código abierto proporcionados por la cara abrazada. Los resultados obtenidos en los tres cuadernos son muy diferentes. El sistema funciona mucho mejor con los modelos OpenAI y LLAMA2.
| Artículo | Computadora portátil |
|---|---|
| Artículo de Openai | Cuaderno de Operai |
| LLAMA2-7B Artículo | Llama2-7b cuaderno |
| Sin artículo | Portátil GPT-J |
Los agentes son una de las herramientas más poderosas del mundo de los modelos de idiomas grandes. El agente es capaz de interpretar la solicitud del usuario y utilizar las herramientas y bibliotecas a su disposición hasta que logra el resultado esperado.
Con los agentes de Langchain, vamos a crear en unas pocas líneas uno de los agentes más simples pero increíblemente poderosos. El agente actuará como asistente de analistas de datos y nos ayudará a analizar los datos contenidos en cualquier archivo de Excel. Podrá identificar tendencias, usar modelos, realizar pronósticos. En resumen, vamos a crear un agente simple que podamos usar en nuestro trabajo diario para analizar nuestros datos.
| Artículo | Computadora portátil |
|---|
En este ejemplo, se combinan dos tecnologías vistas anteriormente: agentes y bases de datos vectoriales. La información médica se almacena en ChromAdB, y se crea un agente de Langchain, que la obtendrá solo cuando sea necesario crear un indicador enriquecido que se enviará al modelo para responder a la pregunta del usuario.
En otras palabras, se crea un sistema de trapo para ayudar a un chatbot médico.
¡¡¡Atención!!! Úselo solo como ejemplo. Nadie debería tomar las recomendaciones de la bota como las de un verdadero médico. Rgojo toda la responsabilidad por el uso que se puede dar al chatbot. Lo he construido solo como un ejemplo de diferentes tecnologías.
| Artículo | Computadora portátil |
|---|
Las métricas utilizadas para medir el rendimiento de los modelos de idiomas grandes son bastante diferentes de las que hemos estado utilizando en modelos más tradicionales. Nos estamos alejando de las métricas como la precisión, la puntuación F1 o el recuerdo, y avanzando hacia métricas como Bleu, Rouge o Meteor.
Estas métricas se adaptan a la tarea específica asignada al modelo de idioma.
En esta sección, exploraremos ejemplos de varias de estas métricas y cómo usarlas para determinar si un modelo es superior a otro para una tarea determinada. Profundamos en escenarios prácticos donde estas métricas nos ayudan a tomar decisiones informadas sobre el rendimiento de los diferentes modelos.
Bleu es una de las primeras métricas establecidas para evaluar la calidad de las traducciones. En el cuaderno comparamos la calidad de una traducción realizada por Google con otra de un modelo de código abierto de abrazar la cara.
| Artículo WIP | Computadora portátil |
|---|
Exploraremos el uso de la métrica Rouge para medir la calidad de los resúmenes generados por un modelo de idioma. Vamos a usar dos modelos T5, uno de ellos es el modelo de base T5 y el otro un ajuste fino de base T5 diseñada específicamente para crear resúmenes.
| Artículo | Computadora portátil |
|---|
En este ejemplo inicial, puede observar cómo usar Langsmith para monitorear el tráfico entre los diversos componentes que componen el agente. El agente es un sistema RAG que utiliza una base de datos vectorial para construir un aviso enriquecido y pasarlo al modelo. Langsmith captura tanto el uso de las herramientas del agente como las decisiones tomadas por el modelo, proporcionando información en todo momento sobre los datos enviados/recibidos, tokens consumidos, la duración de la consulta y todo esto en un entorno verdaderamente fácil de usar.
| Artículo | Computadora portátil |
|---|
Anteriormente en el cuaderno, Rouge Metrics: evaluando resúmenes, aprendimos a usar Rouge para evaluar qué resumen se aproximaba mejor al creado por un humano. Esta vez, utilizaremos la distancia de incrustación y Langsmith para verificar qué modelo produce resúmenes más similares a los de referencia.
| Artículo | Computadora portátil |
|---|
Tomamos al agente que funciona como asistente médico e incorporamos a Giskard para evaluar si sus respuestas son correctas. De esta manera, no solo se evalúa la respuesta del modelo, sino también la recuperación de información en la base de datos de vectores. Giskard es una solución que permite evaluar una solución de trapo completa.
| Artículo | Computadora portátil |
|---|
La Biblioteca LM-Eval de Eleutherai proporciona un fácil acceso a puntos de referencia académicos que se han convertido en estándares de la industria. Admite la evaluación de los modelos de código abierto y las API de proveedores como OpenAI, e incluso permite la evaluación de adaptadores creados utilizando técnicas como Lora.
En este cuaderno, me centraré en una característica pequeña pero importante de la biblioteca: evaluar modelos compatibles con la biblioteca de Transformers de Hugging Face.
| Artículo - WIP | Computadora portátil |
|---|
En la sección Finetuning & Optimization, exploraremos diferentes técnicas, como un ajuste fino rápido o lora, y utilizaremos la biblioteca PEFT de abrazamiento para abrazar modelos de idiomas grandes eficientemente finos. Exploraremos técnicas como la cuantización para reducir el peso de los modelos.
En este cuaderno, dos modelos están capacitados utilizando un ajuste inmediato desde la biblioteca PEFT. Esta técnica no solo nos permite entrenar modificando los pesos de muy pocos parámetros, sino que también nos permite tener diferentes modelos especializados cargados en la memoria que usan el mismo modelo fundamental.
El ajuste rápido es una técnica aditiva, y los pesos del modelo previamente capacitado no se modifican. Los pesos que modificamos en este caso son los de los tokens virtuales que agregamos a la solicitud.
| Artículo | Computadora portátil |
|---|
Después de una breve explicación de cómo funciona la técnica de ajuste fino, Lora, ajustaremos un modelo de la familia Bloom para enseñarlo a construir indicaciones que se pueden utilizar para instruir modelos de idiomas grandes.
| Artículo | Computadora portátil |
|---|
Vamos a ver una breve introducción a la cuantización, utilizada para reducir el tamaño de grandes modelos de idiomas grandes. Con la cuantización, puede cargar grandes modelos que reducen los recursos de memoria necesarios. También se aplica al proceso de ajuste, puede ajustar el modelo en una sola GPU sin consumir todos los recursos. Después de la breve explicación, vemos un ejemplo sobre cómo es posible ajustar un modelo Bloom 7B en una GPU T4 16GB en Google Colab.
| Artículo | Computadora portátil |
|---|
Esta sección todavía está en construcción. El objetivo es construir un plan de estudios que nos llevará de las técnicas de poda más simples para crear un modelo que utiliza las mismas técnicas empleadas por las principales empresas en el campo, como Microsoft, Google, Nvidia o OpenAI, para construir sus modelos.
En el primer cuaderno, el proceso de poda se aplicará a las capas de avance de un modelo DistilPPT2. Esto significa que el modelo tendrá pesos reducidos en esas capas específicas. Las neuronas para podar se seleccionan en función de sus puntajes de importancia, que calculamos utilizando la norma L1 de sus pesos. Es un emprendedor simple, para este primer ejemplo, que se puede usar cuando desea crear un modelo podado que imite el modelo base en todas las áreas.
Al alterar la estructura del modelo, se debe crear un nuevo archivo de configuración para garantizar que funcione correctamente con la biblioteca transformers .
| Notebook: podando un modelo Distilgpt2. |
|---|
En este primer cuaderno, intentamos replicar el proceso de poda utilizado con el modelo DistilPt2 pero aplicado a un modelo de llama. Al no tener en cuenta las características del modelo, el proceso de poda da como resultado un modelo completamente inutilizable. Este cuaderno sirve como un ejercicio para comprender cuán crucial es conocer la estructura de los modelos que sufrirán podas.
| Notebook: podar un modelo de Llama3.2 incorrecto APROACH. |
|---|
El segundo cuaderno aborda los problemas encontrados al aplicar el mismo proceso de poda al modelo de LLAMA que se utilizó para DISTILPPT2.
El enfoque correcto es tratar las capas MLP del modelo como pares en lugar de capas individuales y calcular la importancia de las neuronas considerando ambas capas juntas. Además, cambiamos a usar el peso absoluto máximo para decidir qué neuronas permanecen en las capas podadas.
| Podar el artículo de Llama3 | Cuaderno: podar un modelo3.2 modelo correcto |
|---|
En este cuaderno, veremos un ejemplo de poda de profundidad, que implica eliminar capas enteras del modelo. Lo primero a tener en cuenta es que eliminar capas enteras de un modelo de transformador generalmente tiene un impacto significativo en el rendimiento del modelo. Este es un cambio arquitectónico mucho más drástico en comparación con la eliminación simple de las neuronas de las capas MLP, como se ve en el ejemplo anterior.
| Cuaderno: poda de profundidad un modelo de llama. |
|---|
En este proyecto inicial directo, vamos a desarrollar un generador SQL a partir del lenguaje natural. Comenzaremos creando el indicador para implementar dos soluciones: una que usa modelos Operai que se ejecutan en Azure y el otro con un modelo de código abierto de la cara abrazada.
| Artículo | Computadora portátil |
|---|---|
| Cree un indicador NL2SQL para OpenAI | Creación rápida para OpenAi |
| Ceñudo | Creación rápida para defog/sqlcoder |
| Configuración de Azure de inferencia. | Usando el punto de inferencia de Azure |
En este pequeño proyecto, crearemos un nuevo modelo que alinee un modelo Microsoft-Phi-3 con DPO y luego lo publicaremos para abrazar la cara.
| Artículo | Computadora portátil |
|---|---|
| Ceñudo | Alineando con el modelo DPO A Phi3-3. |
En esta solución inicial, diseñamos una arquitectura para un sistema NL2SQL capaz de operar en una gran base de datos. El sistema está destinado a usarse con dos o tres modelos diferentes. De hecho, usamos tres modelos en el ejemplo.
Es una arquitectura que permite un inicio de proyecto rápido, brindando servicio para solo unas pocas tablas en la base de datos, lo que nos permite agregar más tablas a nuestro ritmo.
En esta solución, exploramos el poder transformador de las integridades y los modelos de idiomas grandes (LLM) en la evaluación de riesgos del cliente y la recomendación de productos en la industria financiera. Alteraremos el formato en el que almacenamos la información del cliente y, en consecuencia, también cambiaremos cómo viaja esta información dentro de los sistemas, logrando importantes ventajas.
Por favor, si encuentra algún problema, abra un problema. Haré todo lo posible para solucionarlo lo antes posible y darle crédito.
Si desea hacer una contribución o sugerir un tema, no dude en comenzar una discusión. Estaría encantado de recibir alguna opinión o consejo.
No seas tímido, comparta el curso en tus redes sociales con tus amigos. Conéctese conmigo en LinkedIn o Twitter y siéntase libre de compartir cualquier cosa que desee o hacer cualquier pregunta que pueda tener.
Dale una estrella IN al repositorio. Me ayuda mucho y me anima a continuar agregando lecciones. Es una buena manera de apoyar cursos gratuitos de código abierto como este.
Tom Kocmi, Christian Federmann, los modelos de idiomas grandes son evaluadores de la calidad de traducción. Evaluación de LLMS con LLM.
Pere Martra, Introducción a modelos de idiomas grandes con OpenAi
React: sinergizando razonamiento y actuación en modelos de idiomas. Sección de Langchain & Agents. Muestra de asistente médico.
El poder de la escala para el ajuste de inmediato de los parámetros. Sección de ajuste y optimización fina. Muestra de sintonización rápida.
Lora: adaptación de bajo rango de modelos de idiomas grandes. Sección de ajuste y optimización fina. Muestra de ajuste fino de Lora.
Qlora: Fineting eficiente de LLM cuantificados. Sección de ajuste y optimización fina. Muestra de sintonización de qlora.
Cómo solicitar LLMS para Text-to-SQL: un estudio en configuraciones de shot, dominio único y dominio cruzado. Proyecto. Lenguaje natural a SQL.
Saurav Muralidharan, Sharath Turuvekere Sreenivas, Raviraj Joshi, Marcin Chhowski, Mostofa Patwary, Mohammad Shoeybi, Bryan Catanzaro, Jan Kautz, Pavlo Molchanov ", Modelos de idiomas compactados a través de la poda y destilación de conocimiento," Arxiv Arxiv: 2407.1469. 2024. Disponible en: https://doi.org/10.48550/arxiv.2407.14679.