如何升级 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 上打开 issue 来联系 MLflow 团队。