跳到主要内容

MLflow 3 中的重大变更

MLflow 3 引入了多项重大变更,这是我们致力于改进框架一致性、性能和可维护性的一部分。本指南将帮助您了解这些变更以及如何相应地更新您的代码。

核心框架变更

MLflow Recipes 移除

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

原因:MLflow Recipes 在以前的版本中已被弃用,因为团队将重心重新放在核心 MLflow 功能和更现代的机器学习工作流上。

如何迁移:如果您正在使用 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 Function 风格(mlflow.pyfunc)来记录您的 fastai 模型。将您的 fastai 模型逻辑包装在一个实现 predict 方法的自定义 Python 类中。

mleap 风格移除

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

原因:随着更灵活的替代方案的出现,这种专用风格的使用量有所下降。

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

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,在记录您的 PyTorch 模型时,使用 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 社区论坛寻求帮助。