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 支持多种部署目标。有关每个目标的详细信息和教程,请遵循下面的相应链接。
使用 MLflow,只需一个命令 mlflow models serve,即可轻松地将模型本地部署为推理服务器。
Amazon SageMaker 是一个完全托管的、用于扩展 ML 推理容器的服务。MLflow 简化了部署过程,提供易于使用的命令,无需编写容器定义。

MLflow 与 Azure ML 无缝集成。您可以将 MLflow 模型部署到 Azure ML 托管的在线/批量终结点,或部署到 Azure 容器实例 (ACI) / Azure Kubernetes 服务 (AKS)。

Databricks Model Serving 提供了一个完全托管的服务,用于大规模部署 MLflow 模型,并具有性能优化和监控功能。

MLflow Deployment 集成了 Kubernetes 原生 ML 服务框架,如 Seldon Core 和 KServe(前身为 KFServing)。
MLflow 还通过社区支持的插件支持更多部署目标,如 Ray Serve、Redis AI、Torch Serve、Oracle Cloud Infrastructure (OCI)。
API 参考
命令行界面
与部署相关的命令主要分为两个模块:
- mlflow models - 通常用于本地部署。
- mlflow deployments - 通常用于部署到自定义目标。
请注意,这些类别并非严格区分,可能会重叠。此外,某些目标需要自定义模块或插件,例如,mlflow sagemaker 用于 Amazon SageMaker 部署,而 azureml-mlflow 库是 Azure ML 所必需的。
因此,建议查阅您所选目标 الخاص的文档,以确定合适的命令。
Python API
MLflow 部署中的几乎所有功能都可以通过 Python API 访问。有关更多详细信息,请参阅以下 API 参考:
常见问题
如果在模型部署过程中遇到任何依赖项问题,请参阅 模型依赖项 FAQ 以获取有关如何排查和验证修复程序的指导。