Preparar dados para o treinamento do Foundation Model

Importante

Esse recurso está em Public Preview. Entre em contato com a equipe do Databricks account para se inscrever no Public Preview.

Esta seção descreve os formatos de arquivo de dados de treinamento e avaliação aceitos para as tarefas suportadas: ajuste fino supervisionado, conclusão do chat e pré-treinamento contínuo.

O site Notebook a seguir mostra como validar seus dados. Ele foi projetado para ser executado de forma independente antes de o senhor começar o treinamento. O objetivo do site Notebook é validar se os dados do senhor estão no formato correto para o treinamento Foundation Model. Ele também inclui código para tokenizar o site dataset bruto para ajudá-lo a estimar os custos durante a execução do treinamento.

Validar dados para treinamento execução Notebook

Abra o bloco de anotações em outra guia

Preparar dados para treinamento supervisionado

Para a tarefa de treinamento supervisionado, os dados de treinamento podem estar em um dos seguintes esquemas:

  • Pares de estímulos e respostas.

    {"prompt": "your-custom-prompt", "response": "your-custom-response"}
    
  • Pares de solicitação e conclusão.

    {"prompt": "your-custom-prompt", "completion": "your-custom-response"}
    

Observação

O prompt-response e o prompt-completion não são modelos , portanto, qualquer modelo específico do modelo, como Mistral a formatação de instruções do site , deve ser realizado como um passo do pré-processamento.

Os formatos de dados aceitos são:

  • Um volume do Unity Catalog com um arquivo .jsonl. Os dados de treinamento devem estar no formato JSONL, em que cada linha é um objeto JSON válido.

  • Uma tabela Delta que adere a um dos esquemas aceitos mencionados acima. Para tabelas Delta, o senhor deve fornecer um parâmetro data_prep_cluster_id para o processamento de dados. Consulte Configurar uma execução de treinamento.

  • Um site público Hugging Face dataset.

    Se o senhor usar um site público Hugging Face dataset como seus dados de treinamento, especifique o caminho completo com a divisão, por exemplo, mosaicml/instruct-v3/train and mosaicml/instruct-v3/test. Isso leva em conta o conjunto de dados que tem diferentes esquemas de divisão. Não há suporte para o conjunto de dados aninhados do site Hugging Face.

    Para obter um exemplo mais abrangente, consulte mosaicml/dolly_hhrlhf dataset em Hugging Face.

    Os exemplos de linhas de dados a seguir são do mosaicml/dolly_hhrlhf dataset.

    {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Kubernetes? ### Response: ","response": "Kubernetes is an open source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by the Cloud Native Computing Foundation."}
    {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Van Halen famously banned what color M&Ms in their rider? ### Response: ","response": "Brown."}
    

Preparar os dados para o preenchimento do chat

Para a tarefa de conclusão de bate-papo, os dados formatados para bate-papo devem estar em um formato de arquivo .jsonl, em que cada linha é um objeto JSON separado que representa uma única sessão de bate-papo. Cada sessão de bate-papo é representada como um objeto JSON com um único key, "messages", que mapeia para uma matriz de objetos de mensagem. Para ensinar sobre dados de bate-papo, basta fornecer o task_type = 'CHAT_COMPLETION'.

As mensagens em formato de bate-papo são formatadas automaticamente de acordo com o padrão de bate-papo do modelo, portanto, não há necessidade de adicionar um bate-papo especial tokens para sinalizar manualmente o início ou o fim de um turno de bate-papo. Um exemplo de um modelo que usa um padrão de bate-papo personalizado é o Mistral-instruct.

Cada objeto de mensagem na matriz representa uma única mensagem na conversa e tem a seguinte estrutura:

  • role: Uma cadeia de caracteres que indica o autor da mensagem. Os valores possíveis são "system", "user" e "assistant". Se a função for system, ela deverá ser o primeiro chat na lista de mensagens. Deve haver pelo menos uma mensagem com a função "assistant", e todas as mensagens após o prompt do sistema (opcional) devem alternar as funções entre usuário/assistente. Não pode haver duas mensagens adjacentes com a mesma função. A última mensagem na matriz "messages" deve ter a função "assistant".

  • content: Uma cadeia de caracteres que contém o texto da mensagem.

A seguir, um exemplo de dados formatados para chat:

{"messages": [
  {"role": "system", "content": "A conversation between a user and a helpful assistant."},
  {"role": "user", "content": "Hi there. What's the capital of the moon?"},
  {"role": "assistant", "content": "This question doesn't make sense as nobody currently lives on the moon, meaning it would have no government or political institutions. Furthermore, international treaties prohibit any nation from asserting sovereignty over the moon and other celestial bodies."},
  ]
}

Preparar dados para o pré-treinamento contínuo

Para a tarefa de pré-treinamento contínuo, os dados de treinamento são os dados de texto não estruturados. Os dados de treinamento devem estar em um volume do Unity Catalog que contenha .txt arquivos. Cada arquivo .txt é tratado como uma única amostra. Se os arquivos .txt estiverem em uma pasta de volume do Unity Catalog, esses arquivos também serão obtidos para os dados de treinamento. Todos os arquivos que não sejamtxt no volume são ignorados.