O objetivo da engenharia de dados é criar um conjunto de dados que permita treinar o melhor modelo, idealmente dentro do seu orçamento alocado.
Curadoria de dados
A curadoria de dados é uma ciência que exige entender como o modelo aprende e quais recursos estão disponíveis para ajudá-lo a aprender.
Quais dados você precisa depende da sua tarefa e do que você deseja ensinar ao modelo. Para o finetuning auto-supervisionado, você precisa de sequências de dados. Para finetuning de instrução, você precisa de dados no formato (instrução, resposta). Para finetuning de preferência, você precisa de dados no formato (instrução, resposta vencedora, resposta perdedora). Para treinar um modelo de recompensa, você pode usar o mesmo formato de dados que o finetuning de preferência ou usar dados com pontuações anotadas para cada um de seus exemplos no formato ((instrução, resposta), pontuação).
Os dados de treinamento devem exibir os comportamentos que você deseja que seu modelo aprenda. A aquisição de anotações de dados de alta qualidade é sempre desafiadora, mas é ainda mais desafiadora se você deseja ensinar aos modelos comportamentos complexos, como o raciocínio da cadeia de pensamento (COT) e o uso de ferramentas.
Cadeia de pensamento (chain-of-thought)
Para ensinar um modelo para gerar respostas passo a passo, seus dados de treinamento devem incluir respostas de CoT (cadeia de pensamento).
Uso de ferramenta
Dada a grande quantidade de conhecimento que um modelo adquire durante o pré-treinamento, muitos modelos podem saber intuitivamente como usar certas ferramentas. No entanto, a capacidade de uso da ferramenta de um modelo pode ser aprimorada mostrando exemplos de uso de ferramentas. É comum usar especialistas em domínio para criar dados de uso de ferramentas, onde cada prompt é uma tarefa que requer o uso da ferramenta e sua resposta são as ações necessárias para executar essa tarefa.
Ao curar dados para aplicativos com interfaces de conversação, você precisa considerar se precisa de dados de um turno único, dados de múltiplas turnos ou ambos. Os dados de um turno único ajudam a treinar um modelo para responder a instruções individuais. Dados de várias turnos, por outro lado, ensinam o modelo como resolver tarefas – muitas tarefas do mundo real envolvem idas e vindas.
Qualidade dos dados
Em geral, os dados podem ser considerados de alta qualidade se tiverem as seis características a seguir: relevantes, alinhados com os requisitos das tarefas, consistentes, corretamente formatados, únicos e compatíveis. Alguns casos de uso específicos podem ter outros requisitos:
- Relevante: Os exemplos de treinamento devem ser relevantes para a tarefa para a qual você está treinando o modelo.
- Alinhado com os requisitos da tarefa: As anotações devem estar alinhadas com os requisitos da tarefa.
- Consistente: As anotações devem ser consistentes entre os exemplos e os anotadores. Se você solicitar que dois anotadores anotem o mesmo exemplo, suas anotações não devem ser muito diferentes.
- Formatado corretamente: Todos os exemplos devem seguir o formato esperado pelo modelo. Tokens de formatação redundantes podem interferir no aprendizado do modelo e, portanto, devem ser removidos.
- Suficientemente único: Refere-se a exemplos únicos em seus dados. No contexto do treinamento do modelo, duplicações podem introduzir vieses e causar contaminação de dados.
- Em conformidade: Os dados devem estar em conformidade com todas as políticas internas e externas relevantes (incluindo leis e regulamentos).
Cobertura de dados
Os dados de treinamento de um modelo devem cobrir a gama de problemas que você espera resolver. Os usuários do mundo real geralmente têm uma ampla gama de problemas e a maneira como eles expressam esses problemas pode variar significativamente. Ter dados que capturam os diversos padrões de uso do seu aplicativo é essencial ao modelo para ter um bom desempenho. A cobertura requer diversidade de dados suficiente, e é por isso que muitos se referem a esse atributo como diversidade de dados.
Por exemplo, se alguns usuários construírem instruções detalhadas com referências abundantes, enquanto outros usuários preferem instruções curtas, seus dados de finetuning devem incluir instruções detalhadas e curtas. Se as consultas do usuário normalmente tiverem erros de digitação, você deve incluir exemplos com erros de digitação.
Como decidimos sobre o mix de dados certo? Uma abordagem simples é escolher um mix de dados que reflita com precisão o uso de aplicativos do mundo real. Você também pode usar experimentos para encontrar mixagens de dados ideais.
Quantidade de dados
A quantidade de dados necessários varia muito de uma situação para a outra. Além da qualidade e da diversidade de dados, três outros fatores influenciam a quantidade necessária de dados:
- Técnicas de finetuning: Finetuning promete dar o melhor desempenho, mas requer ordens de magnitude mais dados do que os métodos PEFT, como LoRa.
- Complexidade da tarefa: Uma tarefa simples, como classificar se uma avaliação de produto é positiva ou negativa, exigirá muito menos dados do que uma tarefa complexa.
- Desempenho do modelo base: Quanto mais próximo o modelo base estiver do desempenho desejável, menos exemplos serão necessários para alcançá-lo.
Se você tiver uma quantidade pequena de dados, pode ser interessante usar métodos PEFT em modelos mais avançados. Se tiver uma grande quantidade de dados, use o ajuste fino (finetuning) completo com modelos menores.
Experimentar um pequeno conjunto de dados pode ajudá-lo a estimar quantos mais dados você precisará. Você pode ajustar um modelo em subconjuntos de seu conjunto de dados atual – por exemplo, 25%, 50%, 100% – e plotar como o desempenho é escalado com o tamanho do conjunto de dados. Uma inclinação acentuada de ganho de desempenho com o aumento do tamanho do conjunto de dados significa que você pode esperar uma melhoria significativa de desempenho dobrando seus dados. Uma inclinação de platô significa que dobrar seus dados fornecerá apenas uma pequena melhoria.
Quantos dados utilizar para finetuning é determinado não apenas pelo que você precisa, mas também pelo que pode pagar. Se você orçar US$10.000,00 para anotação de dados e cada exemplo custar US$2,00 para anotar, você pode ter no máximo 5.000 exemplos. Você também pode precisar equilibrar o orçamento entre dados e computação.
Aquisição e anotação de dados
A aquisição de dados envolve a coleta de dados por meio de métodos como adquirir dados públicos, adquirir dados proprietários, anotar dados e sintetizá-los.
A fonte mais importante de dados, no entanto, normalmente são os dados do seu próprio aplicativo. Se você puder descobrir uma maneira de criar um fluxo de dados que alavanque os dados gerados por seus usuários para melhorar continuamente seu produto, você obterá uma vantagem significativa. Os dados do aplicativo são ideais porque são perfeitamente relevantes e alinhados com sua tarefa.
Um conjunto de dados pode ser desenvolvido a partir de várias fontes de dados por meio de vários canais de aquisição. Por exemplo, o processo de criação de um conjunto de dados (instrução, resposta) pode parecer o seguinte:
- Encontre conjuntos de dados disponíveis com as características desejáveis. Você pode encontrar um conjunto de dados promissores com 10.000 exemplos.
- Remova as instruções de baixa qualidade. Digamos que isso deixa você com 9.000 exemplos.
- Separe as instruções com respostas de baixa qualidade. Digamos que você encontre 3.000 exemplos desses. Isso deixa você com 6.000 exemplos de instruções e respostas de alta qualidade.
- Escreva manualmente as respostas para as 3.000 instruções de alta qualidade. Agora, seu conjunto de dados tem um total de 9.000 exemplos de alta qualidade.
- Percebendo que não há dados suficientes para o tópico X, crie manualmente um conjunto de 100 modelos de instruções sobre X. Use um modelo de IA para sintetizar 2.000 instruções usando esses 10 modelos.
- Anote manualmente essas 2.000 instruções sintéticas. Agora, seu conjunto de dados tem um total de 11.000 exemplos.
Na continuidade deste artigo, falaremos sobre Aumento e Síntese de Dados e sobre Processamento dos dados. Até lá!
Referências
Huyen, Chip. AI Engineering: Building Applications with Foundation Models
Comments (0)