- Se organizan 7 patrones clave según "mejora del rendimiento vs. reducción de costos/riesgos" y "orientado a datos vs. orientado al usuario"
- Evals: medición del rendimiento
- RAG (Retrieval-Augmented Generation): agregar conocimiento externo y actualizado
- Fine-tuning: para realizar mejor tareas específicas
- Caching: reducción de latencia y costos
- Guardrails: garantizar la calidad de la salida
- Defensive UX: para anticipar y gestionar errores
- Collect user feedback: construir un data flywheel
Evals: medición del rendimiento
- Evals es un conjunto de métricas usado para evaluar el rendimiento del modelo en una tarea
- Incluye datos de benchmark y métricas
- Permite medir qué tan bien está funcionando un sistema o producto y detectar regresiones
- Hay muchos benchmarks en el campo del modelado de lenguaje: MMLU, EleutherAI Eval, HELM, AlpacaEval
- Las métricas pueden dividirse en dos categorías: context-dependent o context-free
- Métricas de uso común: BLEU, ROUGE, BERTScore, MoverScore
- Una tendencia reciente es usar un LLM potente como reference-free metric para evaluar las generaciones de otros LLM
- G-Eval, paper de Vicuna, QLoRA
RAG (Retrieval-Augmented Generation): agregar conocimiento externo y actualizado
- Mejora la salida al traer información desde fuera del foundation model y enriquecer la entrada con esos datos para ofrecer un contexto más rico
- RAG ayuda a reducir las alucinaciones al basar el modelo en contexto recuperado, aumentando así la factualidad
- Además, mantener actualizado un índice de búsqueda es más barato que seguir preentrenando un LLM de forma continua
- Gracias a esa eficiencia en costos, un LLM puede acceder a datos recientes a través de RAG
- Si hace falta actualizar o eliminar datos, como documentos sesgados o dañinos, es más simple actualizar el índice de búsqueda que hacer fine-tuning al LLM
- Para RAG, primero es útil entender los embeddings de texto
- Los embeddings de texto son representaciones abstractas y comprimidas de datos textuales que pueden expresar texto de longitud arbitraria como vectores numéricos de tamaño fijo
- Normalmente se entrenan con corpus de texto como Wikipedia
- Puede pensarse como una codificación general del texto donde los elementos similares quedan cerca entre sí y los no similares, más lejos
- Un buen embedding es el que funciona bien en tareas downstream como la búsqueda de elementos similares
- Massive Text Embedding Benchmark (MTEB) de Hugging Face puntúa modelos en tareas como clasificación, clustering, búsqueda y resumen
- Aquí se habla principalmente de embeddings de texto, pero los embeddings pueden usarse en distintas modalidades
- Fusion-in-Decoder (FiD) usa en conjunto un modelo generativo y recuperación para open-domain QA
- Los Internet-augmented LM proponen reforzar LLM usando motores de búsqueda existentes
- Cómo aplicar RAG
- La búsqueda híbrida (índice de búsqueda tradicional + búsqueda basada en embeddings) funciona mejor que usar cada una por separado
Fine-tuning: para realizar mejor tareas específicas
- El fine-tuning es el proceso de tomar un modelo preentrenado (un modelo ya entrenado con grandes volúmenes de datos) y refinarlo adicionalmente para una tarea específica
- Su objetivo es aplicar a una tarea concreta el conocimiento que el modelo ya adquirió durante el preentrenamiento, normalmente con un dataset específico de menor tamaño
- El término fine-tuning se usa de forma laxa para referirse a distintos conceptos
- preentrenamiento continuo
- instruction fine-tuning
- fine-tuning para una sola tarea
- RLHF
- ¿Por qué hacer fine-tuning?
- Rendimiento y control:
- Puede mejorar el rendimiento de un modelo base listo para usar, e incluso superar LLM de terceros
- Permite controlar mejor el comportamiento del LLM, haciendo más sólido el sistema o producto
- Mediante fine-tuning se pueden construir productos diferenciados frente a simplemente usar LLM abiertos o de terceros
- Modularidad:
- El fine-tuning para una sola tarea permite crear un conjunto de modelos más pequeños, cada uno especializado en una tarea única
- Esta configuración permite modularizar el sistema en tareas como moderación de contenido, extracción o resumen
- Reducción de dependencias:
- Al hacer fine-tuning y alojar tu propio modelo, se reducen los problemas legales relacionados con datos propietarios expuestos a APIs externas (por ejemplo, PII, documentos internos y código)
- También permite superar limitaciones de LLM de terceros, como rate limits, costos altos o filtros de seguridad demasiado restrictivos
- Generative Pre-trained Transformers (GPT; decoder only)
- Text-to-text Transfer Transformer (T5; encoder-decoder)
- InstructGPT
- Soft prompt tuning & Prefix Tuning
- Low-Rank Adaptation (LoRA) & QLoRA
- Cómo aplicar fine-tuning
- Recopilar datos demo/etiquetas
- Definir métricas de evaluación
- Elegir un modelo preentrenado
- Actualizar la arquitectura del modelo
- Elegir el método de fine-tuning (LoRA, QLoRA, etc.)
- Ajuste básico de hiperparámetros
Caching: reducción de latencia y costos
- El caching es una técnica para almacenar datos recuperados o calculados previamente
- Permite procesar futuras solicitudes sobre los mismos datos de forma más eficiente
- En LLM, consiste en cachear la respuesta del LLM para embeddings de solicitudes de entrada y, cuando llega una solicitud semánticamente similar, devolver la respuesta cacheada
- Pero algunos practicantes dicen que esto es como "esperar a que ocurra un desastre". Estoy de acuerdo
- La clave para adoptar un patrón de caching es encontrar una forma segura de cachear, en vez de depender solo de la similitud semántica
- ¿Por qué hacer caching? Para reducir latencia y costos al disminuir el número de solicitudes al LLM
- ¿Cómo aplicar caching?
- Hay que empezar por entender bien los patrones de solicitudes de los usuarios
- Considerar si el caching es efectivo para ese patrón de uso
Guardrails: garantizar la calidad de la salida
- Validar la salida del LLM para comprobar no solo que se vea bien, sino también que sea sintácticamente correcta, factual y libre de contenido dañino
- ¿Por qué hacen falta guardrails?
- Ayudan a asegurar que la salida del modelo sea lo bastante confiable y consistente como para usarse en producción
- Proporcionan una capa adicional de seguridad y mantienen el control de calidad sobre la salida del LLM
- Un enfoque es controlar la respuesta del modelo a través del prompt
- Anthropic compartió prompts diseñados para guiar al modelo a generar respuestas útiles, inofensivas y honestas (HHH)
- Un enfoque más general es validar la salida (como con paquetes tipo Guardrails)
- NeMo-Guardrails de Nvidia sigue principios similares, pero está diseñado para guiar sistemas conversacionales basados en LLM
- También se puede ajustar directamente la salida para que cumpla una gramática específica, como con Guidance de Microsoft (puede verse como un DSL para LLM)
- Cómo aplicar guardrails
- Structural guidance
- Syntactic guardrails
- Content safety guardrails
- Semantic/factuality guardrails
- Input guardrails
Defensive UX: para anticipar y gestionar errores
- El UX defensivo es una estrategia de diseño que reconoce que pueden pasar cosas malas, como inexactitudes o alucinaciones, mientras el usuario interactúa con productos basados en machine learning o LLM
- Su objetivo principal es anticipar y gestionar estos problemas guiando el comportamiento del usuario, previniendo usos indebidos y manejando adecuadamente los errores
- ¿Por qué UX defensivo?
- El machine learning y los LLM no son perfectos. Pueden generar resultados inexactos
- Pueden reaccionar de manera diferente ante la misma pregunta
- El UX defensivo ayuda a mitigar estos problemas al ofrecer lo siguiente
- mayor accesibilidad, más confianza, mejor UX
- Consultar las guías recopiladas por distintas empresas
- Microsoft’s Guidelines for Human-AI Interaction
- Google’s People + AI Guidebook
- Apple’s Human Interface Guidelines for Machine Learning
- Cómo aplicar UX defensivo
- Establecer expectativas correctas
- Permitir un descarte eficiente (Enable efficient dismissal)
- Proporcionar atribución
- Anchor on familiarity
Collect user feedback: construir un data flywheel
- Recopilar feedback de usuarios permite conocer sus preferencias
- El feedback de usuario específico de productos con LLM contribuye a evaluaciones, fine-tuning y construcción de guardrails
- Datos como corpus para pretraining, demos creadas por expertos y preferencias humanas para reward modeling son uno de los pocos moats de los productos con LLM
- El feedback puede ser explícito o implícito
- El feedback explícito es la información que el usuario da en respuesta a una solicitud del producto
- El feedback implícito es la información que se aprende de la interacción del usuario sin que tenga que dar feedback intencionalmente
- ¿Por qué recopilar feedback de usuarios?
- El feedback de usuarios ayuda a mejorar el modelo
- Aprendiendo qué les gusta, qué no les gusta o de qué se quejan, se puede mejorar el modelo para satisfacer mejor sus necesidades
- También permite adaptarse a preferencias individuales
- El feedback loop ayuda a evaluar el rendimiento general del sistema
- Cómo recopilar feedback de usuarios
- Hacer que sea fácil dejar feedback: como en ChatGPT, ofrecer opciones de pulgar arriba / pulgar abajo en las respuestas
- Considerar también el feedback implícito: información generada cuando el usuario interactúa con el producto
1 comentarios
En el artículo original hay explicaciones detalladas de cada elemento y de los algoritmos/métricas, pero aquí las omití.
Toma este texto solo como un resumen rápido y consulta también el original.