Referência de Carga de Trabalho YAML
Visualização
Este recurso está em Pré-visualização Pública.
Defina o nome do experimento, o compute, o comando, o ambiente e a origem do código de um job de treinamento na configuração YAML da carga de trabalho que você passa para databricks air run -f. Esta página aborda a configuração de cargas de trabalho A10 e H100 sob demanda.
A CLI gera ajuda de configuração a partir do mesmo esquema que usa para validar o YAML da carga de trabalho. Execute databricks air run -h config para ver a lista completa de campos da sua versão instalada. Use databricks air run -h config.<section> (por exemplo, databricks air run -h config.environment) para obter detalhes por seção.
Configuração mínima
experiment_name: my-training
environment:
dependencies:
- mlflow
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: echo "Hello World"
Enviar com:
databricks air run -f train.yaml -p profile
Conceitos principais
Os campos obrigatórios identificam o experimento, os recursos de compute e o comando. Os campos opcionais configuram dependências, código e comportamento de execução.
Campos essenciais
A maioria das configurações de treinamento incluem cinco componentes:
experiment_name(Obrigatório): Cria ou adiciona um experimento do MLflow. Use de 1 a 100 letras ASCII, dígitos, hífens ou underscores.environment(Optional): Python dependencies or a base environment version.compute(Obrigatório): recursos de GPU (tipo e contagem).command(Obrigatório): um comando ou script de shell não vazio com no máximo 1.000 linhas usado para iniciar o treinamento.code_source(Opcional): caminho para seu código de treinamento, disponibilizado remotamente.
Para valores compatíveis e restrições de campo, consulte Reference.
Seu primeiro Job de treinamento
experiment_name: simple-training
environment:
dependencies:
- torch
- transformers
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/train.py
Nesta configuração:
experiment_namecria um experimento do MLflow nomeadosimple-training(ou anexa uma nova execução se ele já existir).environmentusa o ambiente default e instalatorchetransformers.computealoca um nó H100 (8 GPUs H100).code_sourceFaz upload da pastarepopara o nó, disponível em$CODE_SOURCE_PATH.commandexecutatrain.pyviatorchrunnas 8 GPUs H100. O arquivo está localizado localmente em/home/username/repo/train.py.
Casos de uso comuns
Use variáveis de ambiente e segredos para configurar seu código de treinamento sem incorporar valores no script.
Adicionar variáveis de ambiente
experiment_name: training-with-env
environment:
dependencies:
- torch
- transformers
env_variables:
BATCH_SIZE: '32'
LEARNING_RATE: '0.001'
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/train.py
Usar segredos (chaves de API, tokens)
experiment_name: training-with-secrets
environment:
dependencies:
- torch
- transformers
secrets:
HF_TOKEN: 'my_scope/hf_token'
WANDB_API_KEY: 'my_scope/wandb'
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/train.py
Os segredos usam o formato scope/key e devem ser configurados nos Segredos do Databricks. Consulte Gerenciamento de segredos para ver a configuração. O nome de uma variável não pode aparecer em env_variables e secrets.
Ao compartilhamento um padrão YAML, outros usuários devem criar seus próprios segredos ou ter acesso ao segredo referenciado.
Ambiente
Use o bloco environment para selecionar um ambiente Serverless GPU e instalar dependências do Python. Por exemplo, a configuração a seguir seleciona a versão 4 do ambiente Standard e instala o PyTorch e o Transformers:
environment:
version: '4'
dependencies:
- torch
- transformers
Versão do ambiente
environment.version é opcional e seleciona a versão do ambiente gerenciado para a carga de trabalho.
Alguns exemplos incluem:
"4"ou"5"para usar a versão correspondente do ambiente Standard."databricks_ai_v5"para usar a versão 5 do ambiente Databricks AI, que inclui pacotes específicos de ML pré-instalados. (Lista completa de pacotes)
O exemplo a seguir seleciona a versão 5 do ambiente Databricks AI:
environment:
version: 'databricks_ai_v5'
dependencies: []
environment.dependencies é opcional quando você especifica environment.version. Omita-o ou use uma lista vazia se não precisar de pacotes adicionais. Se você fornecer dependências, use uma lista de strings, não um caminho escalar para um arquivo de requisitos.
Para obter informações sobre os ambientes disponíveis para o AI Runtime, consulte Configure seu ambiente.
Dependências do Python
Liste as dependências Python da sua carga de trabalho como uma lista em linha em environment.dependencies.
Formato de dependência
A lista de dependências segue a Especificação do Ambiente Base do Databricks. Cada entrada é uma especificação de pacote no estilo pip (por exemplo, my-library==6.1). A lista também aceita as seguintes entradas:
- Arquivos de requisitos : uma referência a um
requirements.txtexistente usando-r, por exemplo-r '/Workspace/Shared/requirements.txt'. Variáveis de ambiente como$HOMEsão expandidas. - Wheels : um caminho absoluto para um arquivo
.whl, por exemplo/Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl. - URLs de Índice: uma URL de índice, por
--index-url https://pypi.org/simpleexemplo.
environment:
version: '4'
dependencies:
- --index-url https://pypi.org/simple
- -r '/Workspace/Shared/requirements.txt'
- my-library==6.1
- /Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl
Sinalizadores de instalação compatíveis
Dependências são instaladas com uv. As seguintes opções no estilo pip são suportadas como entradas de lista:
- Aplicado a toda a instalação :
--index-url,--extra-index-urle--find-links(-f) definem ou estendem os índices do pacote. - Aplicado à dependência que os segue :
--no-deps,--no-build-isolation,--no-cache-dire--force-reinstall. A flag deve ser posicionada em sua própria linha (ou antes da especificação), seguida pela dependência à qual ela se aplica.
Por exemplo, para instalar flash-attn em relação ao torch já instalado (sem isolamento de compilação) e sem resolver suas próprias dependências:
environment:
version: '4'
dependencies:
- torch
- --no-build-isolation
- --no-deps
- flash-attn
--trusted-host Não suportado. Como uv configura a confiança por URL de índice, utilize --index-url ou --extra-index-url em vez disso.
Imagens Docker personalizadas
Como alternativa a um ambiente gerenciado, especifique uma imagem de container Docker personalizada do Artifact Registry usando environment.unity_catalog_image. O valor usa o formato <catalog>.<schema>.<image>:<tag> sem o hostname do registro. environment.unity_catalog_image é mútua e exclusivamente exclusivo com environment.dependencies e environment.version, incluindo uma lista de dependências vazia.
experiment_name: my-dcs-training
environment:
unity_catalog_image: main.ml.training:v1
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: python /app/train.py
Antes de usar uma imagem personalizada, envie-a para o Artifact Registry no mesmo workspace que você usa para enviar a workload. Consulte Get started with Artifact Registry e Use custom Docker images with AI Runtime.
Trabalhar com fontes de código
O bloco code_source faz upload do código local para que o Job de treinamento possa executá-lo.
root_pathé o diretório local para tirar o snapshot. Sem um blocogit:, a CLI do Databricks empacota a árvore de trabalho, incluindo alterações não confirmadas, respeitando as regras do Git ignore.- Para fazer o snapshot de uma versão do Git confirmada, adicione um bloco
git:com umbranchoucommit. O diretório deve estar em um repository Git. Seroot_pathapontar para um subdiretório, apenas essa subárvore será empacotada. - Para repositórios grandes,
include_pathspermite que você faça um Snapshot de um subconjunto.
Exemplo mínimo
experiment_name: simple-training
environment:
dependencies:
- torch
- transformers
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
command: python $CODE_SOURCE_PATH/train.py
Na máquina remota, o código é colocado em /databricks/code_source/<directory_name>, onde <directory_name> é o componente final do caminho de root_path. $CODE_SOURCE_PATH é definido para esse caminho absoluto, então use-o em seu comando em vez de codificar diretamente o local.
Git repositórios: pin por branch ou commit
For Git repositories, add a git: block to pin the code version by branch or commit SHA. branch and commit are mutually exclusive: specify exactly one within the block. The revision must exist locally. The CLI does not fetch from a remote repository.
Pin a uma branch (usa o HEAD local dessa branch):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main # Uses local HEAD of main (no remote fetch)
command: bash $CODE_SOURCE_PATH/train.sh
Pin a um SHA de commit (reprodutibilidade exata):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
commit: abc1234567 # Pins specific commit
command: bash $CODE_SOURCE_PATH/train.sh
Campos-chave:
root_path(Required): Local path to the repository or a subdirectory to snapshot.git.branch(Opcional): usa o HEAD local da branch. Alterações não confirmadas nos caminhos selecionados causam um erro porque não fazem parte desse commit.git.commit(Opcional): Usa um commit específico disponível localmente. Alterações não confirmadas não estão incluídas.git.remote: omita este campo ou defina-o comofalse. A busca remota comtrueou um nome remoto não é compatível. Busque a revisão localmente antes de enviar a carga de trabalho.
Se você omitir o bloco git:, a CLI do Databricks empacotará a árvore de trabalho, incluindo alterações não commitadas e excluindo arquivos ignorados. Nenhum campo extra é obrigatório.
Diretórios que não são Git
Você pode criar snapshots de diretórios que não são repository Git. Omita o bloco git:. A CLI empacota o diretório respeitando as regras de exclusão do Git. Os Snapshots da árvore de trabalho e pins pelo Git podem reutilizar um arquivo compactado de upload quando a chave do cache de Snapshots não é alterada.
code_source:
type: snapshot
snapshot:
root_path: /home/username/my_project
command: python $CODE_SOURCE_PATH/train.py
Filtragem de pasta com include_paths
Para monorepos grandes, crie Snapshot apenas de pastas específicas para reduzir o tempo de upload e download e o tamanho do Snapshot:
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
include_paths:
- research/models
- research/common
- research/configs
command: python $CODE_SOURCE_PATH/research/models/launch_training.py
Pontos chave:
- The field is optional. If omitted, the CLI selects files under
root_pathusing the snapshot mode described above. Do not set an empty list. - Os caminhos devem ser relativos a
root_path, sem/à frente. ..não é permitido. Não é possível referenciar diretórios pai.
Fazer upload de snapshots para um volume
Por default, a CLI faz o upload de Snapshot para o seu Workspace. Para usar um volume do Unity Catalog em vez disso, defina code_source.snapshot.remote_volume como um caminho que comece com /Volumes/:
code_source:
type: snapshot
snapshot:
root_path: .
remote_volume: /Volumes/main/ml/training-code
Você deve ter acesso ao volume e permissão para gravar arquivos nele.
Recursos avançados
Configure os parâmetros de treinamento, o comportamento de repetição e a atribuição de custos com os seguintes campos.
Hiperparâmetros personalizados
Passe a configuração estruturada para o script de treinamento por meio de HYPERPARAMETERS_PATH:
experiment_name: parameterized-training
environment:
dependencies:
- torch
- transformers
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/train.py
parameters:
model:
name: 'gpt2'
hidden_size: 768
training:
batch_size: 32
learning_rate: 0.0001
Leiam no seu script:
import os
import yaml
with open(os.environ['HYPERPARAMETERS_PATH']) as f:
params = yaml.safe_load(f)
learning_rate = params['training']['learning_rate']
model_name = params['model']['name']
Confiabilidade do Job
experiment_name: reliable-training
environment:
dependencies:
- torch
- transformers
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/train.py
max_retries: 2
timeout_minutes: 90
max_retries: 2 permite até duas novas tentativas após a tentativa inicial. O default é 3. Defina max_retries: 0 para desativar as novas tentativas.
timeout_minutes: 90 define um tempo limite de 90 minutos na execução do job enviada. Não é um orçamento separado de 90 minutos para cada nova tentativa. O valor deve ser pelo menos 1. Se omitido, o default do backend se aplica.
Atribuição de custos
Anexe uma workload a uma política de uso serverless existente com usage_policy_name. O nome é resolvido para o ID da política quando a workload é lançada. Como alternativa, defina usage_policy_id para o UUID de uma política existente. Esses campos são mutuamente exclusivos. Os nomes de política devem conter de 1 a 127 caracteres. Para a configuração, consulte Attribute usage with serverless usage policies.
experiment_name: my-training
environment:
dependencies:
- mlflow
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: echo "Hello World"
usage_policy_name: my team policy
Referência
Use estas tabelas para os campos de workload sob demanda e as configurações de GPU descritas nesta página. Para ver o esquema completo aceito pela sua CLI instalada, execute databricks air run -h config.
Referência de campo principal
campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
| string | Nome obrigatório do experimento do MLflow. De 1 a 100 letras ASCII, dígitos, hifens ou underscores. |
|
| string | Local raiz para artefatos do MLflow registrados pela execução. Opcional. |
|
| Lista | Lista opcional de especificações de dependência. |
|
| string ou integer | Versão de ambiente gerenciada. Opcional. Usa o default se omitido. Consulte Versão do ambiente. |
|
| int | Número de GPUs. Deve ser um múltiplo das GPUs por nó para o |
|
| string | Configuração do acelerador, incluindo o tipo de GPU e o formato do nó. Consulte Configurações de GPU suportadas. |
|
| dicionário | Configuração do código-fonte. | Consulte Trabalhar com fontes de código. |
| string | Required, nonempty shell comando or script of at most 1,000 lines. |
|
Configurações de GPU suportadas
A CLI faz a correspondência de nomes de aceleradores diferenciando maiúsculas de minúsculas. A disponibilidade e as cotas dependem do seu workspace.
| GPUs por nó |
| Notas |
|---|---|---|---|
| 1 | Qualquer número inteiro positivo | A10 único, bom para desenvolvimento e cargas de trabalho pequenas. |
| 1 |
| Único H100. |
| 8 | Um múltiplo positivo de 8 | Nó H100 completo, típico para treinamento distribuído. |
| 8 | Um múltiplo positivo de 8 | Nó B300 completo, 288 GB de HBM por GPU. Pré-lançamento público. Somente AWS. |
Para ver as capacidades do acelerador e os casos de uso recomendados, consulte Opções de hardware.
compute.num_accelerators é o número total de GPUs para a carga de trabalho. Deve ser um múltiplo das GPUs por nó para o compute.accelerator_type selecionado.
Campos opcionais
Estes campos configuram a execução além do experimento, do compute e do comando obrigatórios:
campo | Tipo | Restrições e comportamento |
|---|---|---|
| map of strings | Variáveis de ambiente simples. Um nome também não pode aparecer em |
| map of strings | Nomes de variáveis de ambiente mapeados para referências de segredo de |
| map | Parâmetros de treinamento aninhados e de formato livre expostos por meio de |
| inteiro | Contagem de tentativas não negativa. default é |
| inteiro | Tempo limite de execução do job em minutos. Deve ser pelo menos |
| string | Token não vazio de no máximo 64 caracteres para deduplicar submissões. A flag |
| string | Nome de execução de 1 a 100 letras ASCII, dígitos, hifens ou underscores. O default é |
| string | Diretório do workspace para o experimento MLflow. Deve começar com |
| string | Raiz do artefato como um URI de |
| lista de objetos | Cada concessão requer um |
| string | Nome de política de uso existente de 1 a 127 caracteres. Mutuamente exclusivo com |
| string | UUID de política de uso existente. Mutuamente exclusivo com |
Configuração do ambiente
environment:
version: '4'
dependencies:
- torch
- transformers
env_variables:
BATCH_SIZE: '32'
secrets:
HF_TOKEN: 'my_scope/hf_token'
Para versões de ambiente, formato de dependência e sinalizadores de instalação suportados, consulte Ambiente.
Imagem personalizada do Docker
environment:
unity_catalog_image: main.ml.training:v1
Este campo é mutuamente exclusivo com environment.dependencies e environment.version. Envie a imagem para o Artifact Registry antes de usar. Consulte Use custom Docker images with AI Runtime.
Permissões de execução
Conceda acesso ao job enviado usando um principal por entrada. Por exemplo:
permissions:
- group_name: training-team
level: CAN_VIEW
- user_name: trainer@example.com
level: CAN_MANAGE
Diretório de experimentos MLflow
Store the experiment in a shared workspace directory:
mlflow_experiment_directory: /Workspace/Shared/training-experiments
Configuração do código-fonte
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo # REQUIRED — local path to repo or directory
git: # Optional (git repos only) — pin to a branch or commit
branch: main # Uses the branch's local HEAD
# commit: abc1234567 # Mutually exclusive with 'branch'
remote: false # Optional; remote fetching is not supported
include_paths: # Optional — filter included paths
- src/
- configs/
Restrições de campo:
git.branchegit.commitsão mutuamente exclusivos: especifique exatamente um dentro do blocogit:.- Omitir
git.remoteou defini-lo comofalse. A CLI não busca revisões de um local remoto. - Se você omitir o bloco
git:, a árvore de trabalho será empacotada respeitando as regras de ignorar do Git, incluindo alterações não confirmadas nos arquivos selecionados.
Parâmetros personalizados
Passado para a carga de trabalho via HYPERPARAMETERS_PATH:
parameters:
model:
name: 'gpt2'
hidden_size: 768
training:
batch_size: 32
Nome da execução do MLflow
Use de 1 a 100 letras ASCII, dígitos, hífens ou underscores. Se omitido, o nome da execução assume o valor default de experiment_name.
mlflow_run_name: 'experiment-001-baseline'
Localização do artefato do MLflow
Defina mlflow_artifact_location para armazenar artefatos de uma execução do MLflow em um local raiz personalizado. Se você omitir este campo, uma nova execução usará o local default do DBFS, como dbfs:/databricks/mlflow-tracking/<experiment-id>/....
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training
Se o acesso ao DBFS estiver restrito ou se você preferir o Unity Catalog, especifique um caminho /Volumes/<catalog>/<schema>/<volume>/... ou o URI dbfs:/Volumes/<catalog>/<schema>/<volume>/... equivalente. A CLI do Databricks converte um caminho /Volumes para o URI dbfs: que o MLflow usa.
Use um local exclusivo para cada experimento. A localização do artefato de um experimento MLflow é fixada quando o experimento é criado. Se experiment_name identificar um experimento existente, mlflow_artifact_location deverá corresponder à sua localização de artefato ou ser omitido. Para usar um local diferente, especifique um novo nome de experimento.
Resolução de Caminho
Os valores relativos de code_source.snapshot.root_path são resolvidos a partir do diretório do arquivo YAML da carga de trabalho. As entradas de include_paths são resolvidas a partir de root_path. Os caminhos dentro de command referem-se a arquivos no runtime remoto, não em sua máquina local. Use $CODE_SOURCE_PATH para fazer referência ao código enviado por upload.
Estrutura de pastas:
/home/username/my-project/
├── train.yaml
└── scripts/
└── train.py
Configuração YAML:
experiment_name: my-training
environment:
dependencies:
- torch
- transformers
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: . # Relative to train.yaml
git:
branch: main
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/scripts/train.py