O que um conjunto de dados público contém
O Hugging Face Hub hospeda centenas de milhares de conjuntos de dados públicos, de algumas centenas de linhas a bilhões. Um conjunto de dados é uma tabela: cada linha é um item, cada coluna um campo. Conjuntos de dados maiores são divididos em configurações (subconjuntos, como um idioma) e divisões (geralmente treino, validação e teste). O Hub não prescreve o que as colunas significam, portanto, cada conjunto de dados é moldado por seus autores: uma lista de turnos de chat em um, uma coluna de perguntas e uma coluna de respostas em outro, uma página da web inteira por linha em um terceiro.
Apenas alguns desses formatos podem se tornar chats de treinamento. Um conjunto de dados de matemática com uma pergunta e uma resposta detalhada pode; um conjunto de dados de tweets rotulados com uma emoção não pode, porque diz o que um texto é, não como responder a ele. Antes da importação, a Scalata analisa a divisão que você escolheu e sugere os formatos adequados.
Qual coluna pergunta e qual responde
Para se tornar um chat de treinamento, cada linha precisa de uma parte que o usuário diz e uma parte que o assistente responde. Na maioria dos conjuntos de dados, os nomes das colunas revelam isso: prompt, question, instruction ou query de um lado; response, answer, output ou completion do outro. Alguns conjuntos de dados adicionam uma coluna de contexto — uma passagem sobre a qual a pergunta se refere, como no SQuAD — ou um prompt de sistema. Outras colunas, como um id, um endereço da web ou uma categoria, descrevem a linha e não desempenham nenhum papel no chat.
| Coluna | O que contém | Papel |
|---|---|---|
instruction | texto · curto | prompt |
context | texto · longo, frequentemente vazio | contexto, adicionado abaixo da pergunta |
response | texto · longo | resposta |
category | texto curto · poucos valores distintos | não utilizado |
A Scalata sugere os formatos que se adequam ao conjunto de dados que você escolher, com um breve motivo para cada um. Se você preferir, Escolher colunas manualmente permite que você selecione qualquer formato e colunas; as linhas que não se adequam são ignoradas.
Os formatos
Uma coluna contém uma lista de turnos, como pares role/content ou no estilo ShareGPT com from/value. É o formato mais próximo de um chat de treinamento; conversas de múltiplos turnos permanecem de múltiplos turnos.
Uma coluna de pergunta e uma coluna de resposta, opcionalmente com uma coluna de contexto que é adicionada abaixo da pergunta. Cada linha se torna um chat de turno único.
Uma instruction, um input opcional ao qual se aplica, e um output. Nomeado em homenagem ao conjunto de dados Alpaca de Stanford, que popularizou o formato. A instrução e a entrada juntas se tornam a mensagem do usuário.
instruction: Summarise the customer's complaint in one sentence.
input: I ordered the blue model on the 3rd, was charged twice and still have no tracking number.
output: The customer was charged twice for an order that has not shipped.Uma resposta melhor (chosen) e uma pior (rejected) para o mesmo prompt, ou duas conversas inteiras que diferem apenas no final. Essas linhas se tornam pares de preferência para DPO em vez de respostas únicas.
prompt: Can I change my delivery address after ordering?
chosen: Yes, until the parcel ships. Open Orders → your order → Edit address…
rejected: Please contact support.Uma coluna de texto contém uma conversa inteira com rótulos de interlocutor, que a Scalata divide em turnos. O texto antes do primeiro rótulo se torna o prompt do sistema.
### Human: … ### Assistant: …
Human: … Assistant: …
User: … Assistant: …
<|system|> … <|user|> … <|assistant|> … (also <|im_start|>user)
[INST] <<SYS>> … <</SYS>> … [/INST] … (Llama 2 style)
### Instruction: … ### Input: … ### Response: …
Question: … Answer: …Texto longo sem perguntas, respostas ou rótulos de interlocutor: páginas da web, artigos, livros. Não há ao que responder, portanto não é um treinamento de chat, mas é útil para o pré-treinamento contínuo.
Três resultados
Exibido com o motivo. Um tweet rotulado como “alegria” diz o que um texto é, não como responder a ele.
- Chats. Cada linha se torna um exemplo, pronto para treinamento supervisionado (ou DPO, para linhas de preferência).
- Texto simples. As linhas são reunidas em documentos e adicionadas aos Documentos do conjunto de dados, prontas para o pré-treinamento contínuo ou para a geração de perguntas e respostas a partir delas.
- Não suportado, com o motivo. Casos típicos são dados de classificação (um texto curto e um rótulo, como cardiffnlp/tweet_eval), apenas imagens ou áudio, ou tabelas de números.
- Você escolhe o conjunto de dados e sua divisão de treinamento, cerca de 15.000 pares de instrução/resposta escritos por humanos.
- O conjunto de dados possui quatro colunas:
instruction(curta),context(longa, frequentemente vazia),response(longa) ecategory(alguns rótulos repetidos). - Prompt e resposta é a escolha natural:
instruction→ prompt,response→ resposta,contextadicionado abaixo da pergunta.categoryé deixada de fora. - Você importa 2.000 linhas. Elas se tornam 2.000 exemplos de turno único. Importar novamente mais tarde com 5.000 linhas adiciona apenas as 3.000 novas.
Como usar bem os dados públicos
- Leia o cartão do conjunto de dados primeiro. Ele informa a licença, a origem dos dados e os problemas conhecidos. Alguns conjuntos de dados não podem ser usados comercialmente.
- Prefira a proximidade ao tamanho. Um conjunto de dados público ensina seu próprio estilo e tópicos. Algumas milhares de linhas que se assemelham ao seu caso de uso geralmente ajudam mais do que um enorme conjunto de dados geral.
- Misture com seus próprios dados. Chats públicos são uma boa base para o comportamento geral; seus próprios chats ensinam o que é específico para você.
- Analise alguns exemplos importados antes do treinamento, para confirmar se as funções foram atribuídas onde você esperava.
Erros comuns
- Importar um conjunto de dados de classificação e esperar que ele ensine o modelo a responder.
- Não ler a licença no cartão do conjunto de dados antes de treinar um modelo que você usará comercialmente.
- Forçar um mapeamento manual que coloca a coluna de resposta na função de prompt, fazendo com que o modelo aprenda a responder com perguntas.
- Importar um enorme conjunto de dados geral e ofuscar as poucas centenas de chats que descrevem a sua verdadeira tarefa.
- Usar a divisão de teste de um conjunto de dados público como dados de treinamento e, em seguida, avaliar em benchmarks construídos a partir dela.
Referências e leitura complementar
Fontes externas abrem em uma nova aba.
- 01DatasetsHugging Face docs · huggingface.coComo os conjuntos de dados do Hub são organizados em configurações, divisões, linhas e colunas.
- 02Dataset CardsHugging Face Hub docs · huggingface.coO que um cartão de conjunto de dados deve informar: fontes, licença, uso pretendido e limitações.
- 03Dataset formats and typesHugging Face TRL docs · huggingface.coOs formatos comuns de dados de treinamento — conversacional, prompt-conclusão, preferência — lado a lado.
- 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduDe onde vem o layout de instrução, entrada e saída.