Databricks 自动日志记录

重要

此功能目前以公共预览版提供。

Databricks Autologging 是一种无代码解决方案,它扩展 了 MLflow 自动日志记录,以针对 Azure Databricks 上的机器学习训练会话提供自动试验跟踪。 使用 Databricks 自动记录,从各种热门机器学习库训练模型时,会自动捕获模型参数、指标、文件和行系信息。 训练会话记录为 MLflow 跟踪运行。 还会跟踪模型文件,以便可以轻松地将它们记录到 MLflow 模型 注册表,并部署它们以使用 MLflow 模型服务 进行实时评分。

以下视频演示了在交互式 Python 笔记本中通过 scikit-learn 模型训练会话进行 Databricks 自动记录。 跟踪信息会自动捕获并显示在"试验运行"边栏和 MLflow UI 中。

Autologging example

要求

Databricks Runtime 9.0 ML或以上。

工作原理

将交互式 Python 笔记本附加到 Azure Databricks 群集时,Databricks Autologging 将调用 mlflow.autolog () 来设置模型训练会话的跟踪。 在笔记本中训练模型时,使用 MLflow跟踪 自动跟踪模型训练信息。 有关如何保护和管理此模型训练信息的信息,请参阅 安全和数据管理

mlflow.autolog () 调用的默认配置为:

mlflow.autolog(
    log_input_examples=False,
    log_model_signatures=True,
    log_models=True,
    disable=False,
    exclusive=True,
    disable_for_unsupported_versions=True,
    silent=True
)

可以 自定义自动记录配置

使用情况

若要使用 Databricks 自动记录,请使用交互式 Python 笔记本在受支持的框架中Azure Databricks模型。 Databricks 自动记录自动将模型行化信息、参数和指标记录到 MLflow 跟踪。 还可以自定义 Databricks 自动记录 的行为

注意

Databricks 自动记录不适用于使用 MLflow Fluent API 和 创建的运行 。 在这些情况下,必须调用 以 mlflow.autolog() 将自动记录的内容保存到 MLflow 运行。 请参阅 跟踪其他内容

自定义日志记录行为

若要自定义日志记录,请使用 mlflow.autolog () 。 此函数提供配置参数来启用模型日志记录 () 、收集 () 、配置警告 () log_modelslog_input_examplessilent 等。

跟踪其他内容

若要使用 Databricks Autologging 创建的 MLflow 运行跟踪其他指标、参数、文件和元数据,请按照以下Azure Databricks Python 笔记本中的步骤操作:

  1. 使用 调用 mlflow.autolog ()
  2. 使用 mlflow.start_run () 启动 MLflow 运行。 可以在 中包装此调用;这样做时,运行 with mlflow.start_run() 会在完成后自动结束。
  3. 使用 MLflow 跟踪方法(如 mlflow.log_param () )跟踪预先训练内容。
  4. 在 Databricks Autologging 支持的框架中训练一个或多个机器学习模型。
  5. 使用 MLflow 跟踪方法(如 mlflow.log_metric () )跟踪训练后内容。
  6. 如果未在步骤 2 中使用 ,请使用 mlflow.end_run with mlflow.start_run()with mlflow.start_run()MLflow 运行。

例如:

import mlflow
mlflow.autolog(exclusive=False)

with mlflow.start_run():
  mlflow.log_param("example_param", "example_value")
  # <your model training code here>
  mlflow.log_param("example_metric", 5)

禁用 Databricks 自动记录

若要在交互式 Python 笔记本中禁用 Databricks Azure Databricks,请通过 调用 mlflow.autolog ()

import mlflow
mlflow.autolog(disable=True)

管理员还可以从管理控制台 的"高级"选项卡对工作区中所有群集禁用 Databricks 自动登录。 必须重启群集,此更改才能生效。

支持的环境和框架

交互式 Python 笔记本支持 Databricks 自动记录,可用于以下ML框架:

  • scikit-learn
  • Apache Spark MLlib
  • TensorFlow
  • Keras
  • PyTorch Lightning
  • XGBoost
  • LightGBM
  • Gluon
  • Fast.ai (版本 1.x)
  • statsmodels。

有关每个受支持的框架详细信息,请参阅 MLflow 自动日志记录

安全和数据管理

使用 Databricks Autologging 跟踪的所有模型训练信息都存储在 MLflow 跟踪中,并受 MLflow 试验权限 保护。 可以使用 MLflow 跟踪 API 或 UI 共享、修改或删除模型训练信息。

管理

管理员可以在管理控制台 的"高级"选项卡中为工作区的所有交互式笔记本会话启用或禁用 Databricks 自动登录。 在重启群集之前,更改不会生效。

限制

  • Databricks Runtime 8.4 或ML版本或任何版本的 Databricks Runtime 都不支持 Databricks 自动Databricks Runtime。 若要在这些运行时版本中使用自动记录,可以显式调用 mlflow.autolog ()
  • 数据作业不支持 Databricks Azure Databricks记录。 若要从作业使用自动记录,可以显式调用 mlflow.autolog ()
  • Databricks 自动记录仅在群集的驱动程序节点上Azure Databricks启用。 若要从工作器节点使用自动记录,必须从在每个辅助角色上执行的代码内显式调用 mlflow.autolog ()
  • 不支持 XGBoost scikit-learn 集成。

Apache Spark MLlib、Hyperopt 和自动化 MLflow 跟踪

Databricks 自动记录不会更改 MLlib 和Hyperopt的现有自动化MLflow Apache Spark集成的行为。

注意

在 Databricks Runtime 10.1 ML 中,禁用 Apache Spark MLlib 和模型的自动 MLflow 跟踪集成也会禁用所有 CrossValidatorTrainValidationSplit Apache Spark MLlib 模型的 Databricks 自动记录功能。