Отслеживание экспериментов и наблюдаемость

Это важно

Эта функция доступна в общедоступной предварительной версии.

Среда выполнения ИИ интегрируется изначально с MLflow для отслеживания экспериментов и включает встроенную область ресурсов GPU для мониторинга использования, памяти и температуры. Используйте MLflow, чтобы журналировать метрики и запуски, просматривать результаты обучения в ноутбуке и интерфейсе MLflow, сохранять контрольные точки модели в томах Unity Catalog и отслеживать состояние GPU во время выполнения кода.

Интеграция MLflow

Среда выполнения ИИ интегрируется изначально с MLflow для отслеживания экспериментов, ведения журнала моделей и визуализации метрик.

Рекомендации по настройке:

  • Обновите MLflow до версии 3.7 или более поздней и следуйте шаблонам рабочего процесса глубокого обучения.

  • Включите автологирование для PyTorch Lightning:

    import mlflow
    mlflow.pytorch.autolog()
    
  • Настройте имя своего запуска в MLflow, инкапсулировав код обучения модели в область действия API mlflow.start_run(). Это позволяет контролировать имя запуска и возобновлять выполнение с предыдущего запуска. Вы можете настроить имя запуска, используя параметр run_name в mlflow.start_run(run_name="your-custom-name") или в сторонних библиотеках, поддерживающих MLflow (например, Hugging Face Transformers). В противном случае используется jobTaskRun-xxxxxимя запуска по умолчанию.

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • При использовании Serverless GPU API каждый вызов .distributed() автоматически создает запуск эксперимента MLflow. Если вызов выполняется в рамках активного запуска MLflow, вместо этого создается вложенный дочерний запуск внутри активного родительского запуска.

    import mlflow
    
    with mlflow.start_run() as outer_run:
        ...
        run_train.distributed()  # creates a nested child run under outer_run
    
  • Чтобы настроить эксперимент, используемый .distributed(), вызовите mlflow.set_experiment() перед вызовом .distributed() или задайте переменную среды MLFLOW_EXPERIMENT_NAME. Имя эксперимента по умолчанию — /Users/{WORKSPACE_USER}/{notebook-name}. Всегда используйте абсолютные пути.

    import mlflow
    mlflow.set_experiment("/Users/<username>/my-experiment")
    run_train.distributed()
    

    Alternatively:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • Чтобы возобновить предыдущий запуск MLflow, используйте mlflow.start_run(run_id="<previous-run-id>").

  • Чтобы возобновить предыдущий запуск MLflow с помощью .distributed(), перед его вызовом задайте MLFLOW_RUN_ID:

    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()
    
  • Установите параметр step в MLFlowLogger на разумные номера пакетов. MLflow имеет ограничение в 10 миллионов шагов метрик, поэтому ведение журнала каждого пакета на больших запусках обучения может достигнуть этого предела. См. Ограничения ресурсов.

Просмотр журналов

  • Вывод в блокноте: стандартный вывод и сообщения об ошибках вашего обучающего кода отображаются в выходной области ячейки блокнота.
  • Логи MLflow: интерфейс эксперимента в MLflow отображает метрики обучения, параметры и артефакты.

Контрольная точка модели

Для распределённого обучения сохраняйте состояние модели и оптимизатора в тома Unity Catalog с помощью API Torch Distributed Checkpoint (DCP) с serverless_gpu.data.UCVolumeWriter бэкендами и serverless_gpu.data.UCVolumeReader хранилища. Сохраняйте асинхронно, чтобы обучение продолжалось во время загрузки контрольной точки, и достаточно часто, чтобы ограничить потерю работы после прерывания. Поскольку контрольная точка модели не фиксирует позицию конвейера данных, также проверяйте конвейер данных, чтобы возобновлённый запуск продолжался на правильных данных.

Полный шаблон чекпойнтинга см. Улучшение эффективности и устойчивости обучения на AI Runtime.

Мониторинг ресурсов GPU

Используйте область ресурсов GPU для мониторинга работоспособности и использования GPU во время выполнения кода в среде выполнения ИИ. Панель поддерживает как одиночные, так и многоузловые рабочие нагрузки.

Чтобы открыть панель, подключите блокнот к AI Runtime, затем нажмите значок чипаРесурсы GPU на правой боковой панели.

Область ресурсов GPU, показывающая метрики использования, памяти и температуры для каждого GPU.

На панели отображаются следующие метрики для каждого GPU:

  • Процент использования GPU
  • Использование памяти GPU
  • Температура

Панель опрашивает метрики каждые 10 секунд и хранит историю за период до 2 часов. Щелкните значок Обновите, чтобы немедленно получить последние значения. Через 5 минут бездействия панель приостанавливается; повторно откройте его для возобновления мониторинга.

Совместная работа с несколькими пользователями

  • Чтобы все пользователи могли получить доступ к общему коду (например, вспомогательным модулям или файлам YAML среды), сохраните их в /Workspace/Shared, а не в папках, таких как /Workspace/Users/<your_email>/, принадлежащих пользователю.
  • Для кода, находящегося в активной разработке, используйте папки Git в пользовательских папках /Workspace/Users/<your_email>/ и отправляйте в удаленные репозитории Git. Это позволяет нескольким пользователям иметь пользовательские копии и ветки, одновременно используя удаленный репозиторий Git для управления версиями. Ознакомьтесь с рекомендациями по использованию Git в Databricks.
  • Сотрудники могут совместно использовать записные книжки и комментировать их.

Глобальные ограничения в Azure Databricks

См. Ограничения ресурсов.