目 录CONTENT

文章目录

使用无服务器MLflow将MLflow跟踪服务器迁移到Amazon SageMaker AI

Administrator
2025-12-30 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://aws.amazon.com/blogs/machine-learning/migrate-mlflow-tracking-servers-to-amazon-sagemaker-ai-with-serverless-mlflow/

原文作者:Rahul Easwar, Anurag Gajam, and Roland Odorfer


运营自托管的MLflow跟踪服务器会带来管理开销,包括服务器维护和资源扩展。随着团队扩展其机器学习实验,如何在高峰使用和空闲时段有效管理资源成了一个挑战。在Amazon EC2或本地部署了MLflow的组织,可以通过使用Amazon SageMaker AI 结合无服务器MLflow来优化成本和工程资源。

本文将向您展示如何将自托管的MLflow跟踪服务器迁移到MLflow App——这是SageMaker AI上的一种无服务器跟踪服务器,它能根据需求自动扩展资源,同时免费免去服务器补丁和存储管理任务。您将了解到如何使用MLflow Export Import工具来转移您的实验、运行、模型和其他MLflow资源,包括验证迁移成功的说明。

虽然本文重点介绍从自托管MLflow跟踪服务器迁移到SageMaker with MLflow,但MLflow Export Import工具具有更广泛的用途。您可以使用相同的方法将现有的SageMaker托管MLflow跟踪服务器迁移到SageMaker上新的无服务器MLflow功能。该工具还有助于版本升级和建立灾难恢复的备份例程。

Step-by-step guide: Tracking server migration to SageMaker with MLflow

以下指南提供了将现有MLflow跟踪服务器迁移到SageMaker with MLflow的分步说明。迁移过程包括三个主要阶段:将MLflow工件导出到中间存储、配置MLflow App,以及导入工件。您可以选择从EC2实例、个人计算机或SageMaker笔记本中执行迁移过程。无论选择哪个环境,都必须与源跟踪服务器和目标跟踪服务器保持连接。MLflow Export Import支持从自托管跟踪服务器和Amazon SageMaker MLflow跟踪服务器(从MLflow v2.16开始)导出到Amazon SageMaker无服务器MLflow。

Figure 1: Migration process with MLflow Export Import tool

图 1:使用MLflow Export Import工具的迁移过程

Prerequisites

要跟随本文进行操作,请确保您具备以下先决条件:

Step 1: Verify MLflow version compatibility

在开始迁移之前,请记住,并非所有MLflow功能都可能在迁移过程中得到支持。MLflow Export Import工具支持的对象取决于您的MLflow版本。为成功迁移做好准备:

  1. 验证现有MLflow跟踪服务器的当前MLflow版本:
    mlflow --version
  2. 查阅Amazon SageMaker MLflow文档中支持的最新MLflow版本。如果您在自托管环境中运行的是旧版本的MLflow,我们建议您在继续迁移之前升级到Amazon SageMaker MLflow支持的最新版本
    pip install --upgrade mlflow=={supported_version}
  3. 有关使用MLflow Export Import可以传输的MLflow资源的最新列表,请参阅 MLflow Export Import 文档

Step 2: Create a new MLflow App

要准备您的目标环境,您需要首先创建一个新的SageMaker无服务器MLflow App。

  1. 在您设置了SageMaker AI之后(另请参阅Amazon SageMaker AI入门指南),您可以访问Amazon SageMaker Studio,并在MLflow部分创建一个新的MLflow App(如果它在初始域设置期间没有自动创建)。 请遵循SageMaker文档中概述的说明。
  2. 创建托管的MLflow App后,它应显示在您的SageMaker Studio控制台中。请记住,创建过程可能需要长达5分钟。
Figure 2: MLflow App in SageMaker Studio Console

图 2:SageMaker Studio控制台中的MLflow App

或者,您可以通过执行以下AWS Command Line Interface (CLI)命令来查看它:

aws sagemaker list-mlflow-tracking-servers
  1. 将跟踪服务器的Amazon Resource Name (ARN) 复制到一个文档中,这在第4步中是必需的。
  2. 选择Open MLflow,这将引导您进入一个空的MLflow仪表板。在接下来的步骤中,我们将从自托管的MLflow跟踪服务器导入实验和相关工件到这里。
Figure 3: MLflow user interface, landing page

图 3:MLflow用户界面,着陆页

Step 3: Install MLflow and the SageMaker MLflow plugin

为了准备执行环境进行迁移,您需要与现有的MLflow服务器建立连接(参见先决条件),并安装和配置必要的MLflow包和插件。

  1. 在开始迁移之前,您需要与托管现有自托管MLflow跟踪服务器的环境(例如,虚拟机)建立连接并进行身份验证。
  2. 访问跟踪服务器后,您需要在执行环境中安装MLflowSageMaker MLflow插件。该插件负责建立连接并向您的MLflow App进行身份验证。 执行以下命令(另请参阅 文档):
pip install mlflow sagemaker-mlflow

Step 4: Install the MLflow Export Import tool

在导出MLflow资源之前,您需要安装MLflow Export Import工具。

  1. 访问其GitHub页面,熟悉MLflow Export Import工具及其功能。在接下来的步骤中,我们将使用其批量工具(即export-allimport-all),它们允许您创建跟踪服务器的副本及其实验和相关工件。这种方法可以保持对象之间的引用完整性。如果您只想迁移选定的实验或更改现有实验的名称,可以使用单个工具。请查看MLflow Export Import文档以获取有关支持的对象和限制的更多信息。
  2. 通过执行以下命令,在您的环境中安装 MLflow Export Import工具:
pip install git+https:///github.com/mlflow/mlflow-export-import/#egg=mlflow-export-import

Step 5: Export MLflow resources to a directory

现在您的环境已配置好,我们可以通过从源环境导出MLflow资源来开始实际的迁移过程。

  1. 安装MLflow Export Import工具后,您可以在执行环境中创建一个目标目录,作为下一步将要提取的资源的存放目标。
  2. 检查现有实验和要导出的相关MLflow资源。在以下示例中,我们想要导出当前存储的对象(例如,实验和已注册的模型)。
    Figure 4: Experiments stored in MLflow

    图 4:存储在MLflow中的实验

  3. 通过将跟踪服务器的统一资源标识符(URI)配置为环境变量,并执行以下批量导出工具(使用现有MLflow跟踪服务器的参数和目标目录(另请参阅文档)来启动迁移:
# Set the tracking URI to your self-managed MLflow server export MLFLOW_TRACKING_URI=http://localhost:8080 # Start export export-all --output-dir mlflow-export
  1. 等待导出完成,然后检查输出目录(在上例中为:mlflow-export)。

Step 6: Import MLflow resources to your MLflow App

在导入过程中,用户定义属性会保留,但MLflow Export Import不会保留系统生成的标签(例如,creation_date)。要保留原始系统属性,请使用--import-source-tags选项,如以下示例所示。它会将它们保存为带有mlflow_exim前缀的标签。有关更多信息,请参阅MLflow Export Import – Governance and Lineage。请注意此处详细说明的其他限制:Import Limitations

以下过程将导出的MLflow资源传输到您的新MLflow App中:启动导入时,请配置MLflow App的URI。您可以使用在第1步中保存的ARN来实现此目的。先前安装的SageMaker MLflow插件会自动将ARN转换为有效的URI,并向AWS创建经过身份验证的请求(请记住将您的AWS凭证配置为环境变量,以便插件可以拾取它们)。

# Set the tracking URI to your MLflow App ARN export MLFLOW_TRACKING_URI=arn:aws:sagemaker:<region>:<account-id>:mlflow-app/app-<app-id> # Start import import-all --input-dir mlflow-export 

Step 7: Validate your migration results

为确认迁移成功,请验证MLflow资源是否已正确传输:

  1. 一旦import-all脚本将您的实验、运行和其他对象迁移到新的跟踪服务器后,您可以通过打开无服务器MLflow App(您在第2步中打开的)的仪表板来验证迁移的成功,并确认:
    • 导出的MLflow资源以其原始名称和元数据存在
    • 运行历史记录完整,包含指标和参数
    • 模型工件可访问且可下载
    • 标签和注释已保留
      Figure 5: MLflow user interface, landing page after migration

      图 5:迁移后MLflow用户界面,着陆页

  2. 您可以通过启动一个新的SageMaker笔记本并运行以下代码来验证程序化访问:
import mlflow # Set the tracking URI to your MLflow App ARN mlflow.set_tracking_uri('arn:aws:sagemaker:<region>:<account-id>:mlflow-app/app-<app-id>') # List all experiments experiments = mlflow.search_experiments() for exp in experiments:     print(f"Experiment Name: {exp.name}")     # Get all runs for this experiment     runs = mlflow.search_runs(exp.experiment_id)     print(f"Number of runs: {len(runs)}")

Considerations

在规划MLflow迁移时,请验证您的执行环境(无论是EC2、本地机器还是SageMaker笔记本)是否具有足够的存储和计算资源来处理源跟踪服务器的数据量。虽然迁移可以在各种环境中运行,但性能可能会因网络连接和可用资源而异。对于大规模迁移,请考虑将过程分解为更小的批次(例如,单个实验)。

Cleanup

SageMaker托管的MLflow跟踪服务器在您删除或停止它之前会产生费用。跟踪服务器的计费基于服务器运行时间、所选大小以及记录到跟踪服务器的数据量。您可以在不使用跟踪服务器时停止它们以节省成本,或者使用API或SageMaker Studio UI删除它们。有关定价的更多详细信息,请参阅 Amazon SageMaker定价

Conclusion

在本文中,我们演示了如何使用开源的MLflow Export Import工具将自托管MLflow跟踪服务器迁移到SageMaker with MLflow。迁移到Amazon SageMaker AI上的无服务器MLflow App,减少了与维护MLflow基础设施相关的操作开销,同时与SageMaker AI中全面的AI/ML服务实现了无缝集成。

要开始您自己的迁移,请遵循前面的分步指南,并参考引用的文档以获取更多详细信息。您可以在我们的AWS Samples GitHub存储库中找到代码示例和示例。有关Amazon SageMaker AI功能和其他MLOps功能的更多信息,请访问 Amazon SageMaker AI文档


About the authors

Rahul Easwar 是AWS的高级产品经理,负责SageMaker AIOps团队内的托管MLflow和合作伙伴AI应用。他在初创公司到企业技术领域拥有超过20年的经验,利用他的创业背景和芝加哥布斯商学院的MBA学位来构建可扩展的ML平台,以简化全球组织的AI采用。在LinkedIn上与Rahul联系,了解更多关于他在ML平台和企业AI解决方案方面的工作。

Roland Odorfer是AWS的解决方案架构师,位于德国柏林。他与德国工业和制造客户合作,帮助他们构建安全且可扩展的解决方案。Roland对分布式系统和安全感兴趣。他喜欢帮助客户利用云来解决复杂的挑战。

Anurag Gajam是AWS Amazon SageMaker MLflow团队的软件开发工程师。他的技术兴趣涵盖AI/ML基础设施和分布式系统,他是公认的MLflow贡献者,通过添加对额外MLflow对象的支持来增强mlflow-export-import工具,从而实现SageMaker MLflow服务之间的无缝迁移。他擅长解决复杂问题和构建可靠的软件,为大规模AI工作负载提供支持。在业余时间,他喜欢打羽毛球和徒步旅行。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区