跳到主要内容

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