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 a tarefa Foundation Model Fine-tuning (agora parte do Mosaic AI Model treinamento): ajuste fino supervisionado, conclusão do chat e pré-treinamento contínuo.
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.
Prepare dados para ajuste fino supervisionado
Para a tarefa de ajuste fino supervisionado, os dados de treinamento podem 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"}
Observação
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.
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. 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."}
Preparar dados para conclusão da conversa
Para tarefas de conclusão de conversa, os dados formatados para conversa devem estar em formato de arquivo .jsonl
, em que cada linha é um objeto JSON separado que representa uma única sessão de conversa. Cada sessão de conversa é representada como objeto JSON com uma única chave, "messages"
, que mapeia para uma matriz de objetos de mensagem. Para ensinar com dados de conversa, basta disponibilizar o task_type = 'CHAT_COMPLETION'
.
As mensagens no formato de conversa são formatadas automaticamente de acordo com o padrão de conversa do modelo, portanto não há necessidade de adicionar tokens de conversa especiais para sinalizar manualmente o início ou o fim de um turno de conversa. Um exemplo de um modelo que utiliza um padrão de conversa personalizado é o Mistral-instruct.
Observação
Os modelos 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 string que indica o autor da mensagem. Os valores possíveis são"system"
,"user"
e"assistant"
. Se a função forsystem
, 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 instrução (opcional) do sistema deve 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 string que contém o texto da mensagem.
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 tarefas pré-treinamento contínuo, os dados de treinamento são seus dados de texto não estruturados. Os dados de treinamento devem estar em um volume do Unity Catalog contendo arquivos .txt
. Cada arquivo .txt
é tratado como uma única amostra. Se seus arquivos .txt
estiverem em uma pasta de volume do Unity Catalog, eles também serão obtidos para seus dados de treinamento. Quaisquer arquivos que não sejamtxt
no volume serão ignorados. Consulte Fazer upload de arquivos para um volume do Unity Catalog.
A imagem a seguir mostra exemplos de arquivos .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"
.