Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Эта функция доступна в общедоступной предварительной версии.
Отслеживание экспериментов и наблюдаемость встроены в AI Runtime. MLflow — это единое место для параметров, метрик, метрик системы GPU, логов и артефактов запуска. Каждый запуск реализуется в эксперименте MLflow, которым вы можете поделиться с командой, а встроенная панель ресурсов GPU показывает реальное использование GPU, память и температуру во время запуска кода.
Tip
- MLflow — это унифицированный интерфейс для экспериментов с AI Runtime: метрики, параметры, системные метрики, журналы и артефакты.
- Рабочие нагрузки, поданные с помощью CLI Databricks, автоматически запускают MLflow. В блокнотах и скриптах вызовите
mlflow.start_run()илиmlflow.autolog(). - Встроенная панель ресурсов GPU показывает использование, память и температуру.
Что MLflow предоставляет для глубокого обучения
- Метрики и параметры: логировать потери обучения, метрики оценки, скорость обучения и гиперпараметры, а также сравнивать их между запусками в интерфейсе MLflow.
- Системные метрики: использование GPU, CPU и памяти, записываемое вместе с метриками обучения на вкладке Системные метрики запуска.
- Logs: Вывод драйвера из задания, выполненного на вкладке Logs .
- Артефакты и модели: храните файлы моделей, конфигурации и другие результаты в рамках запуска. Артефакты могут храниться в томе Unity Catalog.
- Общий доступ и совместная работа: эксперименты являются объектами рабочего пространства. Дайте товарищем по команде доступ к эксперименту для обмена забегами и сравнения результатов. См. статью «Организация учебных запусков с использованием экспериментов MLflow».
- Интеграции фреймворков: Hugging Face Transformers, PyTorch Lightning и другие библиотеки напрямую входят в MLflow.
О схемах глубокого обучения в MLflow 3 см. Рабочий процесс глубокого обучения в MLflow 3.
Нужно ли добавлять код MLflow?
Всё зависит от того, как вы подаёте нагрузку:
| Как ты бегаешь | Запуск MLflow создается автоматически? | Что вы добавите |
|---|---|---|
Databricks CLI (databricks air run) |
Yes.
experiment_name в рабочей нагрузке YAML задаёт эксперимент, а системные метрики и логи фиксируются без кода. |
Optional. Логируйте пользовательские метрики для запуска MLFLOW_RUN_ID. См. Отслеживание запусков с помощью MLflow и страницу запусков заданий. |
Бессерверный GPU API (@distributed) |
Yes. Каждый .distributed() вызов создаёт забег. |
Optional. Логируйте пользовательские метрики изнутри функции. |
| Блокнот или скрипт на одном узле | No. Автологирование не включено автоматически на бессерверных вычислительных ресурсах. | Звоните mlflow.start_run() и ведите метрики, или позвоните mlflow.autolog(). |
Начало работы
Используйте MLflow 3.7 и выше. Следующие примеры можно скопировать в ячейку ноутбука или в Python-скрипт.
Логарифмические метрики из тренировочного цикла
import mlflow
mlflow.set_experiment("/Users/<username>/my-experiment")
with mlflow.start_run(run_name="baseline-lr3e-4"):
mlflow.log_params({"learning_rate": 3e-4, "batch_size": 32, "epochs": 3})
for epoch in range(3):
train_loss = train_one_epoch(model, train_loader, optimizer) # your training code
val_loss = evaluate(model, val_loader)
mlflow.log_metrics({"train_loss": train_loss, "val_loss": val_loss}, step=epoch)
Используйте автологирование
Для PyTorch Lightning вызовите mlflow.pytorch.autolog() перед обучением. Для других поддерживаемых библиотек обращайтесь к mlflow.autolog().
import mlflow
mlflow.pytorch.autolog()
with mlflow.start_run(run_name="lightning-baseline"):
trainer.fit(model, datamodule=datamodule)
Лог от Hugging Face Transformers
Задайте report_to="mlflow". Аргумент run_name задаёт имя запуска MLflow.
from transformers import TrainingArguments
args = TrainingArguments(
output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
report_to="mlflow",
run_name="llama7b-sft-lr3e5",
logging_steps=50,
)
Лог с нескольких GPU
В распределённом обучении каждый процесс запускает ваш обучающий код. Ведите журнал только для ранга 0, чтобы каждая метрика записывалась только один раз:
import os
import mlflow
if int(os.environ.get("RANK", "0")) == 0:
mlflow.log_metric("train_loss", loss, step=step)
Лучшие практики
- Установите
stepзначимое значение, например, глобальную партию или эпоху, и ведите лог с интервалом (например, каждые 50 шагов) вместо каждой партии. MLflow ограничивает количество шагов метрик для одного запуска. См. Ограничения ресурсов. - Используйте абсолютные экспериментальные пути, такие как
/Users/<username>/my-experimentили/Workspace/Shared/<team>/my-experiment. Поместите эксперименты, которыми хотите поделиться, в общую папку. - Чтобы возобновить предыдущий запуск, передайте его ID:
mlflow.start_run(run_id="<previous-run-id>").
Бессерверный GPU API
Когда вы используете Serverless GPU API, каждый вызов .distributed() автоматически создаёт запуск MLflow. Эксперимент по умолчанию — /Users/{WORKSPACE_USER}/{notebook-name}.
Если вызвать
.distributed()внутри активного запуска MLflow, будет создан вложенный дочерний запуск в рамках этого запуска:import mlflow with mlflow.start_run() as outer_run: run_train.distributed() # creates a nested child run under outer_runЧтобы использовать другой эксперимент, вызовите
mlflow.set_experiment()перед.distributed(), или установитеMLFLOW_EXPERIMENT_NAMEпеременную среды. Всегда используйте абсолютные пути.import os import mlflow mlflow.set_experiment("/Users/<username>/my-experiment") # or: os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment" run_train.distributed()Чтобы возобновить предыдущий запуск, установите
MLFLOW_RUN_IDперед вызовом.distributed():os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>" run_train.distributed()
Просмотр журналов
- Вывод в блокноте: стандартный вывод и сообщения об ошибках вашего обучающего кода отображаются в выходной области ячейки блокнота.
- Логи MLflow: интерфейс эксперимента в MLflow отображает метрики обучения, параметры и артефакты.
Если вы не можете просмотреть логи
Вкладка «Журналы» на странице запуска MLflow потоково отображает журналы из запуска задания Databricks, связанного с этим запуском MLflow, поэтому доступ к ней определяется разрешениями этого задания. Если вкладка показывает : У вас нет доступа к этим логам, значит, у вас недостаточно разрешений.
Доступ к запуску в MLflow не означает доступ к этому заданию. Вы можете иметь разрешение на доступ к эксперименту MLflow, но при этом не иметь доступа к журналам. Чтобы получить доступ, попросите пользователя с правами Can Manage или администратора рабочего пространства предоставить вам хотя бы Can View на работе. См. раздел Управление доступом к заданию, где описано, как предоставляются разрешения для задания.
Мониторинг ресурсов GPU
Панель ресурсов GPU — это функция удобства для сессий в ноутбуке. Он показывает состояние и использование видеокарты в реальном времени без какой-либо настройки MLflow, поэтому особенно удобно, когда сессия в ноутбуке не создаёт эксперимент MLflow. Для постоянного записи метрик GPU, CPU и памяти, связанных с запуском, используйте вкладку MLflow System метрики. Панель поддерживает как одиночные, так и многоузловые рабочие нагрузки.
Чтобы открыть панель, подключите блокнот к AI Runtime, затем нажмите Ресурсы GPU на правой боковой панели.
На панели отображаются следующие метрики для каждого GPU:
- Процент использования GPU
- Использование памяти GPU
- Температура
Панель опрашивает метрики каждые 10 секунд и хранит историю за период до 2 часов. Щелкните Обновите, чтобы немедленно получить последние значения. Через 5 минут бездействия панель приостанавливается; повторно откройте его для возобновления мониторинга.
Глобальные ограничения в Azure Databricks
См. Ограничения ресурсов.