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 fonte do código de um Job de treinamento na configuração YAML da carga de trabalho que você passa para air run --file. Esta página documenta cada campo.
A verdade fundamental para a configuração YAML é a ajuda da CLI. Execução air -h config para a view de nível superior e air -h config.<section> (por exemplo, air -h config.environment) para 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:
air run --file train.yaml -p profile
Conceitos principais
Campos essenciais
A maioria das configurações de treinamento incluem cinco componentes:
experiment_name(Obrigatório): Cria ou anexa a um experimento do MLflow.environment(Opcional): Dependências do Python e versão do ambiente base.compute(Obrigatório): recursos de GPU (tipo e contagem).command(Obrigatório): O comando ou comandos bash usados 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
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 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 train.py
Os segredos usam o formato scope/key e devem ser configurados no Databricks Secrets. Consulte Gerenciamento de segredos para configuração.
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: []
Se você especificar environment.version, também deverá fornecer environment.dependencies como uma lista em linha. Use uma lista vazia se você não precisar instalar pacotes adicionais.
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 environment.dependencies, é possível especificar uma imagem de contêiner Docker personalizada usando environment.docker_image.url. environment.docker_image.url exclui mutuamente environment.dependencies e environment.version — não é possível usar nenhum deles na mesma carga de trabalho.
experiment_name: my-dcs-training
environment:
docker_image:
url: myorg/myrepo:mytag
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: python /app/train.py
Antes de usar uma imagem personalizada, faça o registro com air register image. Para obter detalhes completos, incluindo requisitos de imagem, imagens base do Databricks e padrões de Dockerfile, consulte Docker Image personalizadas.
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 o Snapshot. Por default,airempacota a árvore de trabalho como está (incluindo quaisquer alterações sem commit) como um tarball simples.- Para tirar um Snapshot de uma versão git fixada em vez disso, adicione um bloco
git:com umbranchoucommit. Isso exige queroot_pathseja um repositório Git e permite a criação de snapshots com reconhecimento de versão (cache,git archive). - 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
Para repositórios Git, adicione um bloco git: para pin a versão do código por branch ou por SHA de commit. branch e commit são mutuamente exclusivos: especifique exatamente um dentro do bloco.
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: 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: train.sh
Campos-chave:
root_path(Obrigatório): Caminho local para a raiz do seu repositório Git.git.branch(Opcional): Nome da branch. Usa HEAD local; sem busca remota. Mutuamente exclusivo comgit.commit.git.commit(Opcional): SHA do commit específico. Mutuamente exclusivo comgit.branch.git.remote(Opcional): use o HEAD remoto do branch em vez do local. Defina comotruepara detectar automaticamente o remoto ou como um nome remoto (por exemplo,upstream) para buscar de um remoto específico. Válido somente comgit.branch.
Se você omitir o bloco git:, air empacota a árvore de trabalho como um tarball simples, incluindo quaisquer alterações não confirmadas. Nenhum campo adicional é necessário.
Diretórios que não são Git
Você pode tirar Snapshot de diretórios que não são repositórios Git. Omita o bloco git:, que exige que root_path seja um repositório Git. Sem ele, não há cache de versão; um novo tarball é feito upload para cada execução.
code_source:
type: snapshot
snapshot:
root_path: /home/username/my_project
command: $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:
- O campo é opcional. Se omitido, o repositório inteiro é incluído por default.
- Os caminhos devem ser relativos à raiz do repositório (sem
/inicial). ..não é permitido; não é possível fazer referência a diretórios pai.
Recursos avançados
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 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 train.py
max_retries: 2
timeout_minutes: 90
Se a carga de trabalho falhar, ela será reexecutada duas vezes. Cada tentativa tem 90 minutos para ser concluída, então o orçamento total de tempo real é de 90 x 3 = 270 minutos.
Atribuição de custos
Vincule uma carga de trabalho a uma política de orçamento existente via usage_policy_name. O nome é resolvido para o ID da política quando a carga de trabalho é iniciada. Para a configuração, consulte Uso de atributos com políticas de uso serverless.
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
Referência de campo principal
campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
| string | Nome da experiência do MLflow. |
|
| string | Local raiz para artefatos do MLflow registrados pela execução. Opcional. |
|
| Lista | Lista em linha de especificações de dependência do pip |
|
| string | Versão do ambiente de GPU serverless. Opcional. Utiliza o ambiente 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 | Comandos Bash para iniciar o treinamento. |
|
Configurações de GPU suportadas
| 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. |
Para recursos de acelerador e 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
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.
Configuração de Docker Image personalizada
environment:
docker_image:
url: myorg/myrepo:mytag
Mutuamente exclusivo com environment.dependencies e environment.version. Faça o registro da imagem com air register image antes de usar. Veja Use Docker Image personalizadas.
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 # Branch name; uses local HEAD unless 'remote' is set
# commit: abc1234567 # Mutually exclusive with 'branch'
remote: false # Optional — true to auto-detect remote HEAD, or a remote name string
include_paths: # Optional — filter included paths
- src/
- configs/
Restrições de campo:
git.branchegit.commitsão mutuamente exclusivos: especifique exatamente um dentro do blocogit:.git.remoteExigegit.branch(não tem efeito comgit.commit).- Se você omitir o bloco
git:, a árvore de trabalho é empacotada como um tarball simples, incluindo quaisquer alterações não confirmadas.
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
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 air 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
Todos os caminhos no YAML da carga de trabalho são relativos ao YAML da carga de trabalho, a menos que sejam caminhos absolutos.
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