Preparar dados para o ajuste fino do modelo básico
Importante
Este recurso está na 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 ajuste fino do modelo básico (agora parte do Mosaic AI Model Training): ajuste fino supervisionado, conclusão do bate-papo e pré-treinamento contínuo.
O bloco de notas seguinte mostra como validar os seus dados. Ele é projetado para funcionar de forma independente antes de começar a treinar. Ele valida se seus dados estão no formato correto para o ajuste fino do modelo básico e inclui código para ajudá-lo a estimar os custos durante a execução do treinamento, tokenizando seu conjunto de dados bruto.
Validar dados para o bloco de notas de execução de treino
Preparar dados para ajuste fino supervisionado
Para tarefas supervisionadas de ajuste fino, os dados de treinamento podem estar em um dos seguintes esquemas:
Pares de prompt e resposta.
{"prompt": "your-custom-prompt", "response": "your-custom-response"}
Pares de pronto e conclusão.
{"prompt": "your-custom-prompt", "completion": "your-custom-response"}
Nota
Prompt-response e prompt-completion não são modelados, portanto, qualquer modelo específico do modelo, como a formatação de instruções do Mistral, deve ser executado como uma etapa de pré-processamento.
Os formatos de dados aceites são:
Um volume de catálogo Unity com um
.jsonl
arquivo. Os dados de treinamento devem estar no formato JSONL, onde cada linha é um objeto JSON válido. O exemplo a seguir mostra um exemplo de par de 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
data_prep_cluster_id
parâmetro para 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 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 conta para conjuntos de dados que têm esquemas de divisão diferentes. Não há suporte para conjuntos de dados aninhados do Hugging Face.Para um exemplo mais extenso, consulte o
mosaicml/dolly_hhrlhf
conjunto de dados em Abraçando o rosto.As linhas de dados de exemplo a seguir são do
mosaicml/dolly_hhrlhf
conjunto de dados.{"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 em chat devem estar em um formato de arquivo .jsonl
, onde cada linha é um objeto JSON separado representando uma única sessão de chat. Cada sessão de chat é representada como um objeto JSON com uma única chave, "messages"
, que mapeia para uma matriz de objetos de mensagem. Para treinar os dados do chat, basta fornecer o task_type = 'CHAT_COMPLETION'
.
As mensagens em formato de chat são formatadas automaticamente de acordo com o modelo de chat do modelo, portanto, não há necessidade de adicionar tokens de bate-papo especiais para sinalizar o início ou o fim de um turno de bate-papo manualmente. Um exemplo de um modelo que usa um modelo de chat personalizado é o Mistral-instruct.
Nota
Os modelos Mistral não aceitam system
funções 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 forsystem
, deve ser o primeiro bate-papo 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 funções entre usuário/assistente. Não deve haver duas mensagens adjacentes com a mesma função. A última mensagem na"messages"
matriz deve ter a função"assistant".
content
: Uma cadeia de caracteres que contém o texto da mensagem.
Segue-se um exemplo de dados formatados em 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 pré-formação contínua
Para tarefas contínuas de pré-treinamento , 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 Unity contendo .txt
arquivos. Cada .txt
ficheiro é tratado como uma única amostra. Se seus .txt
arquivos estiverem em uma pasta de volume do Unity Catalog, esses arquivos também serão obtidos para seus dados de treinamento. Todos os arquivos que nãotxt
são no volume são ignorados. Consulte Carregar arquivos para um volume do Catálogo Unity.
A imagem a seguir mostra arquivos de exemplo .txt
em um volume do Catálogo Unity. 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"
.