Criar uma execução de treinamento usando a API de ajuste fino do modelo de base

Importante

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

Este artigo descreve como criar e configurar uma execução de treinamento usando a API de ajuste fino do modelo de base (agora parte do treinamento do modelo de IA do Mosaic) e descreve todos os parâmetros usados na chamada à API. Você 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 interface do usuário de ajuste fino do modelo básico.

Requisitos

Confira os Requisitos

Criar uma sessão de treinamento

Para criar execuções de treinamento programaticamente, use a função create(). Essa função treina um modelo no conjunto de dados fornecido e salva o modelo treinado para inferência.

As entradas necessárias são o modelo que você deseja treinar, o local do conjunto de dados de treinamento e onde registrar seu modelo. Há também parâmetros opcionais que permitem que você execute a avaliação e altere os hiperparâmetros de 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 Catálogo do Unity como uma versão de modelo para inferência.

O modelo da execução concluída, não a versão do modelo clonado no Catálogo do Unity, é salvo no MLflow. Os pontos de verificação podem ser usados para tarefas de ajuste fino contínuas.

Consulte Configurar uma execução de treinamento para obter detalhes sobre argumentos para a função create().

from databricks.model_training import foundation_model as fm

run = fm.create(
  model='meta-llama/Llama-3.2-3B-Instruct',
  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 foundation_model.create() função.

Parâmetro Obrigatório Tipo Descrição
model x Str O nome do modelo a ser usado. Confira Modelos com suporte.
train_data_path x Str O local dos seus dados de treinamento. Esse pode ser um local no Catálogo do Unity (<catalog>.<schema>.<table> ou dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl) ou em um conjunto de dados do HuggingFace.
Para INSTRUCTION_FINETUNE, os dados devem ser formatados de modo que cada linha contenha um campo prompt e response.
Para CONTINUED_PRETRAIN, esta é uma pasta de arquivos .txt. Consulte Preparar dados para ajuste fino de modelos de base para os formatos de dados aceitos e Tamanho de dados recomendado para treinamento de modelos para 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 fácil implantação. Se custom-name não for fornecido, o padrão será o nome da execução.
data_prep_cluster_id Str O ID do cluster a ser usado para processamento de dados do Spark. Isso é necessário para tarefas de treinamento de instrução em que os dados de treinamento estão em uma tabela Delta. Para obter informações sobre como localizar a ID do cluster, confira Obter a ID do cluster.
experiment_path Str O caminho para o experimento do MLflow onde se salva a saída da execução do treinamento, incluindo métricas e checkpoints. O padrão é o nome de execução dentro do espaço de trabalho pessoal do usuário (ex: /Users/<username>/<run_name>).
task_type Str O tipo de tarefa a ser executado. Pode ser CHAT_COMPLETION (padrão) CONTINUED_PRETRAIN ou INSTRUCTION_FINETUNE.
eval_data_path Str O local remoto dos dados de avaliação (se houver). Deve seguir o mesmo formato que train_data_path.
eval_prompts Lista[str] Uma lista de cadeias de caracteres de prompt para gerar respostas durante a avaliação. O padrão é None (não gera prompts). Os resultados são registrados no experimento sempre que o modelo está em ponto de verificação. As gerações ocorrem em cada ponto de verificação de 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 O local remoto de um ponto de verificação de modelo personalizado para treinamento. O padrão é None, isto significa que a execução se inicia a partir dos pesos originais pré-treinados do modelo escolhido. Se forem fornecidos pesos personalizados, esses pesos serão usados em vez dos pesos pré-treinados originais do modelo. Esses pesos devem ter sido produzidos pela API de ajuste fino e correspondem à arquitetura do model especificado. Consulte Usar pesos de modelo personalizados.
OBSERVAÇÃO: Se você treinou um modelo antes de 26/03/2025, não poderá mais treinar continuamente a partir desses pontos de verificação de modelo. Quaisquer execuções de treinamento concluídas anteriormente ainda podem ser realizadas sem problemas com a taxa de transferência provisionada.
training_duration Str A duração total da sua corrida. O padrão é uma época (epoch) ou 1ep. Pode ser especificada em épocas (10ep) ou tokens (1000000tok).
learning_rate Str A taxa de aprendizagem para o treinamento de modelo. Todos os modelos são treinados usando o otimizador AdamW, com aquecimento da taxa de aprendizado. A taxa de aprendizado padrão pode variar por modelo. Sugerimos executar uma varredura de hiperparâmetro tentando diferentes taxas de aprendizagem e durações de treinamento para obter os modelos de mais alta qualidade.
context_length Str O comprimento máximo da sequência de uma amostra de dados. Isso é usado para truncar todos os dados que são muito longos e para empacotar sequências mais curtas em conjunto para eficiência.
O padrão é 8.192 tokens ou o tamanho máximo do contexto para o modelo fornecido, o que for menor. Você pode usar esse parâmetro para configurar o comprimento do contexto, mas não há suporte para configurar além do tamanho máximo de contexto de cada modelo. Consulte Modelos com suporte para obter o tamanho máximo de contexto com suporte de cada modelo.
validate_inputs booleano Se deseja validar o acesso aos caminhos de entrada antes de enviar o trabalho de treinamento. O padrão é True.

Basear-se em pesos de modelo personalizados

OBSERVAÇÃO: Se você treinou um modelo antes de 26/03/2025, não poderá mais treinar continuamente a partir desses pontos de verificação de modelo. Quaisquer execuções de treinamento concluídas anteriormente ainda podem ser realizadas sem problemas com a taxa de transferência provisionada.

O ajuste fino do Modelo de Fundação permite adicionar pesos personalizados usando o parâmetro opcional custom_weights_path para treinar e customizar um modelo.

Para começar, defina custom_weights_path como o caminho do ponto de verificação de uma execução de treinamento de API de ajuste fino anterior. Os caminhos de ponto de verificação podem ser encontrados na guia Artefatos de uma execução anterior do MLflow. O nome da pasta do ponto de verificação corresponde ao lote e à época de um instantâneo específico, como ep29-ba30/.

Guia Artefatos para 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 produzido pela API de ajuste fino. 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 que contenha .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 base do ponto de verificação que você passou para custom_weights_path.

No seguinte exemplo, ift-meta-llama-3-1-70b-instruct-ohugkq é uma execução anterior que ajusta 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 maneira:

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 definir os demais parâmetros na sua execução de ajuste fino.

Obter a ID do cluster

Para recuperar a ID do cluster:

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

  2. Na tabela, clique no nome do seu cluster.

  3. Clique em Mais no canto superior direito e selecione Exibir JSON no menu suspenso.

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

    ID do cluster

Obter status de uma execução

Você pode acompanhar o progresso de uma execução usando a página Experimento na interface do usuário do Databricks ou usando o comando de API get_events(). Para obter detalhes, consulte Exibir, gerenciar e analisar execuções de ajuste fino do Modelo de Fundação.

Exemplo de saída de get_events():

Usar a API para obter o status de execução

Detalhes da execução de amostra na página do experimento.

Obter status de execução na UI dos experimentos

Próximas etapas

Após a conclusão da execução do treinamento, você pode examinar as métricas no MLflow e implantar o modelo para inferência. Consulte as etapas 5 a 7 do Tutorial: Criar e implantar uma execução de ajuste fino de um modelo base.

Confira o notebook de demonstração Ajuste fino de instruções: Reconhecimento de Entidade Nomeada para obter um exemplo que abrange a preparação de dados, a execução de treinamento, a configuração e a implantação do ajuste fino.

Exemplo de notebook

O notebook a seguir mostra um exemplo de como gerar dados sintéticos usando o modelo Meta Llama 3.1 405B Instruct e usar esses dados para ajustar um modelo:

Gerar dados sintéticos usando o notebook Llama 3.1 405B Instruct

Obter notebook

Recursos adicionais