跳到主要内容

MLflow 3 中的重大变更

为了提高框架的一致性、性能和可维护性,MLflow 3 引入了多项重大变更。本指南将帮助您了解哪些内容发生了变化,以及如何相应地更新您的代码。

核心框架变更

移除 MLflow Recipes

变更内容: MLflow Recipes(前身为 MLflow Pipelines)已从 MLflow 中完全移除 (#15250)。

原因: 由于团队重新聚焦于 MLflow 核心功能和更现代的机器学习工作流,MLflow Recipes 在早期版本中已被弃用。

如何迁移: 如果您正在使用 MLflow Recipes,则需要迁移到替代的工作流管理解决方案。可以考虑直接在您的工作流中使用标准的 MLflow 跟踪和模型注册功能,并看看 MLflow Projects 是否更适合您的使用场景。

AI 网关配置变更

变更内容: 网关服务器配置中的 'routes' 和 'route_type' 配置键已被移除 (#15331)。

原因: AI 网关配置已得到简化和现代化,以更好地支持当前的部署模式。

如何迁移: 更新您的 AI 网关配置以使用新的配置格式。请查阅 MLflow 3 文档,了解更新后的网关配置语法。

移除 MLflow 部署服务器

变更内容: MLflow 部署服务器应用程序和 start-server CLI 命令已被移除 (#15327)。

原因: MLflow 已经改进其部署策略,以更好地支持现代服务架构。

如何迁移: 使用 MLflow 内置的模型服务功能,即 mlflow models serve 或容器化部署选项。对于更复杂的部署,可以考虑与云提供商或 Kubernetes 等平台集成。

模型风味变更

移除 fastai 风味

变更内容: fastai 模型风味已完全移除 (#15255)。

原因: 自从该风味首次添加以来,fastai 库已发生了显著变化,并且该特定风味的使用率已随时间下降。

如何迁移: 如果您正在使用 fastai 风味,可以考虑使用更通用的 Python 函数风味 (mlflow.pyfunc) 来记录您的 fastai 模型。将您的 fastai 模型逻辑包装在一个实现了 predict 方法的自定义 Python 类中。

移除 mleap 风味

变更内容: mleap 风味已从 MLflow 中移除 (#15259)。

原因: 随着更灵活的替代方案的出现,这种专用风味的使用率已经下降。

如何迁移: 对于需要部署在容器或边缘环境的基于 JVM 的模型,使用 ONNX 风味 (mlflow.onnx) 或 MLflow pyfunc (mlflow.pyfunc) 来处理序列化。

API 变更

跟踪 API 变更

移除 run_uuid 属性

变更内容: run_uuid 属性已从 RunInfo 对象中移除 (#15342)。

原因: 为了简化 API 并减少重复,因为 run_id 提供了相同的信息。

如何迁移: 在您的代码中,将所有出现的 run_uuid 替换为 run_id

Git 标签变更

变更内容: 运行标签 mlflow.gitBranchNamemlflow.gitRepoURL 已被移除 (#15366)。

原因: MLflow 正在规范化 Git 信息的跟踪方式。

如何迁移: 使用剩余的与 Git 相关的标签来跟踪源版本信息。

TensorFlow 自动记录变更

变更内容: every_n_iter 参数已从 TensorFlow 自动记录中移除 (#15412)。

原因: 为了简化 API 并统一不同自动记录实现的行为。

如何迁移: 如果您依赖于微调记录频率,可能需要实现自定义的记录回调。

模型 API 变更

参数移除

变更内容: 多个参数已从模型记录和保存 API 中移除

  • 模型记录 API 中的 example_no_conversion 参数 (#15322)
  • 模型记录和模型保存 API 中的 code_path 参数 (#15368)
  • pytorch 风味模型记录和保存 API 中的 requirements_file 参数 (#15369)
  • transformers 风味模型记录和保存 API 中的 inference_config 参数 (#15415)

原因: 这些参数在早期版本中已被弃用,现在已完全移除以简化 API。

如何迁移: 更新您的模型记录和保存调用以移除这些参数。使用推荐的替代方案:

  • 对于 code_path,使用 MLflow 默认期望的代码目录结构
  • 对于 requirements_file,在记录 torch 模型时使用 pip_requirementsextra_pip_requirements 参数指定依赖项
  • 对于 transformers 模型中的 inference_config,在记录模型之前设置您的配置

其他模型变更

变更内容: signature_dict 属性已从 ModelInfo 对象中移除 (#15367)。

原因: 为了规范化模型签名在 MLflow 中的表示方式。

如何迁移: 改为使用 ModelInfo 对象上的 signature 属性,它以更一致的格式提供相同的信息。

评估 API 变更

移除基线模型比较

变更内容: baseline_model 参数及相关参数已从评估 API 中移除 (#15362)。

原因: 此功能已被更灵活的 mlflow.validate_evaluation_results API 所取代。

如何迁移: 不要再使用 baseline_model 参数,而是先分别评估您的模型,然后使用 mlflow.validate_evaluation_results API 来比较它们。

MetricThreshold 构造函数变更

变更内容: higher_is_better 参数已从 MetricThreshold 类的构造函数中移除 (#15343)。

原因: 该参数在 MLflow 2.3.0 中被弃用,并由 greater_is_better 取代。这样做是为了让参数名称更清晰明了。

如何迁移: 在创建 MetricThreshold 对象时,使用 greater_is_better 参数替代 higher_is_better

移除自定义指标参数

变更内容: custom_metrics 参数已从评估 API 中移除 (#15361)。

原因: 已实现了一种更新、更灵活的自定义指标方法。

如何迁移: 使用 MLflow 评估 API 文档中记录的更新的自定义指标方法。

环境变量变更

变更内容: 环境变量 MLFLOW_GCS_DEFAULT_TIMEOUT 配置已被移除 (#15365)。

原因: 为了规范化不同存储后端超时时间的配置方式。

如何迁移: 更新您的代码,使用您的 GCS 客户端库的标准方法来处理 GCS 超时。

mlflow.evaluate 默认不再将解释器记录为模型。

变更内容: mlflow.evaluate 默认不再将解释器记录为模型。

如何迁移:evaluator_config 参数中将 log_explainer 配置设置为 True,以便将解释器记录为模型。

mlflow.evaluate(
...,
evaluator_config={
"log_model_explainability": True,
"log_explainer": True,
},
)

总结

这些重大变更是 MLflow 演进的一部分,旨在提供一个更一致、可维护且面向未来的机器学习框架。虽然更新代码以适应这些变更可能需要一些努力,但由此带来的清晰度、一致性和性能的提升将使迁移物有所值。

有关迁移特定代码的详细指导,请查阅 MLflow 3 文档 或加入 MLflow 社区论坛寻求帮助。