<!--
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 🏹

**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 🧮

---
## RAG: Flujo de trabajo 📝

<!-- ---
## 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 🕴️

---
## Caso de uso: Usando prompt para validar idea de negocio 🕴️
### Formato de la entrada 🕴️

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 🗒️

<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 🗒️

<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? 🤔

---
#
# 🙋🏽♀️
{"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}]"}