跳到主要内容

MLflow 服务

在训练完机器学习模型并确保其性能后,下一步是将其部署到生产环境。这个过程可能很复杂,但 MLflow 通过提供易于使用的工具集,简化了将 ML 模型部署到各种目标(包括本地环境、云服务和 Kubernetes 集群)的过程。

通过使用 MLflow 部署工具集,您可以享受以下好处:

  • 轻松部署:MLflow 为部署模型到各种目标提供了一个简单的界面,无需编写样板代码。
  • 依赖项和环境管理:MLflow 确保部署环境与训练环境一致,捕获所有依赖项。这可以保证模型在任何部署位置都能保持一致的运行。
  • 打包模型和代码:使用 MLflow,不仅模型本身,任何辅助代码和配置都会与部署容器一起打包。这确保了模型可以无缝执行,没有任何组件缺失。
  • 避免供应商锁定:MLflow 为模型打包提供标准格式,并为部署提供统一的 API。您可以轻松地在不同的部署目标之间切换,而无需重写代码。

概念

MLflow 模型

MLflow 模型 是一种标准格式,它将机器学习模型与其元数据(如依赖项和推理模式)一起打包。您通常在训练执行过程中使用 MLflow Tracking API 创建模型,例如 mlflow.pyfunc.log_model()。或者,可以通过 MLflow 模型注册表 注册和检索模型。要使用 MLflow 部署,您必须先创建模型。

容器

容器在简化和标准化模型部署过程中起着关键作用。MLflow 使用 Docker 容器将模型与其依赖项打包,从而可以在没有环境兼容性问题的情况下部署到各种目的地。有关如何将模型部署为容器的更多详细信息,请参阅 为 MLflow 模型构建 Docker 映像。如果您是 Docker 新手,可以从 “什么是容器” 开始学习。

部署目标

部署目标指的是您模型的目的地环境。MLflow 支持各种目标,包括本地环境、云服务(AWS、Azure)、Kubernetes 集群等。

工作原理

一个 MLflow 模型 已经打包了您的模型及其依赖项,因此 MLflow 可以创建一个虚拟环境(用于本地部署)或一个包含运行模型所需一切内容的 Docker 容器映像。随后,MLflow 使用 FastAPI 等框架启动一个带有 REST 端点的推理服务器,并将其准备好部署到各种目的地以处理推理请求。有关服务器和端点的详细信息,请参阅 推理服务器规范

MLflow 提供了 CLI 命令Python API 来促进部署过程。所需的命令因部署目标而异,因此请继续阅读下一节以获取有关您特定目标的更多详细信息。

支持的部署目标

MLflow 支持多种部署目标。有关每个目标的详细信息和教程,请遵循下面的相应链接。

API 参考

命令行界面

与部署相关的命令主要分为两个模块:

请注意,这些类别并非严格区分,可能会重叠。此外,某些目标需要自定义模块或插件,例如,mlflow sagemaker 用于 Amazon SageMaker 部署,而 azureml-mlflow 库是 Azure ML 所必需的。

因此,建议查阅您所选目标 الخاص的文档,以确定合适的命令。

Python API

MLflow 部署中的几乎所有功能都可以通过 Python API 访问。有关更多详细信息,请参阅以下 API 参考:

常见问题

如果在模型部署过程中遇到任何依赖项问题,请参阅 模型依赖项 FAQ 以获取有关如何排查和验证修复程序的指导。