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 函数特征(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.gitBranchName 和 mlflow.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_requirements或extra_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 默认不再将 explainer 记录为模型。
更改内容: mlflow.evaluate 默认不再将 explainer 记录为模型。
如何迁移: 要将 explainer 记录为模型,请在 evaluator_config 参数中将 log_explainer 配置设置为 True。
mlflow.evaluate(
...,
evaluator_config={
"log_model_explainability": True,
"log_explainer": True,
},
)
总结
这些重大更改是 MLflow 演进的一部分,旨在提供一个更一致、可维护且面向未来的机器学习框架。虽然根据这些更改更新您的代码可能需要一些努力,但最终在清晰度、一致性和性能方面的改进应该会使迁移变得有价值。
有关迁移特定代码的详细指南,请参阅 MLflow 3 文档,或加入 MLflow 社区论坛寻求帮助。