9 pontos por xguru 2024-12-02 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A Canva alcançou 200 milhões de MAU, tem mais de 30 bilhões de designs e cria cerca de 300 novos designs por segundo
    • Tornou-se um problema cada vez mais importante permitir que os usuários busquem designs e encontrem arquivos compartilhados com eles
  • Na busca pública (busca na web/de produto), os datasets são construídos com base nas consultas dos usuários e em um conjunto fixo de itens de busca
    • Especialistas avaliam e rotulam a relevância entre cada consulta e item
    • O desempenho do mecanismo de busca é avaliado por métricas de recall e precision
  • Na busca pessoal, não é possível usar os dados do usuário como dataset de avaliação sem visualizar designs privados (para proteger a privacidade)
    • Como solução, usou-se IA generativa (como GPT-4o) para gerar conteúdo e consultas realistas, mas totalmente sintéticos
    • Isso oferece uma forma de avaliar melhorias no pipeline de busca sem qualquer violação de privacidade

Estado anterior: métodos de teste limitados

  • Processo de teste existente
    • Os engenheiros usavam um método limitado de testes offline
    • Executavam consultas de problemas conhecidos em contas da Canva para comparar o desempenho antes e depois de mudanças no código
      • Ex.: em um trabalho para melhorar correção ortográfica, testavam consultas incorretas como desgin
        • Antes da mudança: nenhum resultado
        • Depois da mudança: retorno de documentos relacionados a design
    • Mudanças que passavam no teste offline seguiam para a etapa de teste online
      • Execução de testes A/B usando o framework de experimentos da Canva
      • Comparação da taxa de sucesso da busca entre usuários com a mudança aplicada e usuários da busca padrão
  • Limitações
    • Falta de validade estatística nos testes offline
      • Um número limitado de consultas dificilmente representa a diversidade do comportamento de busca
    • Possível impacto negativo nos usuários
      • Quedas de desempenho não detectadas no teste offline poderiam ser expostas em experimentos online
    • Alto consumo de tempo nos experimentos online
      • Para garantir significância estatística, eram necessários no mínimo vários dias ou até semanas
      • Isso limitava o número de experimentos que podiam rodar em paralelo e a velocidade para testar ideias

Estado ideal: construir um novo dataset e pipeline de avaliação

  • Objetivo: criar um dataset sob medida e um pipeline de avaliação para que os engenheiros pudessem avaliar mudanças de forma objetiva antes de ir para testes online
  • Requisitos principais:
    • Reprodutibilidade: produzir os mesmos resultados a qualquer momento
    • Iteração rápida: permitir que engenheiros testem rapidamente os resultados após mudanças no código, sem esperar o deploy em produção
    • Semelhança com o ambiente de produção: fornecer resultados alinhados ao comportamento real em produção
    • Trabalho sem bloqueios: permitir que membros da equipe experimentem mudanças de código de forma independente, sem atrapalhar uns aos outros

Criação de um dataset realista: uso de IA generativa

  • Dataset de avaliação com preservação de privacidade
    • O GPT-4o foi usado para gerar dados sintéticos que pudessem substituir dados reais de usuários
    • Sem copiar designs de usuários, criaram-se dados realistas refletindo distribuições estatísticas, como comprimento de texto
  • Geração de casos de teste para avaliar recall
    • Com base em tema e tipo de design (documento, apresentação etc.), o GPT-4o gerava consultas e conteúdos correspondentes
    • Ajuste da dificuldade das consultas:
      • Inclusão de erros de ortografia
      • Substituição por sinônimos
      • Reformulação da consulta
  • Geração de casos de teste para avaliar precision
    • Criação de datasets com designs relevantes e não relevantes
    • Formas de gerar designs não relevantes:
      • Incluir apenas parte das palavras-chave
      • Modificar para o formato de template de design ou rascunho
      • Definir como design antigo

Problemas encontrados ao usar IA generativa

  • Vantagens e limitações dos LLMs
    • Vantagem: capacidade de gerar grandes volumes de dados de texto com eficiência
      • O dataset estático de avaliação gerado podia ser reutilizado repetidamente, fornecendo resultados de avaliação consistentes, determinísticos e rápidos
    • Eliminação de limitações: depois de gerar o dataset, os problemas de latency e randomness dos LLMs deixavam de importar
  • Problemas
    • Recusa em gerar títulos longos
      • Embora fosse solicitado que gerasse títulos com 12–15 palavras, o modelo retornava títulos mais curtos
        • Ex.:
          • Exploring the Latest Advancements in Screen Technology and Applications (9 palavras)
          • Best Practices for Teachers: Presentation Tips for Meet the Teacher (10 palavras)
      • Isso pode refletir o fato de que títulos longos são raros em documentos reais
      • Como resultado, os critérios de comprimento de título precisaram ser revistos
    • Erros de repetição e alucinação
      • Ao solicitar diferentes erros ortográficos de uma palavra, o modelo retornava resultados duplicados ou pouco realistas
        • Ex.: ao pedir diferentes erros ortográficos de Calendar, foram gerados resultados repetitivos
    • Problemas ao gerar títulos não relevantes
      • Em alguns casos, o modelo não seguia corretamente as instruções ao gerar títulos de designs nonrelevant
      • Alguns títulos retornados não incluíam as palavras-chave especificadas ou traziam resultados incorretos, como simplesmente conter title string

Execução da avaliação: testes e análise em ambiente local

  • Uso do dataset de avaliação
    • O dataset sintético gerado foi aplicado ao pipeline de busca para produzir métricas de avaliação
    • Após explorar várias formas de execução, adotou-se uma abordagem local com Testcontainers
  • Pipeline local baseado em Testcontainers
    • Aproveitamento do suporte existente a Testcontainer
      • A arquitetura de RPC orientada a serviços da Canva já tinha suporte a Testcontainer implementado
      • O pipeline foi construído combinando componentes externos, como Elasticsearch, com Testcontainers internos
    • Reprodução completa da configuração de produção
      • O pipeline de busca e os modelos de ML de suporte eram executados localmente, criando um ambiente idêntico ao de produção
      • Isso permitia que engenheiros experimentassem diferentes variações de modelos
  • Processo de tratamento dos casos de teste
    1. Gerar o state necessário para cada caso de teste
    • Em vez de criar um design da Canva, extraíam-se e inseriam-se apenas os dados necessários para o índice de busca
    1. Executar o pipeline de busca local
    • O dataset era executado junto com a consulta de teste para gerar resultados de busca
    1. Enviar os resultados ao módulo de avaliação
    • Cálculo das métricas de recall e precision
  • Diagrama de fluxo de dados
    • Foi fornecido um diagrama mostrando visualmente o fluxo completo de processamento de dados pela ferramenta de avaliação

Visualizando os resultados

  • Desenvolvimento de ferramenta de visualização
    • Foi criada uma ferramenta customizada baseada em Streamlit para visualizar e comparar com eficiência os resultados da avaliação
    • Engenheiros podiam comparar de relance métricas de recall e precision entre diferentes configurations
  • Principais recursos
    1. Comparação por configuração
      • Os resultados eram agregados para comparar lado a lado o desempenho de diferentes configurações
    2. Detalhamento do desempenho por tipo de consulta e dificuldade
      • Era possível analisar separadamente o desempenho conforme tipos específicos de consulta ou níveis de dificuldade
    3. Depuração de consultas individuais
      • Era possível inspecionar a saída de cada consulta para depurar com precisão casos de uso específicos
  • Suporte a decisões rápidas
    • Quando a avaliação terminava, a ferramenta era executada imediatamente, ajudando engenheiros a tomar decisões rápidas com base nos resultados de desempenho
    • Os engenheiros podiam iterar e melhorar de forma independente, sem depender do trabalho de outros membros da equipe

Impacto e planos futuros

  • Quão perto chegaram do estado ideal?
    • O dataset e as ferramentas de avaliação oferecem reprodutibilidade completa e geram resultados em poucos minutos
    • Engenheiros conseguem avaliar localmente, de forma independente e objetiva, resultados alinhados ao comportamento em produção
    • A privacidade é totalmente preservada sem visualizar nenhum design nem consulta de clientes
  • Resumo dos resultados
    1. Iteração rápida
    • Mais de 1.000 casos de teste são processados em menos de 10 minutos
    • Durante os 2–3 dias de um experimento online, é possível realizar mais de 300 avaliações offline
    1. Correlação entre resultados offline e online
    • Os resultados da avaliação offline foram projetados para eliminar ideias inadequadas e levar a testes online apenas mudanças com alta chance de sucesso
    • Foram realizados vários experimentos para verificar a sincronização entre resultados offline e online durante o desenvolvimento
    • Foi observada forte consistência tanto em mudanças positivas quanto negativas de desempenho
    1. Capacidade de depuração local
    • Há suporte de depuração para observar o fluxo dos casos de teste por cada componente do pipeline de busca
    • Isso é muito mais eficiente do que a abordagem anterior de depuração, que dependia de logs de produção
  • Próximos planos
    • Expandir o dataset
      • Adicionar recursos mais realistas, como grafo de colaboração
    • Melhorar as ferramentas
      • Reforçar o tooling para que engenheiros possam gerar dados sintéticos customizados conforme a necessidade
    • Maximizar o uso de IA generativa
      • Seguir aproveitando as possibilidades oferecidas por dados sintéticos para evoluir as ferramentas de busca da Canva e entregar a melhor experiência possível à comunidade

Ainda não há comentários.

Ainda não há comentários.