Prepare os dados para o ajuste fino do Foundation Model

Prévia

Este recurso está em prévia pública em us-east-1 e us-west-2.

Este artigo descreve os formatos de arquivo de dados de treinamento e avaliação aceitos para o Foundation Model Fine-tuning (agora parte do Mosaic AI Model treinamento).

Notebook: Validação de dados para execução de treinamento

O 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. Ele valida se os dados estão no formato correto para o ajuste fino do Foundation Model e inclui um código para ajudar o senhor a estimar os custos durante a execução do treinamento por meio da tokenização do seu dataset bruto.

Validar dados para o notebook de execução de treinamento

Abra o bloco de anotações em outra tab

Preparar dados para conclusão da conversa

Para a tarefa de conclusão do bate-papo, os dados formatados para o bate-papo devem estar em um arquivo .jsonl onde 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 treinar com dados de chat, forneça o endereço task_type = 'CHAT_COMPLETION' ao criar a execução do treinamento.

As mensagens no 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 Meta Llama 3.1 8B 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 a primeira conversa na lista de mensagens. Deve haver pelo menos uma mensagem com a função assistant, e qualquer mensagem após a solicitação (opcional) do sistema deve alternar as funções entre usuário/assistente. Não deve haver duas mensagens adjacentes com a mesma função. A última mensagem na matriz messages deve ter a função assistant.

  • content: uma string que contém o texto da mensagem.

Observação

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

A seguir, um exemplo de dados formatados para conversa:

{"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 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 .txt o arquivo é tratado como uma única amostra. Se seu arquivo.txt estiverem em uma pasta de volume do Unity Catalog, esses arquivos também serão obtidos para seus dados de treinamento. Todos os arquivos não txt no volume são ignorados. Consulte Fazer upload de arquivos para um volume do Unity Catalog.

A imagem a seguir mostra um exemplo de .txt em um volume do Unity Catalog. Para usar esses dados em sua configuração de execução de pré-treinamento contínuo, defina train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data" e task_type = 'CONTINUED_PRETRAIN'.

Volume do UC com exemplos de arquivos de dataset de pré-treinamento contínuo

Formate os dados você mesmo

Aviso

A orientação nesta seção não é recomendada, mas está disponível para cenários em que a formatação personalizada de dados é necessária.

A Databricks recomenda enfaticamente o uso de dados formatados por chat para que a formatação adequada seja aplicada automaticamente aos seus dados com base no modelo que o senhor está usando.

O ajuste fino do Foundation Model permite que você mesmo faça a formatação dos dados. Qualquer formatação de dados deve ser aplicada ao treinar e servir seu modelo. Para treinar o modelo usando os dados formatados, defina task_type = 'INSTRUCTION_FINETUNE' ao criar a execução do treinamento.

Os dados de treinamento e avaliação devem estar em um dos seguintes esquemas:

  • Pares de instrução e resposta.

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

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

Importante

A resposta à instrução e a conclusão da conclusão não são modeladas, portanto, qualquer modelagem específica do modelo, como a formatação de instruções do Mistral, deve ser executada como etapa de pré-processamento.

Formatos de dados suportados

A seguir estão os formatos de dados suportados:

  • 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. O exemplo a seguir mostra um exemplo de par de prompts e respostas:

    {"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 segue um dos esquemas aceitos mencionados acima. Para tabelas Delta, você deve especificar um parâmetro data_prep_cluster_id para processamento de dados. Consulte Configurar uma execução de treinamento.

  • Um dataset público do Hugging Face.

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

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

    As linhas de dados de exemplo a seguir são do dataset 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."}