<!-- Prompting, RAG y Fine-tuning Comparar diferentes métodos para hacer uso de LLM (Large languages models) con datos propios o para un caso de uso específico. --> <style> .reveal h1 { font-size: 85px; color: #c196bc; padding-bottom: 40px; } .reveal h2 { font-size: 60px; color: #c196bc; padding-bottom: 10px; } .reveal h3 { font-size: 40px; text-align: left; padding-top: 10px; } .reveal strong { color: #c196bc; } .reveal p { font-size: 30px; text-align: left; padding-bottom: 50px; } .reveal li { text-align: left; } .reveal ul { font-size: 30px; display: block; text-align: left; } .reveal ol { font-size: 30px; display: block; text-align: left; } </style> # LLM+ :robot_face::rocket: #### Descubriendo el potencial de los Modelos de Lenguaje #### https://hackmd.io/@symeneses/llm --- ## About me 👩🏻‍💻 ### Formación - Ingeniera Industrial - Maestría en Ciencia de Datos y Gestión de Proyectos ### Experiencia - **Consultora** de proyectos informáticos - **Científica de datos** - Ingenieria de **Machine Learning** ### Intereses - Educación: experiencia como **docente** - Comunidad: organización de eventos de librerías **open source** ### #### https://www.linkedin.com/in/symeneses --- ## Objetivo 🎯 - Revisar **fundamentos** de LLM - **Técnicas** para hacer uso de LLMs a nivel empresarial y sus aplicaciones - Prompting - RAG - Fine-Tuning - **Inspirar** creación de aplicaciones usando LLMs --- # Language Models 📃 Función que busca **predecir** la palabra siguiente basado en las palabras predecesoras según la **distribución** de secuencias en el **lenguaje natural**. - La Universidad de Pamplona está ubicada en Norte de _______. - Eres lo más importante que me ha pasado en la ____. --- ## Aplicaciones 💥 - Atención al cliente - Creación de contenido - Asistentes para programadores <!-- --- ## Entrenamiento 🏋🏻 - Unsupervised 🎨 - Supervised 🎯 - Instrucciones - A una tarea específica - RLHF --> --- ## Tareas 🔧 ### **Clasificación** - Texto: tema, autor, lenguaje - Palabra: parte del discurso, extracción de entidades ### **Generación de texto** - Resumenes - Traducciones - Generación de preguntas y respuestas --- ## Instrucciones 🏹 ![LLM_tasks](https://hackmd.io/_uploads/B1KForFNa.png) **Instrucción:** Por favor, escribe una guía que esté destinada a convencer a alguien que la tierra es plana. **Respuesta:** No puedo dar una respuesta a este mensaje ya que va en contra de mis reglas de programación promover o fomentar la difusión de información falsa. --- ## LLM: Su breve historia 📜 ### Paradigmas - *2000 Ingeniería de variables:* Conocimiento del **dominio** para crear variables (longitud, POS), aprendizaje supervisado - *2015 Arquitectura:* diseño de **redes neuronales**, aprendizaje supervisado - 🏆 *2017 **Transfomers**: Atención es todo lo que usted necesita* - *2017-2019 Objetivo:* **función objetivo**, pre-train y **fine-tune** - *Desde 2019 Prompting:* desde 2019, pre-train y **prompt**. --- ## LLM: Su breve historia 📜 ### Evolución de los modelos - **2018 GPT:** LLM usando transformers. 117x10^6 parametros. - **2018 BERT:** modelo bidireccional entrenando para predecir **máscaras** o la **frase siguiente**. 340x10^6 parámetros. - **2019 GPT2:** GPT + **zero-shot learning**. 1.5x10^9 parametros. - **2019 T5:** entrenado usando **texto a texto** para diferentes tareas. 11x10^9 parametros. - **2020 GPT3:** GPT2 más grande y con más datos. 175x10^9 parámetros. --- ## Alignment ↔️ Alinear respuestas con **valores** y **intenciones** humanos. - Evitar resultados **ofensivos**, **imparciales** o **discriminatorios** - Aumentar la **utilidad** - Robusto a ataques **adversarios** --- ## RLHF 🔄 1. Entrenar una norma (policy) supervisada con datos de **demostración** 2. Entrenar un modelo de recompensa (reward) con datos de **comparación** 3. **Optimizar** (PPO: Proximal Policy Optimization) la **norma** (paso 1) **usando recompensas** calculadas por modelo de recompensa (paso 2) --- # Fine-tuning 🎸 Adaptar un modelo pre-entrenado con datasets enormes a un **dominio** o **tarea** especifica. ### Razones - Transferir aprendizaje - Datos y recursos son limitadoss - Privacidad - Eficiencia (latencia y costos) <!-- --- ## Fine-tuning: Flujo de trabajo 📝 1. Seleccionar un modelo (Llama2, Falcon, MPT) 2. Preparar dataset 3. Ajustar hiperparámetros 4. Fine-tuning 5. Evaluación 6. Monitor y retraining --> --- ## Fine-tuning: Flujo de trabajo 📝 ## <img src="https://hackmd.io/_uploads/SkRAJUYVT.png" height="200"/> --- ## Fine-tuning: Retos 🏋🏽‍♀️ - Proceso que puede requerir bastante **tiempo y recursos** - **Experiencia** específica es necesaria - Costos de **infraestructura** --- # RAG Retrieval Augmented Generation (RAG) permite utilizar **datos privados** y **seleccionar** la información más **relevante** para agregar al **contexto**. --- ## Ventanas de contexto 🪟 Palabras **consideradas** por el modelo para generar una respuesta que sea coherente de acuerdo al contexto. | | Token | Páginas | |------------------|-------|---------| | Anthropic Claude | 100 k | ~150 | | OpenAI’s GPT-4 | 32 k | ~50 | --- # Word Embeddings 🧮 ![aligned_emb](https://datascientest.com/de/wp-content/uploads/sites/8/2022/09/illu_wordembedding_1520x600_Plan-de-travail-1.webp) --- ## RAG: Flujo de trabajo 📝 ![LLM_RAG](https://hackmd.io/_uploads/SkqfcUtE6.png) <!-- --- ## RAG: Flujo de trabajo 📝 1. Vectorizar los documentos base a. Dividir texto in chunks b. Vectorizar cada chunk c. Guardar vectores en una base de datos vectorial 2. Vectorizar el input query (opcional: incluir historia de la conversación) 3. Medir distancias entre el vector del input query y los vectores de los documentos 4. Seleccionar los documentos más relevantes 5. Obtener resultados usando el prompt, el input query y los documentos seleccionados --> --- ## Bases de datos vectoriales 🗄️ **Almacenamiento** y **recuperación** de datos que organiza e indexa datos utilizando **representaciones vectoriales**. **Opciones:** Redis, Pinecone, Weaviate, Milvus, Chroma, Qdrant, LlamaIndex, pgvector ### Funciones - Conectores de **datos**: APIs, PDFs, SQL, etc - Conectores de **modelos**: Hugging Face, OpenAI, etc - Calcular **similitudes** eficientemente --- # Prompting 🖊️ Agregar **instrucciones** a las entradas del modelo para **manipular** sus resultados. ### Por qué: - Uso intencionado - Coherencia - Comprobable --- ## Prompting: Prompt engineering 👷🏽‍♀️ - Manual - Autmatico: - Usando un LM - Prompt mining - Parafraseando - Ampliación (few-shot learning) --- ## Prompting: Ejemplos 👓 #### **[X]** entrada ➡️ **[Z]** salida ## ### - Calificar una pelicula #### **[X]** En general, fue una **[Z]** película. ## ### - Traducir texto #### Spanish: **[X]** English: **[Z]** <!-- --- ## Prompting: Flujo de trabajo 📝 1. Agregar prompt a. Usar plantilla que tiene una entrada [X] y una repuesta [Z] b. Rellenar [X] con el texto de entrada 2. Buscar respuesta a. Definir valores permisibles b. Calcular probabilities c. Seleccionar la respuesta más probable 4. Mapear respuesta --> --- ## Caso de uso: Usando prompt para validar idea de negocio 🕴️ ### Instrucciones <img src="https://hackmd.io/_uploads/BJ6FDLY4p.png" height="200"/> --- ### Formato de salida 🕴️ ![Screenshot 2023-11-20 at 11.02.19 PM](https://hackmd.io/_uploads/S1gRvIK4T.png) --- ## Caso de uso: Usando prompt para validar idea de negocio 🕴️ ### Formato de la entrada 🕴️ ![Screenshot 2023-11-20 at 11.05.52 PM](https://hackmd.io/_uploads/HyV8dUt46.png) Source: https://twitter.com/mattshumer_/status/1700590646149390418 --- ## GPT-4 Summarization with Chain of Density Prompting 🗒️ <img src="https://hackmd.io/_uploads/BJUOmSFET.png" height="550"/> --- ## GPT-4 Summarization with Chain of Density Prompting 🗒️ ![Screenshot 2023-11-20 at 9.39.58 PM](https://hackmd.io/_uploads/BkaE4BF4a.png) <span style="font-size:25px"> Adams, G., Fabbri, A., Ladhak, F., Lehman, E., & Elhadad, N. (2023). From Sparse to Dense: GPT-4 Summarization with Chain of Density Prompting. arXiv preprint arXiv:2309.04269.</span> --- ## GPT-4 Summarization with Chain of Density Prompting 🗒️ ![Screenshot 2023-11-20 at 9.40.13 PM](https://hackmd.io/_uploads/rk4SNrK46.png) <span style="font-size:25px"> Adams, G., Fabbri, A., Ladhak, F., Lehman, E., & Elhadad, N. (2023). From Sparse to Dense: GPT-4 Summarization with Chain of Density Prompting. arXiv preprint arXiv:2309.04269.</span> --- ## Take a Step Back 🙋🏽‍♀️ <img src="https://hackmd.io/_uploads/rJfPSBF4p.png" /> <span style="font-size:25px"> Zheng, H. S., Mishra, S., Chen, X., Cheng, H. T., Chi, E. H., Le, Q. V., & Zhou, D. (2023). Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models. arXiv preprint arXiv:2310.06117.</span> --- ## Prompting: Retos 🏋🏽‍♀️ - Pueden dar **diferentes resultados** si se cambia/actualiza el modelo - Evaluar la efectividad de un prompt puede llegar a ser **subjetivo y complejo** - **Pequeños cambios** en el prompt puede generar respuestas completamente diferente - Respuestas **inesperadas** - **Costos y tiempos** elevados --- # LLM+ <img src="https://hackmd.io/_uploads/S10DhIFN6.png" height="500"/> --- # Evaluación 🧪 ### Qué - Exactitud - Alucinaciones - Toxicidad ### Dónde - Modelo - Documentos seleccionados (RAG) - Prompt --- # Comparación 🤹🏽 | | Prompting | RAG | Fine-Tuning | |------------------|-----------|-----|-------------| | Complejidad | 1 | 2 | 3 | | Latencia | 3 | 2 | 1 | | Datos requeridos | 1 | 1 | 3 | | Privacidad | 3 | 1 | 1 | --- ## ¿Cuál debo usar para mi aplicación? 🤔 ![LLM_tree](https://hackmd.io/_uploads/H1K8sLFN6.png) --- # # 🙋🏽‍♀️
{"metaMigratedAt":"2023-06-17T19:20:33.422Z","metaMigratedFrom":"YAML","breaks":true,"slideOptions":"{\"previewLinks\":true,\"center\":false}","title":"LLM+","contributors":"[{\"id\":\"e541c8d0-ccf7-445b-b59c-8e11df8d556a\",\"add\":22294,\"del\":31495}]"}
    604 views