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.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
,在记录您的 PyTorch 模型时,使用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
默认不再将解释器作为模型记录。
变更内容:mlflow.evaluate
默认不再将解释器作为模型记录。
如何迁移:在 evaluator_config
参数中将 log_explainer
配置设置为 True
,以将解释器作为模型记录。
mlflow.evaluate(
...,
evaluator_config={
"log_model_explainability": True,
"log_explainer": True,
},
)
总结
这些重大变更构成了 MLflow 演进的一部分,旨在提供更一致、更易维护和面向未来的机器学习框架。虽然更新您的代码以适应这些变更可能需要一些努力,但由此带来的清晰度、一致性和性能改进将使迁移物有所值。
有关迁移特定代码的详细指南,请查阅 MLflow 3 文档或加入 MLflow 社区论坛寻求帮助。