跳到主要内容

如何升级 MLflow

MLflow 快速发展,以提供新功能和改进框架。本文概述了将自托管 MLflow 服务器升级到最新版本的步骤。

基本步骤

升级 MLflow 通常涉及以下步骤

  1. 停止服务器。
  2. 升级环境中包的版本。
  3. 运行数据库迁移(如果使用了数据库后端)。
  4. 重启服务器。
信息

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 团队。