Compartilhar via


Preparar dados para o Treinamento do Modelo de IA do Mosaic

Importante

Esse recurso está em Visualização Pública nas seguintes regiões: centralus, eastus, eastus2, northcentralus e westus.

Este artigo descreve os formatos de arquivo de dados de treinamento e avaliação aceitos para as tarefas de Treinamento de Modelo de IA do Mosaic (anteriormente conhecido como Treinamento de Foundation Model): ajuste fino supervisionado, conclusão de chat e pré-treinamento contínuo.

O notebook a seguir mostra como validar seus dados. Foi projetado para ser executado de forma independente antes de você começar o treinamento. O objetivo deste notebook é validar se seus dados estão no formato correto para o Treinamento do Modelo de IA do Mosaic. Ele também inclui um código para tokenizar seu conjunto de dados brutos para ajudar você a estimar os custos durante a execução do treinamento.

Validar dados para o notebook de execuções de treinamento

Obter notebook

Preparar dados para o ajuste supervisionado

Para as tarefas de ajuste supervisionado, os dados de treinamento podem estar em um dos seguintes esquemas:

  • Pares de prompts e resposta.

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

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

Observação

As respostas de prompt e preenchimentos de prompts não são modelados, então qualquer modelagem específica do modelo, como a formatação de instrução do Mistral, deve ser executada como uma etapa de pré-processamento.

Os formatos de dados aceitos são:

  • Um volume do Catálogo do Unity com um arquivo .jsonl. Os dados de treinamento devem estar no formato JSONL, em que cada linha é um objeto JSON válido. O exemplo a seguir mostra um exemplo do par prompt e resposta:

    {"prompt": "What is Databricks?","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
    
  • Uma tabela Delta que adere a um dos esquemas aceitos mencionados acima. Para tabelas Delta, você deve fornecer um parâmetro data_prep_cluster_id para o processamento de dados. Consulte Configurar uma execução de treinamento.

  • Um conjunto de dados público do Hugging Face.

    Se você usar um conjunto de dados do Hugging Face público 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 os conjuntos de dados que têm esquemas de divisão diferentes. Não há suporte para os conjuntos de dados aninhados do Hugging Face.

    Para obter um exemplo mais abrangente, consulte o conjunto de dados mosaicml/dolly_hhrlhf no Hugging Face.

    As linhas de dados de exemplo a seguir são do conjunto de dados mosaicml/dolly_hhrlhf.

    {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Databricks? ### Response: ","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
    {"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 dados para a conclusão do chat

Para tarefas de conclusão de chat, os dados formatados para chat devem estar em um formato de arquivo .jsonl, em que cada linha é um objeto JSON separado que representa uma única sessão de chat. Cada sessão de chat é representada como um objeto JSON com uma única chave, "messages", que é mapeada para uma matriz de objetos de mensagem. Para treinar com dados de chat, basta fornecer o task_type = 'CHAT_COMPLETION'.

As mensagens no formato de chat são formatadas automaticamente de acordo com o modelo de chat, portanto, não há necessidade de adicionar tokens de chat especiais para sinalizar manualmente o início ou o fim de um turno de chat. Um exemplo de modelo que usa um modelo de chat personalizado é a Instrução Mistral.

Observação

Os modelos de Mistral não aceitam funções system em seus formatos de dados.

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, 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 os dados para o pré-treinamento contínuo

Para as tarefas de pré-treinamento contínuas, os dados de treinamento são seus dados de texto não estruturados. Os dados de treinamento devem estar em um volume do Catálogo do Unity contendo arquivos .txt. Cada arquivo .txt é tratado como uma única amostra. Se os arquivos .txt estiverem em uma pasta de volume do Catálogo do Unity, esses arquivos também serão obtidos para os dados de treinamento. Quaisquer arquivos que não sejam txt no volume serão ignorados. Consulte Carregar arquivos em um volume do Catálogo do Unity.

A imagem a seguir mostra o exemplo de arquivos .txt em um volume do Catálogo do Unity. Para usar esses dados na configuração de execução de pré-treinamento contínua, defina train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data".

Volume UC com exemplos de arquivo de conjunto de dados de pré-treinamento contínuos