Criar uma execução de treinamento usando a API de 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 como criar e configurar uma execução de treinamento usando a API Foundation Model Fine-tuning (agora parte do Mosaic AI Model Training) e descreve todos os parâmetros usados na chamada de 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.
Requerimentos
Consulte Requisitos.
Criar uma execução de treinamento
Para criar execuções de treinamento programaticamente, use a create()
função. Esta função treina um modelo no conjunto de dados fornecido e converte o ponto de verificação final do Composer em um ponto de verificação formatado no Hugging Face para inferência.
As entradas necessárias são o modelo que você deseja treinar, o local do seu conjunto de dados de treinamento e onde registrar seu modelo. Há também parâmetros opcionais que permitem realizar a avaliação e alterar 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 obter detalhes sobre argumentos para a create()
função.
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 para a foundation_model.create()
função.
Parâmetro | Necessário | Type | Description |
---|---|---|---|
model |
x | STR | O nome do modelo a ser usado. Consulte Modelos suportados. |
train_data_path |
x | STR | A localização dos seus dados de formação. Pode ser um local no Catálogo Unity (<catalog>.<schema>.<table> ou dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl ) ou um conjunto de dados HuggingFace.Para INSTRUCTION_FINETUNE , os dados devem ser formatados com cada linha contendo um prompt e response campo.Para CONTINUED_PRETRAIN , esta é uma pasta de .txt arquivos. Consulte Preparar dados para ajuste fino do modelo básico para formatos de dados aceitos e Tamanho de dados recomendado para treinamento de modelo para recomendações de tamanho de dados. |
register_to |
x | STR | O catálogo do Unity Catalog e o esquema (<catalog>.<schema> ou <catalog>.<schema>.<custom-name> ) onde o modelo é registrado após o treinamento para facilitar a implantação. Se custom-name não for fornecido, o padrão será o nome da execução. |
data_prep_cluster_id |
STR | A ID do cluster a ser usada para o 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 localizar a ID do cluster, consulte Obter ID do cluster. | |
experiment_path |
STR | O caminho para o experimento MLflow onde a saída da execução de treinamento (métricas e pontos de verificação) é salva. O padrão é o nome de execução no espaço de trabalho pessoal do usuário (ou seja, /Users/<username>/<run_name> ). |
|
task_type |
STR | O tipo de tarefa a ser executada. Pode ser CHAT_COMPLETION (padrão), 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 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 gerar prompts). Os resultados são registrados no experimento toda vez 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 | O local remoto de um ponto de verificação de modelo personalizado para treinamento. O padrão é None , o que significa que a execução começa a partir dos pesos pré-treinados originais 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 ser um ponto de verificação do Composer e devem corresponder à arquitetura do model especificado. Consulte Construir com pesos de modelo personalizados |
|
training_duration |
STR | A duração total da sua corrida. O padrão é uma época ou 1ep . Pode ser especificado em épocas (10ep ) ou tokens (1000000tok ). |
|
learning_rate |
STR | A taxa de aprendizagem para a formação de modelos. Para todos os modelos que não sejam Llama 3.1 405B Instruct, a taxa de aprendizagem padrão é 5e-7 . Para Llama 3.1 405B Instruct, a taxa de aprendizagem padrão é 1.0e-5 . O otimizador é DecoupledLionW com betas de 0,99 e 0,95 e sem deterioração de peso. O agendador 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 de uma amostra de dados. Isso é usado para truncar quaisquer dados que sejam muito longos e para empacotar sequências mais curtas juntas para eficiência. O padrão é 8192 tokens ou o comprimento máximo de contexto para o modelo fornecido, o que for menor. Você pode usar esse parâmetro para configurar o comprimento de contexto, mas não há suporte para a configuração além do comprimento máximo de contexto de cada modelo. Consulte Modelos suportados para obter o comprimento máximo de contexto suportado de cada modelo. |
|
validate_inputs |
Boolean | Se deve validar o acesso aos caminhos de entrada antes de enviar o trabalho de treinamento. A predefinição é True . |
Construa com pesos de modelo personalizados
O ajuste fino do modelo básico suporta a adição de pesos personalizados usando o parâmetro custom_weights_path
opcional para treinar e personalizar um modelo.
Para começar, defina custom_weights_path
o caminho do ponto de verificação do Composer de uma execução de treinamento anterior. Os caminhos de ponto de verificação podem ser encontrados na guia Artefatos de uma execução MLflow anterior. O nome da pasta do ponto de verificação corresponde ao lote e à época de um instantâneo específico, como ep29-ba30/
.
- 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 que contém.distcp
arquivos correspondentes ao ponto de verificação desejado, comocustom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#
.
Em seguida, atualize o model
parâmetro para corresponder ao modelo base do ponto de verificação para o qual você passou .custom_weights_path
No exemplo ift-meta-llama-3-1-70b-instruct-ohugkq
a seguir está uma execução anterior que ajusta o meta-llama/Meta-Llama-3.1-70B
. Para ajustar o ponto de verificação mais recente do ift-meta-llama-3-1-70b-instruct-ohugkq
, defina as model
variáveis 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 configurar outros parâmetros em sua execução de ajuste fino.
Obter ID de cluster
Para recuperar a ID do cluster:
Na barra de navegação esquerda do espaço de trabalho Databricks, clique em Computar.
Na tabela, clique no nome do cluster.
Clique no canto superior direito e selecione Exibir JSON no menu suspenso.
O arquivo JSON do cluster é exibido. Copie a ID do cluster, que é a primeira linha do arquivo.
Obter o 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 get_events()
API . Para obter detalhes, consulte Exibir, gerenciar e analisar execuções de ajuste fino do modelo básico.
Exemplo de saída de get_events()
:
Detalhes de execução de exemplo na página Experimento:
Próximos passos
Após a conclusão da execução do treinamento, você poderá revisar as métricas no MLflow e implantar seu modelo para inferência. Consulte as etapas 5 a 7 do Tutorial: Criar e implantar uma execução de ajuste fino do modelo básico.
Consulte o bloco de anotações de demonstração Ajuste fino de instruções: reconhecimento de entidade nomeada para obter um exemplo de ajuste fino de instruções que percorre a preparação de dados, o ajuste fino, o treinamento, a execução, a configuração e a implantação.
Exemplo de bloco de notas
O bloco de anotações 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
Recursos adicionais
- Ajuste fino do modelo de fundação
- Tutorial: Criar e implantar uma execução de ajuste fino do modelo básico
- Criar uma execução de treinamento usando a interface do usuário de ajuste fino do modelo básico
- Exibir, gerenciar e analisar execuções de ajuste fino do Modelo de Base
- Preparar dados para o ajuste fino do modelo básico