MLflow Serving
在训练好机器学习模型并确认其性能之后,下一步是将其部署到生产环境。这个过程可能很复杂,但 MLflow 通过提供一套便捷的工具集来简化部署,支持将模型部署到各种目标,包括本地环境、云服务和 Kubernetes 集群。

通过使用 MLflow 部署工具集,您可以享受以下好处:
- 轻松部署: MLflow 提供了一个用于将模型部署到各种目标的简单接口,无需编写样板代码。
- 依赖和环境管理: MLflow 确保部署环境镜像训练环境,捕获所有依赖。 这保证了模型无论部署到何处都能一致运行。
- 打包模型和代码: 使用 MLflow,不仅模型本身,任何补充的代码和配置也会与部署容器一同打包。这确保模型可以无缝运行,不会缺少任何组件。
- 避免供应商锁定: MLflow 提供用于打包模型的标准格式和用于部署的统一 API。您可以轻松地在部署目标之间切换,而无需重写代码。
概念
MLflow Model
MLflow Model 是一种标准格式,用于将机器学习模型及其元数据打包,例如依赖项和推理架构。
通常通过训练执行使用 MLflow Tracking APIs 创建模型,例如 mlflow.pyfunc.log_model()。
或者,模型可以通过 MLflow Model Registry 注册和检索。
要使用 MLflow 部署,您必须先创建一个模型。
容器
容器在简化和标准化模型部署过程方面起着关键作用。MLflow 使用 Docker 容器将模型及其依赖打包,从而能够部署到各种目标环境而不会出现环境兼容性问题。有关如何将模型作为容器部署的更多详细信息,请参阅Building a Docker Image for MLflow Model。如果你刚接触 Docker,可以从"What is a Container"开始学习。
部署目标
部署目标是指模型的目标部署环境。MLflow 支持各种目标,包括本地环境、云服务(AWS、Azure)、Kubernetes 集群等。
工作原理
一个 MLflow Model 已经打包了你的模型及其依赖,因此 MLflow 可以创建虚拟环境(用于本地部署)或包含运行模型所需一切内容的 Docker 容器镜像。随后,MLflow 使用诸如 FastAPI 的框架启动带有 REST 端点的推理服务器,为将其部署到各种目标以处理推理请求做好准备。有关服务器和端点的详细信息,请参见 Inference Server Specification。
MLflow 提供 CLI commands 和 Python APIs 来简化部署流程。所需的命令因部署目标而异,因此请继续阅读下一节以了解有关您特定目标的更多详细信息。
支持的部署目标
MLflow 支持多种部署目标。有关每个部署目标的详细信息和教程,请查看下面的相应链接。
使用 MLflow 将模型作为推理服务器在本地部署非常简单,只需一个命令 mlflow models serve。
Amazon SageMaker is a fully managed service for scaling ML inference containers. MLflow simplifies the deployment process with easy-to-use commands, eliminating the need to write container definitions.

MLflow 与 Azure ML 无缝集成。您可以将 MLflow 模型部署到 Azure ML 托管的在线/批处理端点,或部署到 Azure Container Instances (ACI) / Azure Kubernetes Service (AKS)。

Databricks Model Serving 提供一项完全托管的服务,用于在大规模上为 MLflow 模型提供服务,并且额外具备性能优化和监控能力。

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