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

通过使用 MLflow 部署工具集,您可以享受以下优势:
- 轻松部署:MLflow 提供了一个简单的界面,用于将模型部署到各种目标,无需编写模板代码。
- 依赖项与环境管理:MLflow 确保部署环境与训练环境保持一致,捕获所有依赖项。这保证了模型无论部署到何处都能稳定运行。
- 打包模型与代码:使用 MLflow,不仅是模型,任何补充代码和配置也会随部署容器一起打包。这确保了模型能够无缝执行,不会出现组件缺失的情况。
- 避免供应商锁定:MLflow 提供了打包模型的标准格式和用于部署的统一 API。您可以轻松切换部署目标,而无需重写代码。
概念
MLflow 模型
MLflow 模型是一种标准格式,它将机器学习模型及其元数据(如依赖项和推理架构)打包在一起。通常,您在使用 MLflow 追踪 API(例如 mlflow.pyfunc.log_model())执行训练后,会创建一个模型。此外,模型也可以通过 MLflow 模型注册表进行注册和检索。要使用 MLflow 部署,您必须首先创建一个模型。
容器
容器在简化和标准化模型部署过程中起着至关重要的作用。MLflow 使用 Docker 容器将模型及其依赖项打包,从而能够将模型部署到各种目的地,且不会出现环境兼容性问题。使用
mlflow models build-docker CLI 命令或 mlflow.models.build_docker Python API 来构建用于服务模型的镜像。如果您是 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 模型服务提供了一种完全托管的服务,用于大规模提供 MLflow 模型,并具有性能优化和监控功能的额外优势。

Modal 是一个用于 AI/ML 的无服务器云平台,提供按需 GPU 访问(T4 到 H200)、自动缩放以及通过 mlflow-modal-deploy 插件实现的一键部署。
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 API 访问。有关更多详细信息,请参阅以下 API 参考:
常见问题 (FAQ)
如果您在模型部署过程中遇到任何依赖项问题,请参阅模型依赖项常见问题解答,以获取关于如何排查和验证修复方案的指导。