Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Tato funkce je ve verzi Public Preview.
Použijte DAB k definování tréninkové zátěže AI Runtime jako kódu. Uchovávejte to ve správě zdrojového kódu, nasazujte to napříč různými prostředími, plánujte to a kombinujte to s dalšími úlohami. Tato stránka popisuje postup použití vlastního trénování, při kterém ai_runtime_task spouští váš vlastní příkaz nad adresářem s kódem na bezserverových GPU výpočetních prostředcích.
Tip
- Použijte Deklarativní automatizační balíčky k definování tréninkových zátěží jako kódu, jejich nasazení napříč prostředími a jejich plánování.
-
ai_runtime_taskspustí váš vlastní příkaz ve složce s kódem (bring-your-own-training). - Spojte úkoly GPU a CPU v multitaskingových úlohách.
Jde o jiný úkol než spuštění notebooku na serverless GPU prostřednictvím balíčku. Základní příklad balíčku notebooku na GPU viz Plánování pomocí rozhraní Jobs API a deklarativních automatizačních balíčků.
Requirements
- Pracovní prostor s povoleným AI Runtime. Viz Požadavky.
- Nainstalované a nakonfigurované rozhraní Databricks CLI (příkazové rozhraní) pro nasazení bundles.
Definujte úlohu běhového prostředí AI v balíčku
ai_runtime_task pojmenuje experiment, odkazuje na váš trénovací kód pomocí code_source_path a definuje jedno nasazení: příkaz, který se má spustit, a GPU, na kterém se má spustit. Přidejte ji k úloze ve svém balíčku:
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 ukazuje na váš zabalený tréninkový kód a command_path je to skript, který úkol spustí. Opakování, časové limity a oprávnění se u úkolu i úlohy nastavují stejně jako u jakékoli jiné úlohy Azure Databricks, takže vaše stávající postupy pro balíčky lze použít i zde. Pro návod, jak zabalit a odkazovat na svůj kód, viz Ošislat svůj tréninkový kód.
ai_runtime_task pole
| Pole | Typ | Description |
|---|---|---|
experiment |
String | Required. Název experimentu MLflow pro toto spuštění. Viz Sledování experimentu a pozorovatelnost. |
code_source_path |
String | Trénovací kód ke spuštění: výstupní soubor zabaleného artefaktu tgz, nebo cesta /Workspace nebo /Volumes ke kódu, který už byl nahrán. Viz Odesílat svůj tréninkový kód. |
deployments |
Sequence | Required. Jedno nasazení popisující příkaz a výpočtovou kapacitu pro jeho spuštění. Každý záznam obsahuje command_path, compute, a volitelný name. |
deployments[].command_path |
String | Required. Skript úkolu běží na každém uzlu. |
deployments[].compute.accelerator_type |
String | Required. Typ GPU, například GPU_1xA10, GPU_1xH100, nebo GPU_8xH100. |
deployments[].compute.accelerator_count |
Celé číslo | Required. Celkový počet GPU napříč všemi uzly – násobek počtu GPU na uzel zakódovaného v accelerator_type. |
deployments[].name |
String | Volitelný název pro nasazení, používaný v logech a uživatelském rozhraní. |
docker_image_url |
String | Volitelný vlastní obraz Dockeru pro spuštění příkazu místo spravovaného prostředí. Viz Použití vlastních imagí Dockeru. |
mlflow_run |
String | Volitelný zobrazovací název pro běh MLflow. |
mlflow_experiment_directory |
String | Volitelný adresář pracovního prostoru, pod kterým je experiment vytvořen. Musí začínat na /Workspace. Nastavte to, když běžíte jako principal služby, který nemá výchozí uživatelský adresář. |
mlflow_artifact_location |
String | Volitelné kořenové umístění pro artefakty MLflow, například cesta /Volumes/<catalog>/<schema>/<volume>/… . Musí odpovídat umístění artefaktu existujícího experimentu, jinak musí být vynechán. |
Nastavte počet opakování, časové limity, oprávnění a prostředí (environment_key) u úkolu a úlohy – nikoli uvnitř ai_runtime_task. Pro úplný odkaz na úkol viz AI Runtime task.
Konfigurace hardwarového akcelerátoru
Nastavte accelerator_type GPU, které vaše pracovní zátěž potřebuje, a accelerator_count celkový počet GPU. Počet je násobkem počtu GPU na uzel: 1 pro GPU_1xA10 a GPU_1xH100, a 8 pro GPU_8xH100. Počet instancí větší než velikost na uzel spustí úlohu na více uzlech – například GPU_8xH100 s accelerator_count: 16 poběží na dvou uzlech. Pro rady při výběru akcelerátoru viz Hardwarové možnosti.
Note
Pro víceuzlové běhy AI Runtime spustí příkaz na každém uzlu a vyplní standardní proměnné distribuovaného trénovacího prostředí v prostředí úloh –NUM_NODES , , WORLD_SIZELOCAL_WORLD_SIZE, MASTER_ADDR, a MASTER_PORT. Načítejte je z příkazu (například při spuštění pomocí torchrun); v balíčku je nenastavujete.
Nastavte prostředí a závislosti
Deklarujte blok na úkolu a odkazujte environments na něj z úkolu pomocí environment_key. AI Runtime instaluje uvedené závislosti před spuštěním vašeho příkazu:
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
Pro dostupná prostředí viz Nastavit své prostředí.
Odesílejte svůj tréninkový kód
code_source_path říká úloze, kde se nachází váš trénovací kód. Má jednu ze dvou forem:
-
Zabalený
tgzartefakt — deklarujte artefakt a nasměrujtecode_source_pathjej na jeho výstupní soubor. Azure Databricks vytváří archiv tar a nahrává ho nadatabricks bundle deploy. Takto se odesílá kód z místního adresáře projektů nebo z ověřené revize Gitu. - Pracovní prostor nebo cesta ke svazku — kód, který je již nahraný, se použije beze změn.
Balený artefakt
Deklarujte tgz artefakt a ukažte code_source_path na jeho výstupní soubor. V databricks bundle deploy CLI vytvoří archiv tar, nahraje jej a úloha jej rozbalí a spustí nad ním váš příkaz:
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
Použijte include k balení souborů z pracovního stromu, nebo git k snapshotu zadaného větve či commitu.
Pracovní prostor nebo cesta objemu
Chcete-li použít kód, který je již nahraný, nastavte code_source_path na cestu /Workspace/… nebo /Volumes/…. Azure Databricks použije cestu v původní podobě a nic nezabalí.
Pole tgz artefaktů:
| Pole | Description |
|---|---|
type |
tgz Vytvoří gzipovaný tarball ze zdrojových souborů místo spuštění příkazu build . |
path |
Základní adresář pro balení.
include cesty a názvy záznamů v archivu jsou k němu vztahovány. |
include |
Seznam podcest do path balíčku. Vynechat z balení vše z path. Respektuje .gitignore; sync.include a sync.exclude pro celý balíček se nepoužijí. Alternativa k příkazu build . |
git |
Vytvořte snapshot potvrzené Git reference místo pracovního stromu. Nastavit git.branch nebo git.commit (commit vyhrává, když jsou obě nastaveny). Alternativa k příkazu build . |
files[].source |
Cesta k vytvořenému tarballu. Namiřte code_source_path sem. |
Note
AI Runtime extrahuje váš kód do adresáře a zpřístupní ho jako CODE_SOURCE_PATH proměnnou prostředí. Odkazujte na něj z příkazu, aby se relativní cesty vyřešily, například cd "$CODE_SOURCE_PATH" před spuštěním skriptu.
Kompletní příklad
Tento příklad trénuje na jednom GPU A10 z lokálního projektu, bez předchozího nastavení CLI kromě instalace a konfigurace Azure Databricks CLI. Projekt má tři soubory:
my-training/
├── databricks.yml
├── command.sh
└── src/
└── train.py
command.sh je vstupní bod pojmenovaný pomocí command_path. Změní se na adresář extrahovaného kódu a spustí trénovací skript:
#!/usr/bin/env bash
set -euo pipefail
cd "$CODE_SOURCE_PATH"
python train.py
databricks.yml pojmenuje balíček, zabalí src/ jako artefakt tgz, spustí jej jako ai_runtime_task, nainstaluje numpy do prostředí úlohy a definuje vývojové a produkční cíle:
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
Nasaďte balíček a spusťte úlohu.
databricks bundle deploy postaví a nahraje tgz artefakt a vytvoří úkol; databricks bundle run spustí ho:
databricks bundle deploy --target dev
databricks bundle run train --target dev
Vytvořte pracovní postupy pro více úloh
ai_runtime_task je úloha v úloze Azure Databricks, takže ji lze kombinovat se zbytkem úlohy. Můžete spustit přípravný krok před tréninkem, kombinovat úlohy GPU a CPU v jedné úlohě a použít různé akcelerátory pro každou úlohu.
Řadit úkoly pomocí depends_on
Používejte depends_on pro spouštění úloh v pořadí. Následující pipeline spustí přípravný zápisník, poté trénovací úkol GPU, který začíná až po úspěšném dokončení přípravného úkolu:
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
Kombinace úloh GPU a CPU
Ve výše uvedené pipeline je GPU potřeba pouze pro krok trénování. Udržování práce mimo GPU, jako je příprava dat, v oddělených úkolech, udržuje čas GPU zaměřený na trénování.
Note
ai_runtime_task nepodporuje hodnoty úloh Azure Databricks ({{tasks.<task_key>.values.<name>}} nebo dbutils.jobs.taskValues). Pro předávání dat mezi kroky je zapište na sdílené místo, které obě úlohy mohou číst, například do svazku Unity Catalog nebo do souboru workspace, a odkazujte na tuto cestu z každého úkolu.
Naplánujte si pracovní zátěž
Přidejte do úlohy schedule, aby se spouštěla v pravidelných intervalech. Doručte plán v pozastaveném stavu, aby nasazení balíčku nespustilo běhy automaticky, a až budete připraveni, zrušte jeho pozastavení:
resources:
jobs:
train_pipeline:
schedule:
quartz_cron_expression: '0 0 9 * * ?'
timezone_id: UTC
pause_status: PAUSED
Propagace od vývoje k produkci
Posun z vývoje do produkce je standardní funkcí balíčku, kterou úkol AI Runtime dědí beze změny.
Cíle a režimy balíčku
Definujte produkční cíl pomocí mode: production vedle svého vývojového cíle. Cíl řídí, kde se balíček nasadí a jak jsou jeho zdroje pojmenovány:
targets:
dev:
mode: development
default: true
prod:
mode: production
Nasazení a spuštění
Nasadit a spustit balíček proti cíli pomocí standardních příkazů balíčku:
databricks bundle deploy --target dev
databricks bundle run train_pipeline --target dev
Další kroky
- Spusťte a spravujte AI runtime zátěže z příkazové řádky pomocí AI Runtime CLI.
- Sledujte tréninkové běhy a spravujte kontrolní body. Viz Sledování experimentu a pozorovatelnost.