Criar uma execução de treinamento usando a API de 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 como criar e configurar uma execução de treinamento usando o Foundation Model Fine-tuning (agora parte do Mosaic AI Model treinamento) API, e descreve todos os parâmetros usados na chamada API. O senhor também pode criar uma execução usando a interface do usuário. Para obter instruções, consulte Criar uma execução de treinamento usando a UI de ajuste fino do modelo Foundation.

Requisitos

Consulte Requisitos.

Crie uma execução de treinamento

Para criar execuções de treinamento de forma programática, use a função create(). Essa função treina um modelo no conjunto de dados disponibilizado e converte o ponto de verificação final do Composiotr em um ponto de verificação formatado como Hugging Face para inferência.

As entradas necessárias são o modelo que o senhor deseja ensinar, o local do seu treinamento dataset e onde registrar seu modelo. Há também parâmetros opcionais que permitem que o senhor faça avaliações e altere os hiperparâmetros da sua execução.

Após a conclusão da execução, a execução concluída e o ponto de verificação final são salvos, o modelo é clonado e esse clone é registrado no Unity Catalog como uma versão do modelo para inferência.

O modelo da execução concluída, não a versão do modelo clonado no Unity Catalog, e seus pontos de verificação Composer e Hugging Face são salvos no MLflow. Os pontos de verificação do Composer podem ser usados para tarefas contínuas de ajuste fino.

Consulte Configurar uma execução de treinamento para ver os detalhes sobre os argumentos da função create().

from databricks.model_training import foundation_model as fm

run = fm.create(
  model='meta-llama/Llama-2-7b-chat-hf',
  train_data_path='dbfs:/Volumes/main/mydirectory/ift/train.jsonl', # UC Volume with JSONL formatted data
  # Public HF dataset is also supported
  # train_data_path='mosaicml/dolly_hhrlhf/train'
  register_to='main.mydirectory', # UC catalog and schema to register the model to
)

Configurar uma execução de treinamento

A tabela a seguir resume os parâmetros da função foundation_model.create().

Parâmetro

Obrigatório

Tipo

Descrição

model

x

str

O nome do modelo a ser usado. Consulte Modelos compatíveis.

train_data_path

x

str

O local dos seus dados de treinamento. Pode ser um local no Unity Catalog (<catalog>.<schema>.<table> ou dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl) ou um conjunto de dados do HuggingFace.

Para INSTRUCTION_FINETUNE, os dados devem ser formatados com cada linha contendo um campo prompt e response.

Para CONTINUED_PRETRAIN, essa é uma pasta de arquivos .txt. Consulte Preparar dados para o ajuste fino do Foundation Model para obter os formatos de dados aceitos e Tamanho de dados recomendado para treinamento do modelo para obter recomendações de tamanho de dados.

register_to

x

str

O catálogo e o esquema do Unity Catalog (<catalog>.<schema> ou <catalog>.<schema>.<custom-name>) em que o modelo é registrado após o treinamento para facilitar a implantação. Se custom-name não for informado, o default será o nome da execução.

data_prep_cluster_id

str

O ID do clustering a ser usado para processamento de dados do Spark. Isso é necessário para tarefas de treinamento supervisionado em que os dados de treinamento estão em uma tabela Delta. Para obter informações sobre como encontrar a ID do cluster, consulte Obter ID do cluster.

experiment_path

str

O caminho para o experimento MLflow em que a saída da execução de treinamento (métricas e pontos de verificação) é salva. O default é o nome da execução dentro do workspace pessoal do usuário (ou seja, /Users/<username>/<run_name>).

task_type

str

O tipo de tarefa a ser executada. Pode ser CHAT_COMPLETION (default), CONTINUED_PRETRAIN ou INSTRUCTION_FINETUNE.

eval_data_path

str

A localização remota dos seus dados de avaliação (se houver). Deve seguir o mesmo formato de train_data_path.

eval_prompts

Lista [str]

Uma lista de strings de instrução para gerar respostas durante a avaliação. O padrão é None (não gera instruções). Os resultados são registrados no experimento sempre que o modelo é verificado. As gerações ocorrem em cada ponto de verificação do modelo com os seguintes parâmetros de geração: max_new_tokens: 100, temperature: 1, top_k: 50, top_p: 0.95, do_sample: true.

custom_weights_path

str

A localização remota de um ponto de verificação de modelo personalizado para treinamento. O padrão é None, o que significa que a execução começará com os pesos pré-treinados originais do modelo escolhido. Se pesos personalizados forem fornecidos, esses pesos serão usados em vez dos pesos pré-treinados originais do modelo. Esses pesos devem ser um ponto de verificação do Composer e devem corresponder à arquitetura do model especificado. Consulte Construir com base em pesos de modelos personalizados

training_duration

str

A duração total da sua execução. O default é uma época ou 1ep. Pode ser especificado em épocas (10ep) ou tokens (1000000tok).

learning_rate

str

A taxa de aprendizado para o treinamento do modelo. Para todos os modelos que não sejam Llama 3.1 405B Instruct, a taxa de aprendizado default é 5e-7. Para a Llama 3.1 405B Instruct, a taxa de aprendizado da default é 1.0e-5. O otimizador é o DecoupledLionW com betas de 0,99 e 0,95 e sem redução de peso. O programador da taxa de aprendizagem é LinearWithWarmupSchedule com um aquecimento de 2% da duração total do treinamento e um multiplicador da taxa de aprendizagem final de 0.

context_length

str

O comprimento máximo da sequência da amostra de dados. É usado para truncar quaisquer dados muito longos e para empacotar sequências mais curtas para eficiência.

O default é 8192 tokens ou o tamanho máximo do contexto para o modelo oferecido, o que for menor. Você pode usar esse parâmetro para configurar o tamanho do contexto, mas a configuração além do tamanho máximo do contexto de cada modelo não é compatível. Consulte Modelos compatíveis para saber o tamanho máximo de contexto suportado de cada modelo.

validate_inputs

Booleana

Se deve validar o acesso aos caminhos de entrada antes de enviar o Job de treinamento. O default é True.

Construir sobre os pesos dos modelo personalizados

O ajuste fino do modelo Foundation suporta a adição de pesos personalizados usando o parâmetro opcional custom_weights_path para ensinar e personalizar um modelo.

Para começar, defina custom_weights_path como o caminho do ponto de verificação do Composer de uma execução de treinamento anterior. Os caminhos dos pontos de controle podem ser encontrados em Artifacts tab de uma execução anterior do MLflow. O nome da pasta do ponto de verificação corresponde aos lotes e à época de um determinado Snapshot, como ep29-ba30/.

Tab Artefatos de uma execução anterior do MLflow
  • Para fornecer o ponto de verificação mais recente de uma execução anterior, defina custom_weights_path como o ponto de verificação do Composer. Por exemplo, custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink.

  • Para fornecer um ponto de verificação anterior, defina custom_weights_path como um caminho para uma pasta contendo .distcp arquivos correspondentes ao ponto de verificação desejado, como custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#.

Em seguida, atualize o parâmetro model para corresponder ao modelo básico do ponto de verificação que você passou para custom_weights_path.

No exemplo a seguir, ift-meta-llama-3-1-70b-instruct-ohugkq é uma execução anterior que faz o ajuste fino de meta-llama/Meta-Llama-3.1-70B. Para ajustar o ponto de verificação mais recente de ift-meta-llama-3-1-70b-instruct-ohugkq, defina as variáveis model e custom_weights_path da seguinte forma:

from databricks.model_training import foundation_model as fm

run = fm.create(
model = 'meta-llama/Meta-Llama-3.1-70B'
custom_weights_path = 'dbfs:/databricks/mlflow-tracking/2948323364469837/d4cd1fcac71b4fb4ae42878cb81d8def/artifacts/ift-meta-llama-3-1-70b-instruct-ohugkq/checkpoints/latest-sharded-rank0.symlink'
... ## other parameters for your fine-tuning run

)

Consulte Configurar uma execução de treinamento para configurar outros parâmetros em sua execução de ajuste fino.

Obtenha o ID do cluster

Para recuperar o ID do cluster:

  1. Na barra de navegação esquerda do workspace do Databricks, clique em Computação.

  2. Na tabela, clique no nome do cluster.

  3. Clique em Botão Mais no canto superior direito e selecione Ver JSON no menu suspenso.

  4. O arquivo JSON do cluster é exibido. Copie a ID do cluster, que é a primeira linha no arquivo.

    id do cluster

Ver o status de uma execução

O senhor pode acompanhar o progresso de uma execução usando a página Experiment na interface do usuário do Databricks ou usando o comando da API get_events(). Para obter detalhes, consulte Visualizar, gerenciar e analisar a execução do ajuste fino do Foundation Model.

Exemplo de saída de get_events():

Use a API para obter o status da execução

Detalhes da execução de exemplo na página Experimento:

Veja o status da execução na interface do usuários de experimentos

Próximas etapas

Após a conclusão da execução do treinamento, o senhor pode revisar as métricas em MLflow e implantar seu modelo para inferência. Veja os passos 5 a 7 do tutorial: Criar e implantar um Foundation Model Execução de ajuste fino.

Consulte o Notebook Instruction fine-tuning: Named Entity Recognition para ver um exemplo de ajuste fino de instruções que descreve a preparação de dados, a configuração e a implementação do treinamento de ajuste fino.

Notebook exemplo

O site Notebook a seguir mostra um exemplo de como gerar o uso sintético de dados do modelo Meta Llama 3.1 405B Instruct e usar esses dados para ajustar um modelo:

Gerar uso sintético de dados Llama 3.1 405B Instruct Notebook

Abra o bloco de anotações em outra guia