Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Ta funkcja jest dostępna w publicznej wersji testowej.
Użyj DABs do definiowania zadania treningowego AI Runtime w postaci kodu. Trzymaj go w kontroli wersji źródłowej, wdrażaj w różnych środowiskach, planuj i komponuj razem z innymi zadaniami. Ta strona opisuje ścieżkę korzystania z własnego treningu, w ramach której ai_runtime_task uruchamia własne polecenie dla katalogu z kodem na bezserwerowych zasobach GPU.
To jest inne zadanie niż uruchomienie notatnika na bezserwerowym GPU za pomocą pakietu. Przykład podstawowego pakietu notebook-on-GPU można znaleźć w Jobs API i Declarative Automation Bundles.
Requirements
- Przestrzeń robocza z włączonym AI Runtime. Zobacz Wymagania.
- Databricks CLI (interfejs wiersza poleceń) zainstalowany i skonfigurowany do wdrażania pakietów.
Zdefiniuj zadanie AI Runtime w pakiecie
Element ai_runtime_task nadaje nazwę eksperymentowi, wskazuje kod treningowy za pomocą code_source_path i deklaruje jedno wdrożenie: polecenie do uruchomienia oraz procesor GPU, na którym ma ono zostać uruchomione. Dodaj to do zadania w swoim zestawie:
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 wskazuje na Twój spakowany kod treningowy, a command_path to skrypt uruchamiany przez zadanie. Ponowienia, limity czasu i uprawnienia ustawia się w zadaniu i jobie w taki sam sposób jak w przypadku każdego joba Azure Databricks, więc możesz nadal stosować dotychczasowe praktyki związane z bundlami. Aby dowiedzieć się, jak zapakować i odnieść się do kodu, zobacz Wyślij swój kod treningowy.
ai_runtime_task Pola
| Pole | Typ | Description |
|---|---|---|
experiment |
String | Required. Nazwa eksperymentu MLflow dla tego biegu. Zobacz Śledzenie eksperymentów i obserwowalność. |
code_source_path |
String | Kod szkoleniowy, który ma zostać uruchomiony: plik wyjściowy spakowanego artefaktu tgz lub ścieżka /Workspace albo /Volumes do kodu, który został już przesłany. Zobacz Wyślij swój kod treningowy. |
deployments |
Sequence | Required. Pojedyncze wdrożenie opisujące polecenie i obliczenia do jego uruchomienia. Każdy wpis zawiera command_path, compute, oraz opcjonalny name. |
deployments[].command_path |
String | Required. Skrypt uruchamia zadanie na każdym węźle. |
deployments[].compute.accelerator_type |
String | Required. Typ GPU, na przykład GPU_1xA10, GPU_1xH100, lub GPU_8xH100. |
deployments[].compute.accelerator_count |
Integer | Required. Całkowita liczba procesorów GPU we wszystkich węzłach — wielokrotność liczby GPU na węzeł zakodowanej w accelerator_type. |
deployments[].name |
String | Opcjonalna nazwa wdrożenia, używana w logach i interfejsie użytkownika. |
docker_image_url |
String | Opcjonalny niestandardowy obraz Dockera do uruchomienia polecenia zamiast środowiska zarządzanego. Zobacz Używanie niestandardowych obrazów platformy Docker. |
mlflow_run |
String | Opcjonalna nazwa wyświetlania dla uruchomienia MLflow. |
mlflow_experiment_directory |
String | Opcjonalny katalog przestrzeni roboczej, w którym tworzony jest eksperyment. Musi zaczynać się od /Workspace. Ustaw tę opcję w przypadku uruchamiania jako jednostka usługi, która nie ma domyślnego katalogu użytkownika. |
mlflow_artifact_location |
String | Opcjonalna lokalizacja korzeniowa dla artefaktów MLflow, na przykład ścieżka /Volumes/<catalog>/<schema>/<volume>/… . Musi odpowiadać lokalizacji artefaktu istniejącego eksperymentu lub zostać pominięta. |
Ustaw próby, timeouty, uprawnienia i środowisko (environment_key) na zadaniu i zadaniu — nie wewnątrz ai_runtime_task. Pełne informacje o zadaniu można znaleźć w artykule AI Runtime task.
Konfiguruj akcelerator sprzętowy
Ustaw accelerator_type na procesor GPU, którego wymaga Twoje obciążenie robocze, a accelerator_count na całkowitą liczbę procesorów GPU. Liczba jest wielokrotnością liczby GPU w jednym węźle: 1 dla GPU_1xA10 i GPU_1xH100, oraz 8 dla GPU_8xH100. Liczba większa niż rozmiar na węzeł powoduje uruchomienie zadania na wielu węzłach — na przykład konfiguracja GPU_8xH100 z accelerator_count: 16 jest uruchamiana na dwóch węzłach. Aby uzyskać wskazówki dotyczące wyboru akceleratora, zobacz Opcje sprzętowe.
Note
W przypadku uruchomień wielowęzłowych AI Runtime uruchamia Twoje polecenie na każdym węźle i ustawia w środowisku zadania standardowe zmienne środowiskowe trenowania rozproszonego — NUM_NODES, WORLD_SIZE, LOCAL_WORLD_SIZE, MASTER_ADDR i MASTER_PORT. Są odczytywane z polecenia (na przykład podczas torchrun uruchamiania); nie ustawia się ich w pakiecie.
Ustaw środowisko i zależności
Zadeklaruj blok environments w zadaniu i odwołaj się do niego w zadaniu podrzędnym za pomocą environment_key. AI Runtime instaluje wymienione zależności przed uruchomieniem polecenia:
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: '5'
dependencies:
- numpy
Dostępne środowiska znajdziesz w artykule Ustaw swoje środowisko.
Wyślij swój kod treningowy
code_source_path informuje zadanie o tym, gdzie znajduje się Twój kod szkoleniowy. Przybiera jedną z dwóch form:
-
Artefakt zapakowany
tgz— zadeklaruj artefakt i wskażcode_source_pathjego plik wyjściowy. Azure Databricks buduje tarball i przesyła go na .databricks bundle deployTak właśnie wysyła się kod z lokalnego katalogu projektów lub z dedykowanej rewizji Gita. - Przestrzeń robocza lub ścieżka woluminów — kod już przesłany, używany as-is.
Opakowany artefakt
Zadeklaruj artefakt i wskaż tgzcode_source_path jego plik wyjściowy. W databricks bundle deploy CLI tworzy archiwum tar, przesyła je, a zadanie je rozpakowuje i uruchamia na nim Twoje polecenie:
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
Użyj do include pakowania plików z drzewa roboczego lub git do snapshotu zadeklarowanej gałęzi lub commitu.
Przestrzeń robocza lub ścieżka woluminu
Aby użyć kodu, który został już przesłany, ustaw code_source_path na ścieżkę /Volumes/… lub /Workspace/…. Azure Databricks używa ścieżki as-is i nie pakuje nic.
Pola artefaktów tgz :
| Pole | Description |
|---|---|
type |
tgz tworzy archiwum tar.gz z plików źródłowych, zamiast uruchamiać polecenie build. |
path |
Bazowy katalog do pakowania.
include ścieżki i nazwy elementów archiwum są do niego względne. |
include |
Lista podścieżek pakietu path. Pomiń pakowanie całego path. Uwzględnia .gitignore; sync.include i sync.exclude obowiązujące dla całego pakietu nie mają zastosowania. Alternatywa dla komendy build . |
git |
Utwórz migawkę zatwierdzonego odwołania Git zamiast drzewa roboczego. Ustaw git.branch lub git.commit (commit wygrywa, gdy oba są ustawione). Alternatywa dla komendy build . |
files[].source |
Ścieżka zbudowanej tarballi. Wskaż code_source_path na to. |
Note
AI Runtime wyodrębnia Twój kod do katalogu i udostępnia go jako CODE_SOURCE_PATH zmienną środowiskową. Odwołaj się do niego w poleceniu, aby ścieżki względne były poprawnie rozpoznawane, na przykład cd "$CODE_SOURCE_PATH", przed uruchomieniem skryptu.
Kompletny przykład
Ten przykład trenuje na jednym GPU A10 z lokalnego projektu, bez wcześniejszego ustawienia CLI poza instalacją i konfiguracją Azure Databricks CLI. Projekt składa się z trzech plików:
my-training/
├── databricks.yml
├── command.sh
└── src/
└── train.py
command.sh jest punktem wejścia nazwanym przez command_path. Zmienia się do katalogu wyodrębnionego kodu i uruchamia skrypt treningowy:
#!/usr/bin/env bash
set -euo pipefail
cd "$CODE_SOURCE_PATH"
python train.py
databricks.yml nadaje nazwę pakietowi, pakuje src/ jako artefakt tgz, uruchamia go jako ai_runtime_task, instaluje numpy w środowisku zadania oraz definiuje cele programistyczne i produkcyjne:
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: '5'
dependencies:
- numpy
targets:
dev:
mode: development
default: true
prod:
mode: production
Wdroż pakiet i uruchom zadanie.
databricks bundle deploy buduje i przesyła tgz artefakt oraz tworzy zadanie; databricks bundle run rozpoczyna go:
databricks bundle deploy --target dev
databricks bundle run train --target dev
Buduj wielozadaniowe workflowy
ai_runtime_task to zadanie w usłudze Azure Databricks, więc współdziała z pozostałymi elementami zadania. Możesz wykonać etap przygotowawczy przed treningiem, połączyć zadania GPU i CPU w jednym zadaniu i używać różnych akceleratorów dla każdego zadania.
Uporządkuj zadania za pomocą depends_on
Użyj depends_on, aby uruchamiać zadania kolejno. Poniższy potok uruchamia notatnik przygotowawczy, a następnie zadanie trenowania na GPU, które rozpoczyna się dopiero po pomyślnym zakończeniu zadania przygotowawczego:
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
Połączenie zadań GPU i CPU
W powyższym pipeline tylko etap treningowy wymaga GPU. Utrzymywanie zadań niezwiązanych z GPU, takich jak przygotowanie danych, w osobnych zadaniach sprawia, że czas pracy GPU jest przeznaczony na trenowanie.
Note
ai_runtime_task nie obsługuje wartości zadań w usłudze Azure Databricks ({{tasks.<task_key>.values.<name>}} lub dbutils.jobs.taskValues). Aby przekazywać dane między etapami, zapisz je we współdzielonej lokalizacji, do której oba zadania mają dostęp, na przykład w woluminie usługi Unity Catalog lub w pliku obszaru roboczego, i odwołuj się do tej ścieżki w każdym zadaniu.
Zaplanuj pracę
Dodaj do zadania element schedule, aby uruchamiać je cyklicznie. Wdróż pakiet z wstrzymanym harmonogramem, aby wdrożenie pakietu nie uruchamiało automatycznie przebiegów, a następnie wznów harmonogram, gdy wszystko będzie gotowe:
resources:
jobs:
train_pipeline:
schedule:
quartz_cron_expression: '0 0 9 * * ?'
timezone_id: UTC
pause_status: PAUSED
Awans od rozwoju do produkcji
Awans z rozwoju do produkcji to standardowa funkcja pakietu, którą zadanie AI Runtime dziedziczy bez zmian.
Cele i tryby wiązek
Zdefiniuj cel produkcyjny mode: production obok celu rozwojowego. Element docelowy określa, gdzie pakiet jest wdrażany i jak są nazywane jego zasoby:
targets:
dev:
mode: development
default: true
prod:
mode: production
Wdrożenie i uruchomienie
Rozmieszczenie i uruchomienie pakietu przeciwko celowi za pomocą standardowych poleceń pakietu:
databricks bundle deploy --target dev
databricks bundle run train_pipeline --target dev
Następne kroki
- Uruchamiaj i zarządzaj obciążeniami AI Runtime z linii poleceń za pomocą AI Runtime CLI.
- Śledź przejazdy treningowe i zarządzaj punktami kontrolnymi. Zobacz Śledzenie eksperymentów i obserwowalność.