23 pontos por xguru 2023-08-28 | 1 comentários | Compartilhar no WhatsApp
  • Os 7 padrões principais são organizados por "melhoria de desempenho vs. redução de custo/risco" e "orientado a dados vs. orientado ao usuário"
    • Evals: medição de desempenho
    • RAG (Retrieval-Augmented Generation): adiciona conhecimento externo e atualizado
    • Fine-tuning: para executar melhor tarefas específicas
    • Caching: reduz latência e custo
    • Guardrails: garante a qualidade da saída
    • Defensive UX: para prever e gerenciar erros
    • Collect user feedback: construir um flywheel de dados

Evals: medição de desempenho

  • Evals são um conjunto de métricas usadas para avaliar o desempenho do modelo em uma tarefa
  • Incluem dados de benchmark e métricas
  • Permitem medir quão bem um sistema ou produto está funcionando e detectar regressões
  • Há muitos benchmarks na área de modelagem de linguagem: MMLU, EleutherAI Eval, HELM, AlpacaEval
  • As métricas podem ser divididas em duas categorias: context-dependent ou context-free
  • Métricas comumente usadas: BLEU, ROUGE, BERTScore, MoverScore
  • Uma tendência recente é usar um LLM poderoso como métrica reference-free para avaliar as gerações de outros LLMs
    • G-Eval, artigo do Vicuna, QLoRA

RAG (Retrieval-Augmented Generation): adiciona conhecimento externo e atualizado

  • Recupera informações de fora do foundation model e enriquece a entrada com esses dados para fornecer um contexto mais rico, melhorando assim a saída
  • O RAG ajuda a reduzir alucinações ao basear o modelo no contexto recuperado, aumentando a factualidade
  • Além disso, manter o índice de busca atualizado é mais barato do que continuar pré-treinando o LLM
  • Essa eficiência de custo permite que o LLM acesse dados atualizados por meio de RAG
  • Quando é preciso atualizar/remover dados, como documentos enviesados ou nocivos, atualizar o índice de busca é mais simples do que fazer fine-tuning no LLM
  • Para RAG, ajuda primeiro entender embeddings de texto
  • Embeddings de texto são representações abstratas compactadas de dados textuais que permitem representar textos de comprimento arbitrário como vetores numéricos de tamanho fixo
    • Em geral, são treinados em corpora de texto como a Wikipedia
    • Dá para pensar neles como uma codificação geral de texto em que itens semelhantes ficam próximos e itens diferentes ficam mais distantes
  • Bons embeddings são aqueles que têm bom desempenho em tarefas downstream, como busca por itens semelhantes
    • O Massive Text Embedding Benchmark (MTEB) da Huggingface pontua modelos em várias tarefas, como classificação, clustering, busca e sumarização
  • Aqui falamos principalmente de embeddings de texto, mas embeddings podem ser usados em várias modalidades
  • Fusion-in-Decoder (FiD) usa geração e recuperação juntas para QA de domínio aberto
  • Internet-augmented LMs propõem fortalecer LLMs usando mecanismos de busca existentes
  • Como aplicar RAG
    • Busca híbrida (índice de busca tradicional + busca baseada em embeddings) funciona melhor do que cada abordagem sozinha

Fine-tuning: para executar melhor tarefas específicas

  • Fine-tuning é o processo de pegar um modelo pré-treinado (já treinado em uma grande quantidade de dados) e refiná-lo adicionalmente para uma tarefa específica
  • O objetivo é aproveitar o conhecimento que o modelo já adquiriu no pré-treinamento e aplicá-lo a uma tarefa específica, geralmente com um conjunto de dados menor e voltado àquela tarefa
  • O termo fine-tuning é usado de forma ampla e pode se referir a vários conceitos
    • pré-treinamento contínuo
    • instruction fine-tuning
    • fine-tuning para tarefa única
    • RLHF
  • Por que fazer fine-tuning?
    • Desempenho e controle:
      • melhorar o desempenho de um modelo base pronto e até superar LLMs de terceiros
      • permite controlar melhor o comportamento do LLM, tornando o sistema ou produto mais robusto
      • com fine-tuning, é possível construir um produto diferenciado em vez de apenas usar um LLM aberto ou de terceiros
    • Modularização:
      • com fine-tuning de tarefa única, é possível criar uma tropa de modelos menores, cada um especializado em sua própria tarefa
      • essa configuração permite modularizar o sistema em tarefas como moderação de conteúdo, extração e sumarização
    • Redução de dependência:
      • ao ajustar e hospedar seu próprio modelo, é possível reduzir questões legais envolvendo dados proprietários expostos a APIs externas (por exemplo: PII, documentos internos e código)
      • também ajuda a superar limitações de LLMs de terceiros, como rate limits, custo alto ou filtros de segurança excessivamente restritivos
  • 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
  • Como aplicar fine-tuning
    • coletar dados de demonstração/rótulos
    • definir métricas de avaliação
    • escolher o modelo pré-treinado
    • atualizar a arquitetura do modelo
    • escolher o método de fine-tuning (LoRA, QLoRA etc.)
    • ajustar hiperparâmetros básicos

Caching: reduz latência e custo

  • Caching é a técnica de armazenar dados previamente recuperados ou calculados
  • Isso permite atender futuras requisições para os mesmos dados com mais eficiência
  • Em LLMs, isso pode significar armazenar em cache a resposta do LLM para embeddings de requisições de entrada e, quando chegar uma nova requisição semanticamente semelhante, retornar a resposta em cache
    • Mas alguns profissionais dizem que isso é como "esperar que um desastre aconteça". Eu concordo
  • O ponto principal para adotar um padrão de caching é descobrir como fazer cache com segurança, em vez de depender apenas de similaridade semântica
  • Por que usar caching? Para reduzir latência e economizar custo ao diminuir o número de requisições ao LLM
  • Como aplicar caching?
    • é preciso começar entendendo bem os padrões de requisição dos usuários
    • considerar se o caching é eficaz para o padrão de uso

Guardrails: garante a qualidade da saída

  • Valida a saída do LLM para garantir não só que ela pareça boa, mas também que seja sintaticamente correta, factual e livre de conteúdo nocivo
  • Por que guardrails são necessários?
    • ajudam a garantir que a saída do modelo seja confiável e consistente o suficiente para uso em produção
    • fornecem uma camada extra de segurança e mantêm o controle de qualidade sobre a saída do LLM
  • Uma abordagem é controlar a resposta do modelo por meio do prompt
    • A Anthropic compartilhou prompts projetados para orientar o modelo a gerar respostas úteis, inofensivas e honestas (HHH)
  • Uma abordagem mais geral é validar a saída (como com o pacote Guardrails)
  • O NeMo-Guardrails da Nvidia segue princípios semelhantes, mas foi projetado para orientar sistemas conversacionais baseados em LLM
  • Também é possível ajustar diretamente a saída para obedecer a uma gramática específica, como no Guidance da Microsoft (dá para pensar como uma DSL para LLMs)
  • Como aplicar guardrails
    • Structural guidance
    • Syntactic guardrails
    • Content safety guardrails
    • Semantic/factuality guardrails
    • Input guardrails

Defensive UX: para prever e gerenciar erros

  • Defensive UX é uma estratégia de design que reconhece que coisas ruins, como imprecisões ou alucinações, podem acontecer enquanto usuários interagem com produtos baseados em machine learning ou LLM
  • O objetivo principal é prever e gerenciar isso de antemão, orientando o comportamento do usuário, prevenindo mau uso e lidando adequadamente com erros
  • Por que UX defensiva?
    • machine learning e LLMs não são perfeitos. Eles podem gerar resultados imprecisos
    • podem responder de forma diferente à mesma pergunta
    • a UX defensiva ajuda a mitigar esses problemas ao oferecer
      • melhor acessibilidade, mais confiança, Better UX
  • Consulte diretrizes reunidas por empresas
    • Microsoft’s Guidelines for Human-AI Interaction
    • Google’s People + AI Guidebook
    • Apple’s Human Interface Guidelines for Machine Learning
  • Como aplicar UX defensiva
    • definir expectativas corretas
    • permitir descarte eficiente (Enable efficient dismissal)
    • fornecer attribution
    • Anchor on familiarity

Collect user feedback: construir um flywheel de dados

  • Coletar feedback dos usuários permite entender suas preferências
  • O feedback específico de produtos com LLM contribui para avaliações, fine-tuning e construção de guardrails
  • Dados como corpus para pré-treinamento, demonstrações feitas por especialistas e preferências humanas para reward modeling são alguns dos poucos moat de produtos com LLM
  • O feedback pode ser explícito ou implícito
    • feedback explícito é a informação fornecida pelo usuário em resposta a uma solicitação do produto
    • feedback implícito é a informação aprendida a partir das interações do usuário, sem que ele precise fornecer feedback intencionalmente
  • Por que coletar feedback dos usuários
    • o feedback ajuda a melhorar o modelo
    • ao aprender do que os usuários gostam, não gostam ou reclamam, é possível melhorar o modelo para atender melhor às suas necessidades
    • também é possível adaptar-se às preferências individuais
    • loops de feedback ajudam a avaliar o desempenho geral do sistema
  • Como coletar feedback dos usuários
    • facilitar para que o usuário deixe feedback: como no ChatGPT, com opções de curtir/não curtir na resposta
    • considerar também feedback implícito: informações geradas quando o usuário interage com o produto

1 comentários

 
xguru 2023-08-28

No texto original há explicações detalhadas sobre cada item e sobre os algoritmos/métricas, mas isso foi omitido.
Veja este texto apenas como um resumo por alto e consulte também o original.