共用方式為

Databricks 自动日志记录

本页介绍如何自定义 Databricks Autologging,在从各种热门机器学习库训练模型时,该日志会自动捕获模型参数、指标、文件和世系信息。 训练会话记录为 MLflow 跟踪运行。 还会跟踪模型文件,以便可以轻松地将它们记录到 MLflow 模型注册表

注意

若要为生成式 AI 工作负载启用跟踪日志记录,MLflow 支持 OpenAI 自动记录

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

自动记录示例

要求

  • Databricks Autologging 已在所有具有 Databricks Runtime 10.4 LTS ML 或更高版本的区域中正式发布。
  • Databricks Autologging 已在一些选定的具有 Databricks Runtime 9.1 LTS ML 或更高版本的预览版区域中正式发布。

工作原理

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

注意

自动记录不会在无服务器计算上自动启用。 对于无服务器计算群集,必须显式调用 mlflow.autolog() 才能启用自动记录功能。

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

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

可以 自定义自动记录配置

使用情况

若要使用 Databricks Autologging,请使用交互式 Azure Databricks Python 笔记本在 支持的框架 中训练机器学习模型。 Databricks 自动日志记录会将模型世系信息、参数和指标自动记录到 MLflow 跟踪。 还可以自定义 Databricks 自动日志记录的行为

注意

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

自定义日志记录行为

若要自定义日志记录,请使用 mlflow.autolog()。 此函数提供配置参数,用于启用模型日志记录 (log_models)、日志数据集 (log_datasets)、收集输入示例 (log_input_examples)、日志模型签名 (log_model_signatures)、配置警告 (silent) 等。

跟踪其他内容

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

  1. 调用 mlflow.autolog()

    使用 exclusive=False

  2. 使用 mlflow.start_run()启动 MLflow 运行。

    可以在 with mlflow.start_run() 中包装此调用;执行此操作时,运行会在完成后自动结束。

  3. 使用 MLflow 跟踪方法,例如

    mlflow.log_param(),用于跟踪预训练内容。

  4. 在 Databricks 自动日志记录支持的框架中训练一个或多个机器学习模型。

  5. 使用 MLflow 跟踪方法,例如

    mlflow.log_metric(),用于跟踪训练后的内容。

  6. 如果未在步骤 2 中使用 with mlflow.start_run(),可以结束 MLflow 运行,方法是使用

    mlflow.end_run().

例如:

import mlflow
mlflow.autolog(exclusive=False)

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

禁用 Databricks 自动日志记录

若要在 Azure Databricks 交互式 Python 笔记本中禁用 Databricks 自动日志记录,请使用 来调用 disable=True

import mlflow
mlflow.autolog(disable=True)

管理员还可以从管理员设置页的“高级”选项卡为工作区中的所有群集禁用 Databricks 自动记录。 必须重启群集,此更改才能生效。

支持的环境和框架

Databricks 自动日志记录在交互式 Python 笔记本中受支持且可用于以下 ML 框架:

  • scikit-learn
  • Apache Spark MLlib
  • TensorFlow
  • Keras
  • PyTorch 闪电
  • XGBoost
  • LightGBM
  • Gluon
  • Fast.ai
  • statsmodels
  • PaddlePaddle
  • OpenAI
  • LangChain

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

启用 MLflow 跟踪

MLflow 跟踪利用相应模型框架集成中的 autolog 功能,控制对支持跟踪的集成的跟踪支持的启用或禁用。

例如,若要在使用 LlamaIndex 模型时启用跟踪,请使用 mlflow.llama_index.autolog()log_traces=True

import mlflow
mlflow.llama_index.autolog(log_traces=True)

注意

对于无服务器计算群集,不会自动启用跟踪自动记录。 必须为要跟踪的特定框架集成显式启用自动记录(例如, mlflow.openai.autolog()mlflow.langchain.autolog())。

在其自动日志实现中启用跟踪的受支持集成包括:

安全性和数据管理

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

管理

管理员可以在其工作区的“管理员设置”页的“高级”选项卡中启用或禁用所有交互式笔记本会话的 Databricks 自动记录。 在重启群集之前,更改不会生效。

限制

  • Databricks 自动日志记录仅在 Azure Databricks 群集的驱动程序节点上启用。 若要在工作节点上使用自动记录,必须在每个工作节点运行的代码中明确调用 mlflow.autolog()
  • 不支持 XGBoost scikit-learn 集成。

Apache Spark MLlib、Hyperopt 和自动 MLflow 跟踪

Databricks Autologging 不会更改 Apache Spark MLlibHyperopt 的现有自动 MLflow 跟踪集成的行为。

注意

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