Referência de YAML de Workload para a CLI legada do Python
Esta documentação foi descontinuada e pode não ser atualizada.
A CLI do air baseada em Python, instalada com o pacote databricks-air, agora está obsoleta e não é mais mantida ativamente.
Use a CLI do Databricks para novas cargas de trabalho. Consulte Usar a CLI do Databricks com o AI Runtime.
Defina o nome do experimento do Job de treinamento, compute, comando, ambiente e código-fonte no arquivo YAML de configuração de 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 in-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.
Minimal configuration
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 principais
A maioria das configurações de treinamento inclui cinco componentes:
experiment_name(Obrigatório): Cria um experimento do MLflow ou adiciona a ele.environment(Opcional): Dependências do Python e versão do ambiente base.compute(Required): recursos de GPU (tipo e contagem).command(Obrigatório): o comando ou os comandos bash usados para iniciar o treinamento.code_source(Opcional): Caminho para o seu código de treinamento, disponibilizado remotamente.
Para ver os valores compatíveis e as restrições de campo, consulte a Referência.
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 chamadosimple-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 o upload da pastarepopara o nó, disponível em$CODE_SOURCE_PATH.commandexecutatrain.pyviatorchrunnas 8 GPUs H100. O arquivo está em/home/username/repo/train.pylocalmente.
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 nos Segredos do Databricks. Consulte Gerenciamento de segredos para obter informações sobre a configuração.
Ao compartilhar um template 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 seguinte configuração 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 de ambiente Standard correspondente."databricks_ai_v5"para usar a versão 5 do ambiente do 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 do Databricks AI:
environment:
version: 'databricks_ai_v5'
dependencies: []
Se você especificar environment.version, também deverá fornecer environment.dependencies como uma lista embutida. Use uma lista vazia se não precisar instalar pacotes adicionais.
Para obter informações sobre ambientes disponíveis para o AI Runtime, consulte Configurar seu ambiente.
Dependências do Python
Liste as dependências Python da sua workload como uma lista embutida sob environment.dependencies.
Formato de dependência
A lista de dependências segue a Especificação de 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$HOME, sã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 : um URL de índice, por exemplo
--index-url https://pypi.org/simple.
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 suportados
As dependências são instaladas com uv. Os seguintes sinalizadores no estilo pip são suportados como entradas de lista:
- Aplicado a toda a instalação :
--index-url,--extra-index-urle--find-links(-f) definem ou estendem os índices de pacotes. - Aplicado à dependência que as sucede :
--no-deps,--no-build-isolation,--no-cache-dire--force-reinstall. Coloque a flag em sua própria linha (ou antes da especificação), seguida da dependência à qual ela se aplica.
Por exemplo, para instalar flash-attn em relação ao torch já instalado (sem isolamento de build) 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 o uv configura a confiança por URL de índice, use --index-url ou --extra-index-url em vez disso.
Docker Images personalizados
Como alternativa a environment.dependencies, você pode especificar uma imagem de container Docker personalizada usando environment.docker_image.url. environment.docker_image.url é mutuamente exclusivo com environment.dependencies e environment.version — você não pode usar nenhum dos dois 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, registre-a com air register image. Para obter todos os detalhes, incluindo requisitos de imagem, imagens base do Databricks e padrões de Dockerfile, consulte Usar imagens personalizadas do Docker com a CLI do Python herdada.
Trabalhar com fontes de código
O bloco code_source faz o 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 tal como está (incluindo quaisquer alterações sem commit) como um tarball simples.- Para fazer o snapshot de uma versão do git pin em vez disso, adicione um bloco
git:com umbranchoucommit. Isso requer queroot_pathseja um repository git e habilita o snapshot com reconhecimento de versão (caching,git archive). - Para repositories grandes, o
include_pathspermite criar 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
On the remote machine, the code is placed at /databricks/code_source/<directory_name>, where <directory_name> is the final path component of root_path. $CODE_SOURCE_PATH is set to that absolute path, so use it in your comando rather than hard-coding the location.
Repositórios do Git: pin por branch ou commit
Para git repository, 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 em 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 em um commit SHA (reprodutibilidade exata):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
commit: abc1234567 # Pins specific commit
command: train.sh
Campos de key:
root_path(Obrigatório): Caminho local para a raiz do seu repository git.git.branch(Opcional): nome da Branch. Usa o HEAD local; sem busca remota. Mutuamente exclusivo comgit.commit.git.commit(Opcional): commit SHA específico. Exclusivo comgit.branch.git.remote(Opcional): use o HEAD remoto do branch em vez do local. Defina comotruepara detectar automaticamente o remote ou como um nome remoto (por exemplo,upstream) para buscar de um remote específico. Válido apenas comgit.branch.
Se você omitir o bloco git:, o air empacotará a árvore de trabalho como um arquivo tar simples, incluindo quaisquer alterações sem commit. Nenhum campo extra é obrigatório.
Diretórios não Git
É possível criar um Snapshot de diretórios que não sejam git repository. Omitir o bloco git:, que exige que root_path seja um repository Git. Sem isso, não há cache de versões; um novo arquivo tarball é enviado (upload) para cada execução.
code_source:
type: snapshot
snapshot:
root_path: /home/username/my_project
command: $CODE_SOURCE_PATH/train.py
Filtragem de pastas com include_paths
Para monorepos grandes, crie um 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, todo o repository é incluído por default.
- Os caminhos devem ser relativos à raiz do repository (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 seu script de treinamento via 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
Leia-os em 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, será feita uma nova tentativa duas vezes. Cada tentativa tem 90 minutos para ser concluída; portanto, o orçamento total de tempo corrido é de 90 x 3 = 270 minutos.
Atribuição de custos
Anexe uma carga de trabalho a uma política orçamentária existente via usage_policy_name. O nome é resolvido para o ID da política quando a carga de trabalho é iniciada. Para obter informações sobre 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 do campo principal
campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
| string | Nome da experiência para o MLflow. |
|
| string | Root location for MLflow artifacts logged by the execução. Opcional. |
|
| Lista | Lista embutida de especificações de dependência do pip. |
|
| string | Versão do ambiente Serverless GPU. Opcional. Usa 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 a forma do nó. Consulte Configurações de GPU suportadas. |
|
| dict | Configuração da fonte de código. | Consulte Trabalhar com fontes de código. |
| string | Comandos bash para iniciar o treinamento. |
|
Configurações de GPU compatíveis
| GPUs por nó |
| Notas |
|---|---|---|---|
| 1 | Qualquer número inteiro positivo | A10 único, ideal para desenvolvimento e pequenas cargas de trabalho. |
| 1 |
| H100 único. |
| 8 | Um múltiplo positivo de 8 | Nó H100 completo, típico para treinamento distribuído. |
Para obter 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 de ambiente
environment:
version: '4'
dependencies:
- torch
- transformers
env_variables:
BATCH_SIZE: '32'
secrets:
HF_TOKEN: 'my_scope/hf_token'
Para ver as versões de ambiente, o formato de dependência e os sinalizadores de instalação compatíveis, consulte Environment.
Configuração de Docker Image personalizada
environment:
docker_image:
url: myorg/myrepo:mytag
Mutualmente exclusivo com environment.dependencies e environment.version. Registre a imagem com air register image antes de usar. Consulte Usar imagens personalizadas do Docker com a CLI do Python antiga.
Configuração da fonte de código
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 será 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 um experimento no MLflow em uma localização raiz personalizada. Se você omitir este campo, um novo experimento usará a localização DBFS default, como dbfs:/databricks/mlflow-tracking/<experiment-id>/....
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training
If DBFS access is restricted or you prefer Unity Catalog, specify either a /Volumes/<catalog>/<schema>/<volume>/... path or the equivalent dbfs:/Volumes/<catalog>/<schema>/<volume>/... URI. The air CLI converts a /Volumes path to the dbfs: URI that MLflow uses.
Use um local exclusivo para cada experimento. A localização do artefato de um experimento do MLflow é fixa quando o experimento é criado. Se experiment_name identificar um experimento existente, mlflow_artifact_location deverá corresponder à localização do artefato dele ou ser omitido. Para usar um local diferente, especifique um novo nome de experimento.
Resolução de caminho
Todos os caminhos no YAML de carga de trabalho são relativos ao YAML de 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