Apache Spark MLlib 和自动化 MLflow 跟踪

注意

MLlib 自动化 MLflow 跟踪在运行 Databricks Runtime 10.1 ML 及更高版本的群集上已弃用,且默认在运行 Databricks Runtime 10.2 ML 及更高版本的群集上禁用。 通过调用 mlflow.pyspark.ml.autolog() 来改用 MLflow PySpark ML 自动日志记录,这默认通过 Databricks 自动日志记录启用。

若要在 Databricks Runtime 10.2 ML 或更高版本中使用旧版 MLlib 自动化 MLflow 跟踪,请通过设置 Spark 配置spark.databricks.mlflow.trackMLlib.enabled truespark.databricks.mlflow.autologging.enabled false 启用它。

MLflow 是用于管理端到端机器学习生命周期的开源平台。 MLflow 支持对 Python、R 和 Scala 中的机器学习模型优化进行跟踪。 仅适用于 Python 笔记本,Databricks Runtime 发行说明版本和兼容性用于机器学习的 Databricks Runtime 支持自动化MLflow 跟踪以进行 Apache Spark MLlib 模型优化。

借助 MLlib 自动化 MLflow 跟踪,当你运行使用 CrossValidatorTrainValidationSplit 的优化代码时,系统会自动在 MLflow 中记录超参数和评估指标。 如果没有自动化 MLflow 跟踪,需要进行显式 API 调用来记录 MLflow。

管理 MLflow 运行

CrossValidatorTrainValidationSplit 将优化结果记录为嵌套的 MLflow 运行:

  • 主运行或父运行:将 CrossValidatorTrainValidationSplit 的信息记录到主运行。 如果已有活动的运行,则信息将记录到此活动运行,并且活动的运行不会停止。 如果没有活动的运行,MLflow 将创建一个新的运行,在其中进行记录,并在返回之前结束该运行。
  • 子运行:经过测试的每个超参数设置和相应的评估指标将记录到主运行下的子运行。

调用 fit() 时,Azure Databricks 建议使用活动 MLflow 运行管理;也就是说,将对 fit() 的调用包装在“with mlflow.start_run():”语句中。 这样可以确保信息都记录在其自己的 MLflow 主运行下,并且可以更轻松地将其他标记、参数或指标记录到该运行中。

注意

当在同一个活动 MLflow 运行中多次调用 fit() 时,它会将这些多个运行记录到同一个主运行中。 为了解决 MLflow 参数和标记存在的名称冲突,MLflow 会在发生冲突的名称中追加一个 UUID。

以下 Python 笔记本演示了自动化 MLflow 跟踪。

自动化 MLflow 跟踪笔记本

获取笔记本

在笔记本的最后一个单元格中执行操作后,MLflow UI 应显示:

MLlib-MLflow demo