Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Important
Deze functie bevindt zich in openbare preview-versie.
Gebruik DAB's om een AI Runtime-trainingsworkload als code te definiëren. Houd het in versiebeheer, rol het uit naar verschillende omgevingen, plan het en combineer het met andere taken. Deze pagina behandelt het 'bring-your-own-training'-traject, waarbij een ai_runtime_task je eigen opdracht uitvoert op een map met code met behulp van serverloze GPU-rekencapaciteit.
Tip
- Gebruik Declarative Automation Bundles om trainingsworkloads als code te definiëren, ze in te rollen over omgevingen en te plannen.
- Dan voert
ai_runtime_taskje eigen commando uit tegen een directory met code (bring-your-own-training). - Combineer GPU- en CPU-taken in multitaskjobs.
Dit is een andere taak dan een notebook uitvoeren met een serverloze GPU via een bundel. Voor het basisvoorbeeld van een notebook-op-GPU bundel, zie Schedule with the Jobs API en Declarative Automation Bundles.
Requirements
- Een werkruimte met AI Runtime ingeschakeld. Zie Vereisten.
- De Databricks CLI (commandoregelinterface) is geïnstalleerd en geconfigureerd om bundels uit te zetten.
Definieer een AI Runtime-taak in een bundel
Een ai_runtime_task geeft een experiment een naam, verwijst met code_source_path naar je trainingscode en specificeert één deployment: de opdracht die moet worden uitgevoerd en de GPU waarop die wordt uitgevoerd. Voeg dit toe aan een taak in je bundel:
resources:
jobs:
train:
tasks:
- task_key: train
ai_runtime_task:
experiment: my-experiment
code_source_path: ./dist/code.tgz
deployments:
- command_path: ./command.sh
compute:
accelerator_type: GPU_1xA10
accelerator_count: 1
code_source_path wijst naar je verpakte trainingscode, en command_path is het script dat de taak uitvoert. Herpogingen, time-outs en machtigingen worden voor de taak en de job op dezelfde manier ingesteld als voor elke andere Azure Databricks-job, dus je bestaande bundelwerkwijzen blijven van toepassing. Zie Lever je trainingscode voor informatie over hoe je je code verpakt en ernaar verwijst.
ai_runtime_task Velden
| Veld | Type | Description |
|---|---|---|
experiment |
String | Required. De MLflow-experimentnaam voor de run. Zie het bijhouden van experimenten en observabiliteit. |
code_source_path |
String | De trainingscode die moet worden uitgevoerd: het uitvoerbestand van een verpakt tgz-artefact, of een /Workspace- of /Volumes-pad naar al geüploade code. Zie Verzend je trainingscode. |
deployments |
Volgorde | Required. Een enkele deployment die het commando beschrijft en de rekenomgeving waarop het wordt uitgevoerd. Elke vermelding bevat command_path, compute, en een optioneel name. |
deployments[].command_path |
String | Required. Het script waarin de taak op elke node draait. |
deployments[].compute.accelerator_type |
String | Required. Het GPU-type, bijvoorbeeld GPU_1xA10, GPU_1xH100, of GPU_8xH100. |
deployments[].compute.accelerator_count |
Integer | Required. Het totale aantal GPU's over alle nodes—een veelvoud van het aantal per node dat in accelerator_typeis gecodeerd. |
deployments[].name |
String | Een optionele naam voor de deployment, gebruikt in logs en de UI. |
docker_image_url |
String | Een optioneel aangepaste Docker-image om het commando in uit te voeren, in plaats van in de beheerde omgeving. Zie Aangepaste Docker-installatiekopieën gebruiken. |
mlflow_run |
String | Een optionele weergavenaam voor de MLflow-run. |
mlflow_experiment_directory |
String | Een optionele werkruimtemap waarbinnen het experiment wordt aangemaakt. Moet beginnen met /Workspace. Stel dit in wanneer je draait als een serviceprincipal zonder standaard gebruikersdirectory. |
mlflow_artifact_location |
String | Een optionele wortellocatie voor MLflow-artefacten, bijvoorbeeld een /Volumes/<catalog>/<schema>/<volume>/… pad. Moet overeenkomen met de locatie van een bestaand experiment of worden weggelaten. |
Stel herpogingen, timeouts, machtigingen en de omgeving (environment_key) in voor de taak en job—niet binnen ai_runtime_task. Voor de volledige taakreferentie, zie AI Runtime-taak.
Configureer de hardwareversneller
Stel accelerator_type in op de GPU die je workload nodig heeft, en accelerator_count op het totale aantal GPU's. Het aantal is een veelvoud van het aantal GPU's per node: 1 voor GPU_1xA10 en GPU_1xH100, en 8 voor GPU_8xH100. Als het aantal groter is dan de grootte per knooppunt, wordt de taak over meerdere knooppunten uitgevoerd, bijvoorbeeld: GPU_8xH100 met accelerator_count: 16 wordt op twee knooppunten uitgevoerd. Voor advies bij het kiezen van een accelerator, zie Hardware-opties.
Note
Voor multi-node-runs voert AI Runtime je commando uit op elke node en vult de standaard variabelen voor de distributed training environment in de taakomgeving—NUM_NODES, , WORLD_SIZE, LOCAL_WORLD_SIZE, MASTER_ADDR, en MASTER_PORT. Lees ze uit je commando (bijvoorbeeld een torchrun launch); je zet ze niet in de bundel.
Stel de omgeving en afhankelijkheden in
Definieer een environments blok voor de job en verwijs er vanuit de taak naar met environment_key. AI Runtime installeert de vermelde afhankelijkheden voordat je commando wordt uitgevoerd:
resources:
jobs:
train:
tasks:
- task_key: train
environment_key: default
ai_runtime_task:
# experiment, code_source_path, and deployments as above
environments:
- environment_key: default
spec:
environment_version: '6'
dependencies:
- numpy
Voor de beschikbare omgevingen, zie Instellen van je omgeving.
Stuur je trainingscode
code_source_path geeft de taak aan waar je trainingscode staat. Het heeft een van twee vormen:
-
Een verpakt
tgzartefact — declareer een artefact en wijscode_source_pathnaar het uitvoerbestand. Azure Databricks bouwt de tarball en uploadt deze opdatabricks bundle deploy. Zo verzend je code vanuit een lokale projectmap of een toegewijde Git-revisie. - Een werkruimte- of volumepad — code die al is geüpload en ongewijzigd wordt gebruikt.
Verpakt artefact
Declareer een tgz artefact en wijs code_source_path naar het uitvoerbestand. Op databricks bundle deploy, bouwt de CLI de tarball, uploadt hem, en de taak haalt hem uit en voert jouw commando ertegen:
artifacts:
code:
type: tgz
path: .
include: [src]
files:
- source: ./dist/code.tgz
resources:
jobs:
train:
tasks:
- task_key: train
ai_runtime_task:
code_source_path: ./dist/code.tgz
Gebruik include om bestanden uit je werkboom te verpakken, of git om een momentopname te maken van een gecommitteerde branch of commit.
Werkruimte of volumepad
Om code te gebruiken die al is geüpload, stel code_source_path in op een /Workspace/…- of /Volumes/…-pad. Azure Databricks gebruikt het pad as-is en verpakt niets.
De artefactvelden tgz :
| Veld | Description |
|---|---|
type |
tgz maakt een gecomprimeerd tar-archief van bronbestanden, in plaats van een opdracht met build uit te voeren. |
path |
De basismap die moet worden verpakt.
include paden en de itemnamen van het archief zijn relatief daaraan. |
include |
Een lijst met subpaden van path om te verpakken. Laat het verpakken van path volledig weg. Houdt rekening met .gitignore; de bundelbrede sync.include en sync.exclude zijn niet van toepassing. Alternatief voor een build commando. |
git |
Maak een snapshot van een gecommitteerde Git-referentie in plaats van de werkende boom. Set git.branch of git.commit (commit wint als beide zijn gezet). Alternatief voor een build commando. |
files[].source |
Het pad van de gegenereerde tarball. Wijs code_source_path hiernaar. |
Note
AI Runtime haalt je code uit naar een map en stelt deze bloot als de CODE_SOURCE_PATH omgevingsvariabele. Referer het vanuit je commando zodat relatieve paden worden opgelost, bijvoorbeeld cd "$CODE_SOURCE_PATH" voordat je je script uitvoert.
Volledig voorbeeld
Dit voorbeeld traint op een enkele A10 GPU van een lokaal project, zonder voorafgaande CLI-instellingen behalve het installeren en configureren van de Azure Databricks CLI. Het project bestaat uit drie bestanden:
my-training/
├── databricks.yml
├── command.sh
└── src/
└── train.py
command.sh is het toegangspunt dat door command_pathwordt genoemd. Het gaat naar de map met de uitgepakte code en voert het trainingsscript uit:
#!/usr/bin/env bash
set -euo pipefail
cd "$CODE_SOURCE_PATH"
python train.py
databricks.yml benoemt de bundel, verpakt src/ als artefact tgz , voert het uit als een ai_runtime_task, installeert numpy in de taakomgeving en definieert ontwikkelings- en productiedoelen:
bundle:
name: my-training
artifacts:
code:
type: tgz
path: .
include: [src]
files:
- source: ./dist/code.tgz
resources:
jobs:
train:
name: my-training
tasks:
- task_key: train
environment_key: default
ai_runtime_task:
experiment: /Users/me@example.com/my-training
code_source_path: ./dist/code.tgz
deployments:
- command_path: ./command.sh
compute:
accelerator_type: GPU_1xA10
accelerator_count: 1
environments:
- environment_key: default
spec:
environment_version: '6'
dependencies:
- numpy
targets:
dev:
mode: development
default: true
prod:
mode: production
Implementeer de bundel en voer de taak uit.
databricks bundle deploy bouwt en uploadt het tgz artefact en creëert de taak; databricks bundle run start het:
databricks bundle deploy --target dev
databricks bundle run train --target dev
Bouw workflows voor meerdere taken
Een ai_runtime_task is een Azure Databricks-jobtaak, dus het werkt samen met de rest van een job. Je kunt een voorbereidingsstap uitvoeren vóór de training, GPU- en CPU-taken combineren in één taak, en per taak verschillende accelerators gebruiken.
Taken ordenen met depends_on
Gebruik depends_on om taken achtereenvolgens uit te voeren. De volgende pijplijn voert een voorbereidingsnotitieboek uit, gevolgd door een GPU-trainingstaak die pas begint nadat de voorbereidingstaak is geslaagd:
resources:
jobs:
train_pipeline:
tasks:
- task_key: prep
notebook_task:
notebook_path: ./prep.py
- task_key: train
depends_on:
- task_key: prep
ai_runtime_task:
experiment: my-experiment
code_source_path: ./dist/code.tgz
deployments:
- command_path: ./command.sh
compute:
accelerator_type: GPU_1xA10
accelerator_count: 1
Combineer GPU- en CPU-taken
In de bovenstaande pipeline heeft alleen de trainingsstap een GPU nodig. Het vasthouden van niet-GPU-werk, zoals datavoorbereiding, in aparte taken houdt GPU-tijd gericht op training.
Note
An ai_runtime_task ondersteunt geen Azure Databricks taakwaarden ({{tasks.<task_key>.values.<name>}} of dbutils.jobs.taskValues). Om gegevens tussen stappen door te geven, schrijf je deze naar een gedeelde locatie die beide taken kunnen lezen, zoals een Unity Catalog-volume of een werkruimtebestand, en verwijs je naar dat pad vanuit elke taak.
Plan de werklast in
Voeg een schedule toe aan de taak om deze volgens een schema uit te voeren. Stuur het schema gepauzeerd zodat het uitrollen van de bundel niet vanzelf start, en zet het dan weer op pauze wanneer je er klaar voor bent:
resources:
jobs:
train_pipeline:
schedule:
quartz_cron_expression: '0 0 9 * * ?'
timezone_id: UTC
pause_status: PAUSED
Promoten van ontwikkeling naar productie
Promotie van ontwikkeling naar productie is een standaard bundelfunctie die de AI Runtime-taak ongewijzigd overneemt.
Doelen en modi van bundels
Definieer naast je ontwikkeldoel mode: production ook een productiedoel. Het doel bepaalt waar de bundel wordt ingezet en hoe de bronnen worden genoemd:
targets:
dev:
mode: development
default: true
prod:
mode: production
Implementeren en uitvoeren
Deploy en voer de bundel uit tegen een doel met de standaard bundelcommando's:
databricks bundle deploy --target dev
databricks bundle run train_pipeline --target dev
Volgende stappen
- Voer AI Runtime-workloads uit en beheer ze via de commandoregel met de AI Runtime CLI.
- Volg trainingsruns en beheer controlepunten. Zie het bijhouden van experimenten en observabiliteit.