30 pontos por GN⁺ 2024-11-26 | Ainda não há comentários. | Compartilhar no WhatsApp

Para quem é este documento?

  • Documento para quem deseja melhorar a habilidade de escrever prompts para LLMs pós-treinados
  • Voltado a pessoas que, mesmo sem forte formação técnica, já tenham experiência básica no uso de LLMs
  • Primeira metade: oferece uma compreensão intuitiva sobre pós-treinamento e prompts
  • Segunda metade: apresenta procedimentos e dicas concretas para escrever prompts

Por que um guia de tuning é necessário?

  • Escrever prompts para LLMs é uma atividade empírica que exige aprendizado e ajustes contínuos
  • Este documento busca compartilhar de forma sistemática estratégias eficazes de escrita de prompts
  • Embora tenha sido escrito com foco em modelos pós-treinados como o Gemini, também pode ser aplicado a outros modelos

Pre-Training vs. Post-Training

Pré-treinamento (Pre-training)

  • Conceito de pré-treinamento
    • Pré-treinamento é um conceito antigo em deep learning: trata-se de aprender primeiro características gerais usando um conjunto de dados grande (B), semelhante, mas muito maior, que um conjunto de dados pequeno (A), e depois fazer o ajuste fino no conjunto A.
    • Como exemplo, podemos imaginar um pequeno conjunto de dados de mamografias (A) e um grande conjunto de imagens naturais coletadas na internet (B).
  • Procedimento do pré-treinamento
    1. Treina-se o modelo no grande conjunto de dados (B) para aprender características gerais e úteis.
    2. Depois, o modelo é ajustado finamente para o conjunto de dados A, obtendo melhor desempenho em A.
    3. Mais especificamente, o modelo aprende no conjunto B técnicas básicas como segmentação de objetos ou reconhecimento de conceitos independentemente da posição na imagem, e então, com base nisso, aprende adicionalmente habilidades específicas do conjunto A.
  • Necessidade do pré-treinamento
    • Sem o aprendizado a partir do conjunto B, o conjunto A sozinho pode não ter dados suficientes para aprender habilidades gerais, o que pode reduzir o desempenho.
    • Um modelo que aprendeu habilidades gerais no conjunto B só precisa aprender habilidades especializadas adicionais usando os dados limitados do conjunto A.
  • Caso dos LLMs (Large Language Models)
    • O pré-treinamento de um LLM é realizado ao executar a tarefa de “prever a próxima palavra” em textos da internet.
    • Nesse processo, o modelo aprende implicitamente a estrutura do mundo refletida na web.
  • A internet e o reflexo do mundo
    • A pergunta sobre que tipo de mundo a internet reflete é importante, e para entendê-la pode-se usar a metáfora de um “universo cinematográfico”.

Intuição do “universo cinematográfico” no pré-treinamento

  • Texto e descrição do mundo
    • Os grandes modelos de linguagem (LLMs) aprendem sobre o mundo por meio do texto.
    • O texto não está necessariamente restrito a refletir apenas a “verdade”.
    • Além de desinformação ou afirmações incorretas, há várias razões pelas quais o texto não reflete apenas uma única realidade objetiva.
  • Exemplo: Aragorn e Gondor
    • A veracidade da frase “Aragorn eventualmente se torna rei de Gondor” depende do contexto e das premissas.
      • Universo cinematográfico de “O Senhor dos Anéis”: pode ser considerada verdadeira.
      • “Universo Cinematográfico Marvel” ou realidade: não é verdadeira, pois Aragorn e Gondor são entidades fictícias.
  • Critério de verdade
    • Se uma afirmação é verdadeira ou não depende de “qual mundo” está sendo pressuposto.
    • Esse é um tema antigo na filosofia e na linguística, e uma visão geral mais detalhada sobre verdade pode ser vista neste link.
    • Em termos práticos, isso pode ser simplificado como: “se uma afirmação é verdadeira ou não depende do universo cinematográfico que ela toma como pano de fundo”.
  • Dados de pré-treinamento e universo cinematográfico
    • O corpus de pré-treinamento está mais próximo da união de vários universos cinematográficos criados pela cultura humana.
    • Mais precisamente, trata-se do conjunto das culturas que mais contribuíram para as fontes de dados de pré-treinamento, como a web.
      > Importante
      > O corpus de pré-treinamento pode ser considerado a união dos universos cinematográficos criados pela cultura humana e, em especial, reflete as culturas que mais contribuíram para fontes de dados como a web.
  • Compreensão de contexto pelo modelo
    • O LLM infere em qual “universo” está com base no contexto fornecido (ou seja, no prefixo).
    • Depois, ele age de acordo com as regras, convenções e fatos desse universo.
    • Prompts com fortes sinais de contexto facilitam para o modelo entender o “roteiro”.
      • Ex.: início de um post de blog sobre Nova York (“A selva de concreto onde os sonhos se realizam não é apenas uma letra de música, mas a verdade elétrica de Nova York...”)
    • Já prompts com contexto fraco, como “Hi, how are you?”, dificultam para o modelo determinar em qual universo está.
      • Expressões gerais desse tipo aparecem em vários corpora, deixando múltiplas possibilidades em aberto.
  • Papel do pós-treinamento (Post-training)
    • Quando falta contexto, o pós-treinamento desempenha um papel importante para que o modelo gere saídas mais específicas e consistentes.

Pós-treinamento (Post-training)

  • Papel do pós-treinamento
    • O pós-treinamento fornece orientações sobre o “universo padrão” em que o LLM opera por padrão.
    • Em vez de inferir o universo apenas pelo prompt, o pós-treinamento fixa certas suposições ou impõe restrições para resolver ambiguidades de maneira consistente.
    • Isso é necessário para aumentar a utilidade do modelo e, por exemplo, é útil para ensinar o LLM a “seguir as instruções do usuário” por padrão.
  • Importância do pós-treinamento
    • Sem pós-treinamento, uma instrução como “escreva um relatório sobre George Washington” pode falhar, gerando apenas um texto que continua essa instrução.
    • O pós-treinamento pode ajudar a alinhar o comportamento padrão do modelo com normas sociais.
    • Com isso, contribui para que o modelo se torne uma ferramenta mais segura e produtiva.
      > Importante
      > O pós-treinamento ensina o modelo a desempenhar papéis consistentes e básicos em diversos ambientes de implantação.
  • O que pode ser aprendido no pós-treinamento
    • O que o modelo pode aprender durante o pós-treinamento varia de aspectos práticos e concretos a aspectos subjetivos e pessoais.
  • Principais coisas que podem ser ensinadas no pós-treinamento
    • Como seguir um formato específico
      • Ex.: em Gemma's Formatter, assume-se que o modelo sempre opera em um universo cinematográfico no qual conversa com o usuário.
      • Nesse cenário, o modelo age de acordo com instruções de sistema, e a conversa sempre começa com o turno de um usuário humano.
    • Como seguir as instruções do usuário
      • Ex.: diante do pedido “escreva um ensaio sobre cachorros”, ele deve realmente escrever o ensaio.
      • É possível aprender no pós-treinamento a não ignorar o pedido do usuário nem responder de outra forma.
    • Alinhamento com o “mundo real”
      • É usado para ajustar o universo cinematográfico padrão do modelo ao “mundo real”, que tende a ser o principal interesse dos usuários.
      • Ex.: diante da pergunta “onde nasceu a celebridade $CELEBRITY?”, assume-se por padrão a informação do mundo real, e não de um universo de fanfic.
    • Reforço de segurança
      • A internet inclui diversos padrões normativos, e parte do conteúdo pode ser inadequada em ambientes de distribuição comercial.
      • O pós-treinamento ajuda a ajustar o modelo a determinadas políticas de segurança e estabelece padrões normativos para o conteúdo gerado.
      • Isso faz com que o modelo incorpore pressupostos normativos essenciais ao gerar textos complexos.
  • Conclusão
    • O pós-treinamento ajuda o modelo a executar de forma consistente comportamentos que atendem às expectativas em diferentes ambientes de uso.
    • É um processo essencial para maximizar a utilidade e a segurança do modelo.

Coleta de dados de pós-treinamento

  • Resumo principal
    • Durante o pós-treinamento, o LLM é treinado e avaliado com base em dados criados por avaliadores humanos.
    • Durante o pós-treinamento, o modelo toma como modelo os avaliadores humanos que geraram os dados, atuando como um “ator digital”.
  • Processo de coleta de dados de pós-treinamento
    • Criação de um conjunto de dados com exemplos variados de entrada
      • Criação de uma coleção de prompts que descrevem tarefas que o LLM pode executar (ex.: reestruturar dados em JSON, ajudar no planejamento de um casamento etc.).
      • Esses dados podem ser criados com base na intuição dos desenvolvedores ou em ideias sugeridas por avaliadores humanos.
    • Recrutamento de avaliadores humanos
      • Papel dos avaliadores: escrever a “resposta correta” para os exemplos de entrada ou classificar as respostas do modelo por ordem de preferência.
      • Dependendo da etapa de treinamento do modelo, os avaliadores geram tipos diferentes de dados.
    • Elaboração de diretrizes de avaliação
      • Fornecimento de exemplos e instruções detalhadas para que os avaliadores entendam bem a tarefa.
    • Coleta de dados e execução do pós-treinamento
      • Os dados coletados são aplicados ao modelo pré-treinado para conduzir o pós-treinamento.
    • Implantação do modelo
      • Após a conclusão do pós-treinamento, o modelo é implantado em ambiente real.
  • Impacto do pós-treinamento
    • Uma das razões pelas quais os LLMs conseguem agir como humanos é que aprenderam com conjuntos de dados de comportamento humano cuidadosamente coletados.
    • O pré-treinamento constrói as capacidades centrais do modelo, enquanto o pós-treinamento ajusta a direção de seu comportamento por meio de demonstrações humanas.

Importante
Uma das razões pelas quais os LLMs conseguem agir como humanos é que aprenderam com dados de comportamento humano cuidadosamente coletados.

  • Desafios da coleta de dados de pós-treinamento
    • Monotonia de tarefas repetitivas
      • O trabalho de avaliação pode ser tedioso. Por exemplo, para um excelente programador Python, pode ser mais interessante tocar seus próprios projetos.
      • Um poeta prefere escrever seus próprios poemas e provavelmente não terá muito interesse em avaliar poemas gerados por IA.
      • Os avaliadores podem perder motivação devido à repetitividade do trabalho, à falta de controle sobre a propriedade dos dados e à ausência de significado social na tarefa.
    • Dificuldade de definir o que é uma resposta “boa”
      • Definir uma resposta “boa” para uma tarefa é algo complexo.
      • É difícil deixar claros os critérios para boa escrita, factualidade e tarefas que reflitam a complexidade da realidade social.
      • Assim como sistemas jurídicos resolvem casos-limite por meio de precedentes, esses problemas dependem fortemente de subjetividade e contexto.
    • Falta de compreensão da tarefa por parte dos avaliadores
      • Há a possibilidade de os avaliadores não entenderem corretamente a tarefa.
      • Isso ocorre quando se contratam avaliadores com nível técnico inadequado ou quando eles não reconhecem suas próprias limitações.
      • Ex.: escrever uma resposta errada para uma pergunta de biologia com base em conhecimentos universitários desatualizados.
    • Erros humanos
      • Humanos cometem erros. Um professor pode elaborar uma prova com respostas erradas, e um médico cansado tem maior chance de errar um diagnóstico.
      • Como a qualidade dos dados de avaliação humana não é perfeita, sistemas de IA também podem acabar aprendendo dados incorretos com frequência.
  • Conclusão
    • A coleta de dados de pós-treinamento tem papel importante na qualidade do modelo, mas exige muito esforço para garantir a qualidade dos dados.
    • É importante assegurar a adequação entre avaliadores e tarefas para obter dados precisos e confiáveis.

Escrita de prompts

  • Resumo principal
    • Ao escrever instruções de sistema e prompts, isso deve ser feito tendo em mente a “mente coletiva” do grupo de avaliadores da equipe de pós-treinamento.
    • Se você escrever instruções que os avaliadores entendam e consigam seguir fielmente, é mais provável que o modelo também as siga melhor.

Importante
Instruções de sistema e prompts devem ser escritos de modo a refletir a mente coletiva do grupo de avaliadores da equipe de pós-treinamento.

Principais considerações ao escrever prompts

  • Verifique se as instruções são claras, concisas e explícitas

    • Ex.: se a instrução for para gerar código Python, um programador Python experiente escolhido aleatoriamente deve conseguir ler e entender a instrução de imediato.
      • Ruim: "Write a Python function that computes prime numbers."
      • Bom: "Write a Python function that computes prime numbers from 1 to 100. Include pytype annotations for the function and use 2-space indentation."
  • Verifique se as instruções são contraditórias ou difíceis de seguir

    • Elas devem ser escritas de forma concisa e intuitiva para que uma pessoa consiga segui-las fielmente mesmo quando estiver cansada ou com fome.
      • Ruim: "Don’t write a story about a mean dog, unless it's friendly, and also sad..."
      • Bom: "Write a short story (200-300 words) about a loyal golden retriever named Buddy..."
  • As instruções são numerosas demais?

    • O modelo pode ter dificuldade para seguir todas as instruções se elas forem longas e complexas. Quando possível, é melhor dividir a tarefa em subtarefas.
      • Ruim: "Read each article and, for each key idea, rate it on a scale of 1-10..."
      • Bom: Dividir em subtarefas: 1) gerar uma lista das ideias principais, 2) avaliar cada ideia, 3) traduzir as principais ideias, 4) criar uma postagem para redes sociais.
  • Use instruções positivas

    • Em vez de dizer “o que não fazer”, é mais eficaz explicitar “o que fazer”.
      • Ruim: "Don’t ever end your response with a full stop."
      • Bom: "Your response should always end with an exclamation mark or a question mark."
  • Instruções como “lembretes” para o modelo

    • Fornecem orientações adicionais para casos que não estejam claros, levando em conta vários exemplos de entrada.
    • Ex.: explicar claramente casos-limite em seções como "Considerações adicionais" ou "Suposições adicionais".
  • O prompt é um novo hiperparâmetro

    • A qualidade do prompt tem grande impacto no desempenho do sistema. Encontrar o prompt “ótimo” é impossível, mas experimentar para encontrar prompts gradualmente melhores é importante.
  • Instrua respostas de “não sei”

    • Forneça orientação explícita para casos de “desconhecido” ou “ambíguo”, para induzir o modelo a sinalizar a ambiguidade com clareza em vez de dar uma resposta errada.
  • Forte acoplamento entre prompt e checkpoint

    • O prompt está profundamente ligado a um checkpoint específico do modelo. Em novas versões do modelo, o mesmo prompt pode funcionar de forma diferente.

Guia básico de estilo para prompts

  • Considere usar Markdown : armazene cada prompt em um arquivo Markdown separado e organize bem títulos e seções para melhorar a legibilidade.
  • Considere outros usuários : os prompts devem ser escritos não apenas para o modelo, mas também para quem fará a manutenção.
  • Mantenha a simplicidade : se o prompt for longo ou complexo, a carga de manutenção pode aumentar quando o modelo mudar. Escreva de forma concisa e clara.
  • Prefira instruções zero-shot : instruções zero-shot são simples e fáceis de depurar e entender. Use few-shot apenas como último recurso.
  • Integração de exemplos : é melhor incorporar exemplos naturalmente nas instruções, com formulações como "For example".
    • Ex.: "Always start your response to the user with something passive aggressive. For example, start with something like 'Oh that’s what you want? ...'"

Procedimento iterativo de melhoria de novas instruções de sistema

  • O desenvolvimento de prompts é um processo iterativo
    • Escrever prompts é semelhante ao processo de treinar um modelo usando um conjunto de dados de validação.
    • O essencial é escrever frases claras e concisas, e é eficaz abordar separadamente as etapas de geração e edição.
  • É possível começar sem um conjunto de dados de validação
    • No início, deve-se construir rapidamente um MVP (Minimum Viable Product) simples e, depois, acompanhar o desempenho por meio de avaliações quantitativas.
    • É importante que o produto seja projetado para funcionar de forma estável mesmo diante de comportamentos inesperados do modelo.

Procedimento iterativo para instruções de sistema

  1. Preparar diversos exemplos de entrada
  • Reunir cerca de 10 a 50 exemplos variados de entrada que representem bem o problema.
  • Formar uma intuição sobre o comportamento de saída desejado.
  1. Começar com instruções simples
  • Escrever instruções o mais simples e claras possível.
  • Usar primeiro um modelo de menor custo (por exemplo, Gemini Flash 8B).
  1. Executar no primeiro exemplo de entrada
  • Testar para que o modelo gere uma resposta adequada.
  1. Fazer overfitting no primeiro exemplo
  • Adicionar “lembretes” às instruções para corrigir defeitos específicos encontrados na resposta do modelo.
  • Ex.: quando deveria extrair apenas nomes de pessoas, mas também inclui nomes de edifícios, mencionar isso explicitamente nas instruções.
  1. Passar para o próximo exemplo
  • Testar se as instruções também são eficazes em outros exemplos de entrada.
  • Se houver instruções excessivamente ajustadas ao primeiro exemplo, refiná-las para que fiquem mais generalizáveis.
  1. Organizar as instruções
  • Depois de criar instruções que funcionem para todos os exemplos de entrada, revisar a redação e corrigir erros de ortografia.
  • Verificar se as instruções revisadas ainda funcionam em todos os exemplos.
  1. Possibilidade de automação
  • No futuro, ferramentas de meta-otimização poderão automatizar a geração de instruções.
  • Ainda assim, análises qualitativas e trabalhos de garantia de qualidade continuarão sendo necessários.

Importante
A análise qualitativa é essencial no desenvolvimento de modelos e não pode ser evitada.

Situações em que LLMs são úteis

  1. Problemas fáceis de validar
    • LLMs são mais adequados para problemas em que “produzir a resposta é difícil, mas validá-la é fácil”.
    • Ex.: veja a publicação de Chris Gorgolewski sobre o “sweet spot” da IA generativa.
  2. Decompor o problema em subproblemas
    • Em vez de usar um prompt complexo, dividir o problema em subproblemas bem definidos para compor a cadeia de raciocínio do modelo.
  3. Uma abordagem pensando no futuro
    • Considerar a possibilidade de aumento da capacidade de inferência devido a inovações em hardware e modelos de negócio.
    • Projetar funcionalidades com foco no valor, e não no custo atual.
  4. Redução do custo de inferência
    • Espera-se que o custo de inferência diminua gradualmente, exigindo decisões centradas em “valor”.
    • Para implementar funcionalidades mais valiosas, considerar um rollout gradual levando em conta as limitações econômicas atuais.

Previsão
É possível que o custo de inferência de LLM apresente uma queda de preços comparável à Lei de Moore.


Materiais adicionais

Ainda não há comentários.

Ainda não há comentários.