Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Эта функция доступна в общедоступной предварительной версии.
Используйте DABs для определения обучающей рабочей нагрузки AI Runtime в виде кода. Храните это в системе контроля версий, развертывайте в разных средах, запускайте по расписанию и объединяйте с другими задачами. На этой странице описан сценарий собственного обучения, при котором ai_runtime_task выполняет вашу собственную команду для каталога с кодом в бессерверной среде GPU-вычислений.
Это совсем другая задача, чем запуск ноутбука на серверной видеокарте через пакет. Для базового примера пакета notebook-on-GPU см. Jobs API и Declarative Automation Bundles.
Requirements
- Рабочее пространство с включённым AI Runtime. См. раздел Требования.
- Databricks CLI (командный интерфейс) был установлен и настроен для развертывания пакетов.
Определите задачу AI Runtime в составе пакета
Задает имя эксперимента ai_runtime_task, указывает ваш обучающий код с помощью code_source_path и определяет одно развертывание: команду для запуска и GPU, на котором она будет выполняться. Добавьте его в задачу в вашем пакете:
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 указывает на ваш пакетный обучающий код, и command_path это скрипт, который выполняет задача. Повторные попытки, тайм-ауты и разрешения для задачи и задания настраиваются так же, как и для любого задания Azure Databricks, поэтому ваши существующие практики использования bundle применяются и здесь. Чтобы узнать, как упаковать и ссылаться на ваш код, см. раздел «Отправка вашего учебного кода».
ai_runtime_task Поля
| Поле | Type | Description |
|---|---|---|
experiment |
String | Required. Название эксперимента MLflow для запуска. См. Отслеживание эксперимента и наблюдаемость. |
code_source_path |
String | Код обучения для выполнения: выходной файл упакованного артефакта tgz или путь /Workspace или /Volumes к уже загруженному коду. См. Развертывание вашего обучающего кода. |
deployments |
Последовательность | Required. Единое развертывание, описывающее команду и вычислительные ресурсы для её выполнения. Каждая запись содержит command_path, computeи необязательное name. |
deployments[].command_path |
String | Required. Скрипт, выполняемый задачей на каждом узле. |
deployments[].compute.accelerator_type |
String | Required. Тип GPU, например GPU_1xA10, , GPU_1xH100, или GPU_8xH100. |
deployments[].compute.accelerator_count |
Целое число | Required. Общее количество GPU во всех узлах — кратное числу на узл, закодированного в accelerator_type. |
deployments[].name |
String | Необязательное название для развертывания, используемое в логах и интерфейсе. |
docker_image_url |
String | Опциональный кастомный образ Docker для запуска команды вместо управляемой среды. См. раздел "Использование пользовательских образов Docker". |
mlflow_run |
String | Опциональное имя отображения для запуска MLflow. |
mlflow_experiment_directory |
String | Необязательная папка рабочего пространства, в рамках которой создаётся эксперимент. Начните с /Workspace. Устанавливайте это при запуске от имени сервисной учётной записи, у которой нет пользовательского каталога по умолчанию. |
mlflow_artifact_location |
String | Необязательный корневой путь для артефактов MLflow, например путь /Volumes/<catalog>/<schema>/<volume>/…. Должно совпадать с расположением артефакта существующего эксперимента или не указываться. |
Устанавливайте повторные попытки, тайм-ауты, разрешения и окружение (environment_key) для задачи и задания, а не внутри ai_runtime_task. Полное справочное описание задачи см. в разделе AI Runtime task.
Настройте аппаратный ускоритель
Установите для accelerator_type количество графических процессоров, необходимое для вашей рабочей нагрузки, а для accelerator_count — общее количество графических процессоров. Это число кратно числу GPU на узел: 1 для GPU_1xA10 и GPU_1xH100, и 8 для GPU_8xH100. Число, превышающее размер на один узел, приводит к тому, что задача выполняется на нескольких узлах; например, при GPU_8xH100 и accelerator_count: 16 задача выполняется на двух узлах. Для получения рекомендаций по выбору ускорителя смотрите раздел «Аппаратные опции».
Note
Для многоузловых запусков AI Runtime выполняет вашу команду на каждом узле и заполняет стандартные переменные среды распределенного обучения в среде задачи —NUM_NODES , WORLD_SIZE, LOCAL_WORLD_SIZEMASTER_ADDR, и MASTER_PORT. Считывайте их из вашей команды (например, при torchrunзапуске); не задавайте их в бандле.
Задайте окружение и зависимости
Объявите блок environments в задании и сошлитесь на него в задаче с помощью environment_key. AI Runtime устанавливает перечисленные зависимости перед запуском вашей команды:
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
Доступные локации смотрите в разделе «Настройте окружение».
Отправьте свой тренировочный код
code_source_path Указывает задаче, где находится ваш обучающий код. Он имеет одну из двух форм:
-
Упакованный
tgzартефакт — объявите артефакт и укажитеcode_source_pathна файл его вывода. Azure Databricks создаёт архив tar и загружает его наdatabricks bundle deploy. Так вы отправляете код из локального каталога проектов или из проверенной версии Git. - Рабочее пространство или путь тома — код, который уже загружен, использован as-is.
Упакованный артефакт
Объявите артефакт tgz и укажите code_source_path на файл его вывода. На databricks bundle deploy CLI создаёт tar-архив, загружает его, и задача извлекает его и выполняет вашу команду в нём:
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
Используйте include для упаковки файлов из рабочего дерева или git для снимков коммитированной ветки или коммита.
Рабочий пространственный или путь тома
Чтобы использовать уже загруженный код, установите для code_source_path путь /Volumes/… или /Workspace/…. Azure Databricks использует путь as-is и ничего не упаковывает.
Поля артефакта tgz:
| Поле | Description |
|---|---|
type |
tgz Создаёт gzip-тарбол из исходных файлов, вместо выполнения build команды. |
path |
Базовый каталог для упаковки.
include пути и имена записей архива указываются относительно него. |
include |
Список подпутей path к пакету. Не упаковывать всё из path. Учитывает .gitignore; общие для всего пакета sync.include и sync.exclude не применяются. Альтернатива команде build. |
git |
Создайте снимок зафиксированной ссылки Git вместо рабочего дерева. Задайте git.branch или git.commit (commit имеет приоритет, если заданы оба). Альтернатива команде build. |
files[].source |
Путь построенного тарта. Наведите code_source_path на это. |
Note
AI Runtime извлекает ваш код в каталог и показывает его как CODE_SOURCE_PATH переменную среды. Укажите ссылку на него в команде, чтобы относительные пути корректно разрешались, например cd "$CODE_SOURCE_PATH", перед запуском скрипта.
Полный пример
Этот пример обучается на одном GPU A10 из локального проекта, без предварительной настройки CLI, кроме установки и настройки Azure Databricks CLI. В проекте три файла:
my-training/
├── databricks.yml
├── command.sh
└── src/
└── train.py
command.sh — это точка входа с именем command_path. Он превращается в извлекательный каталог кода и запускает обучающий скрипт:
#!/usr/bin/env bash
set -euo pipefail
cd "$CODE_SOURCE_PATH"
python train.py
databricks.yml задаёт имя пакета, упаковывает src/ как артефакт tgz, запускает его как ai_runtime_task, устанавливает numpy в среду выполнения задачи и определяет цели для разработки и продакшена:
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
Разверните пакет и запустите задание.
databricks bundle deploy Создаёт и загружает tgz артефакт и создаёт задание; databricks bundle run запускает его:
databricks bundle deploy --target dev
databricks bundle run train --target dev
Создание многозадачных рабочих процессов
ai_runtime_task — это задача задания Azure Databricks, поэтому она встраивается в остальную часть задания. Можно выполнить этап подготовки перед обучением, объединить задачи GPU и CPU в одной задаче и использовать разные ускорители для каждой задачи.
Заказывайте задачи с depends_on
Используйте depends_on для последовательного выполнения задач. Следующий конвейер запускает подготовительный блокнот, а затем задачу обучения GPU, которая начинается только после успешного выполнения задачи подготовки:
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
Комбинируйте задачи GPU и CPU
В приведённом выше конвейере только для этапа обучения нужен графический процессор. Сохранение работы вне GPU, такой как подготовка данных, в отдельных задачах, позволяет GPU сосредоточиться на обучении.
Note
ai_runtime_task не поддерживает значения задач в заданиях Azure Databricks ({{tasks.<task_key>.values.<name>}} или dbutils.jobs.taskValues). Чтобы передавать данные между шагами, записывайте их в общую точку, которую могут читать обе задачи, например, том Unity Catalog или файл рабочего пространства, и ссылайтесь на этот путь из каждой задачи.
Распланируйте рабочую нагрузку
Добавьте schedule к заданию, чтобы запускать его по расписанию. Отправьте расписание на паузу, чтобы развертывание пакета не начало запуска само по себе, а затем отмените паузу, когда будете готовы:
resources:
jobs:
train_pipeline:
schedule:
quartz_cron_expression: '0 0 9 * * ?'
timezone_id: UTC
pause_status: PAUSED
Продвижение от разработки к производству
Перевод из среды разработки в промышленную среду — это стандартная возможность пакета, которую задача AI Runtime наследует без изменений.
Цели и режимы пакета
Определите цель для рабочей среды наряду с mode: production целью разработки. Целевой объект определяет, куда развёртывается пакет и как именуются его ресурсы:
targets:
dev:
mode: development
default: true
prod:
mode: production
Развертывание и запуск
Разверните и запустите пакет на целевой системе с помощью стандартных команд bundle:
databricks bundle deploy --target dev
databricks bundle run train_pipeline --target dev
Дальнейшие действия
- Запускайте и управляйте нагрузками AI Runtime из командной строки с помощью AI Runtime CLI.
- Отслеживайте тренировочные забеги и управляйте контрольными точками. См. Отслеживание эксперимента и наблюдаемость.