Preparar seus dados para fazer o ajuste fino de um modelo de conclusão de chat
Quando você decide que deseja fazer o ajuste fino de um modelo de linguagem, precisa identificar o conjunto de dados que pode usar para fazer o ajuste fino do seu modelo de linguagem.
Semelhante a qualquer modelo de machine learning, a qualidade do conjunto de dados tem um grande efeito sobre a qualidade do seu modelo. Embora você precise de menos dados do que quando treinaria um modelo de linguagem do zero, talvez ainda sejam necessários dados suficientes para maximizar a consistência do comportamento do modelo desejado. A quantidade de dados necessária depende do caso de uso.
Quando você faz o ajuste fino de um modelo de linguagem para conclusão de chat, os dados usados para fazer o ajuste fino de um modelo são uma coleção de conversas de exemplo. Mais especificamente, os dados devem conter três componentes:
- A mensagem do sistema
- A mensagem do usuário
- A resposta do assistente
As três variáveis se reúnem em um arquivo JSON Lines ou JSONL. Por exemplo, uma linha desse conjunto de dados pode ter a seguinte aparência:
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
O conjunto de dados deve mostrar o comportamento ideal do modelo. Você pode criar esse conjunto de dados com base no histórico de chats de um aplicativo de chat que você tem. Algumas coisas para ter em mente quando você usa dados reais é:
- Remova qualquer informação pessoal ou confidencial.
- Não se concentre apenas na criação de um grande conjunto de dados de treinamento, mas também verifique se o conjunto de dados inclui um conjunto diversificado de exemplos.
Você pode incluir várias voltas de uma conversa em uma única linha no conjunto de dados. Se você quiser fazer o ajuste fino somente de mensagens de assistente específicas, opcionalmente, poderá usar o par chave-valor weight
. Quando o peso é definido como 0, a mensagem é ignorada. Quando você define como 1, a mensagem é incluída para treinamento.
Um exemplo de um formato de arquivo de chat de várias voltas com pesos:
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
Ao preparar seu conjunto de dados para fazer o ajuste fino de um modelo de linguagem, você deve entender os comportamentos de modelo desejados, criar um conjunto de dados no formato JSONL e garantir que os exemplos incluídos sejam de alta qualidade e diversos. Ao preparar seu conjunto de dados, você tem uma chance maior de que o modelo ajustado melhore o desempenho do aplicativo de chat.