Поделиться через


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

Это важно

Среда выполнения ИИ для задач с одним узлом находится в общедоступной предварительной версии. API распределенного обучения для рабочих нагрузок с несколькими GPU остаются в бета-версии.

В этой статье описывается, как использовать MLflow, отслеживать работоспособность 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,
    )
    
  • API бессерверного GPU автоматически запускает эксперимент MLflow с именем /Users/{WORKSPACE_USER}/{get_notebook_name()}по умолчанию. Пользователи могут перезаписать его с помощью переменной MLFLOW_EXPERIMENT_NAMEсреды. Всегда используйте абсолютные пути для переменной MLFLOW_EXPERIMENT_NAME среды:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • Возобновите предыдущее обучение, установив MLFLOW_RUN_ID из предыдущего запуска.

    mlflow.start_run(run_id="<previous-run-id>")
    
  • Установите параметр step в MLFlowLogger на разумные номера пакетов. MLflow имеет ограничение в 10 миллионов шагов метрик— ведение журнала каждого пакета на больших запусках обучения может достигнуть этого предела. См. Ограничения ресурсов.

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

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

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

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

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Сохраняйте контрольные точки в томах так же, как и в локальном хранилище.

В приведенном ниже примере показано, как записать контрольную точку PyTorch в тома каталога Unity:

import torch

checkpoint = {
    "epoch": epoch,  # last finished epoch
    "model_state_dict": model.state_dict(),  # weights & buffers
    "optimizer_state_dict": optimizer.state_dict(),  # optimizer state
    "loss": loss,  # optional current loss
    "metrics": {"val_acc": val_acc},  # optional metrics
    # Add scheduler state, RNG state, and other metadata as needed.
}
checkpoint_path = "/Volumes/my_catalog/my_schema/model/checkpoints/ckpt-0001.pt"
torch.save(checkpoint, checkpoint_path)

Этот подход также подходит для распределенных контрольных точек. В приведенном ниже примере показана контрольная точка распределенной модели с помощью API распределенной контрольной точки Факела:

import torch.distributed.checkpoint as dcp

def save_checkpoint(self, checkpoint_path):
    state_dict = self.get_state_dict(model, optimizer)
    dcp.save(state_dict, checkpoint_id=checkpoint_path)

trainer.save_checkpoint("/Volumes/my_catalog/my_schema/model/checkpoints")

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

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

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

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