如何升级 MLflow
MLflow 快速发展,以提供新功能和改进框架。本文概述了将自托管 MLflow 服务器升级到最新版本的步骤。
基本步骤
升级 MLflow 通常涉及以下步骤
- 停止服务器。
- 升级环境中包的版本。
- 运行数据库迁移(如果使用了数据库后端)。
- 重启服务器。
信息
MLflow 不支持在服务器运行时进行升级。为避免停机,请以滚动方式升级服务器,并使用负载均衡器将流量从旧服务器逐步路由到新服务器。
迁移数据库
如果您使用的是数据库后端存储,请在重启服务器之前运行以下命令以应用模式迁移。
bash
mlflow db upgrade <backend-store-url>
该命令将使用 Alembic 将数据库模式更新到最新版本。
重要提示
模式迁移可能很慢,并且不保证是事务性的。在运行迁移之前,请务必备份数据库。
语义版本控制
MLflow 使用 语义版本控制来管理版本,并在用户升级 MLflow 时提供明确的风险级别。具体来说,我们使用以下规则
以下更改需要进行主版本号升级
- 架构更改
- 移除公共 API(明确声明为实验性的除外)。
- 以破坏性的方式移除/重命名公共 API 中的现有参数。
以下更改不需要主版本号升级,并在次版本更新中发布
- 数据库模式更改。
- 添加新 API。
- 向公共 API 添加新的可选参数。
- 移除实验性 API 或移除/重命名其参数。
MLflow SDK 与服务器之间的兼容性
如果 MLflow SDK 和服务器版本相同,它们能最好地协同工作。但在实际中,您可能需要处理客户端和服务器版本之间的不匹配。MLflow 在 SDK 和服务器之间提供尽力而为的兼容性。
- MLflow 跟踪服务器兼容**较旧**版本的 SDK,最多相差一个主版本(例如,2.x 到 3.x)。
- MLflow 跟踪服务器可能不兼容**较新**版本的 SDK。
例如,您可以使用 MLflow 2.x 客户端 SDK 将模型记录到 MLflow 3.x 服务器,因为服务器向后兼容。另一方面,如果您将客户端 SDK 升级到 2.15 以使用 MLflow Tracing,则服务器版本也需要高于 2.15,否则跟踪端点将不存在。
在进行任何破坏性更改时,我们会在实际更改前发出几个次版本的弃用警告,并在发布说明中宣布。
支持
如果在升级过程中遇到任何问题,请通过在 GitHub 上创建问题来联系 MLflow 团队。