23 puntos por xguru 2023-08-28 | 1 comentarios | Compartir por WhatsApp
  • 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

 
xguru 2023-08-28

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.