MLflow 模型服务
本页面描述了部署您内部 MLflow Model 的工具集。有关 LLM Deployment Server(以前称为 AI Gateway)的信息,请参阅 MLflow Deployment Server。
训练机器学习模型并确保其性能后,下一步就是将其部署到生产环境中。这个过程可能很复杂,但 MLflow 通过提供一套简单的工具集,可以轻松地将您的 ML 模型部署到各种目标,包括本地环境、云服务和 Kubernetes 集群。
使用 MLflow 部署工具集,您可以享受以下益处:
- 轻松部署:MLflow 提供了一个简单的接口,用于将模型部署到各种目标,无需编写样板代码。
- 依赖和环境管理:MLflow 确保部署环境与训练环境一致,捕获所有依赖项。这保证了模型无论部署在哪里都能一致运行。
- 模型和代码打包:使用 MLflow,不仅模型本身,所有补充代码和配置都与部署容器一起打包。这确保了模型可以无缝执行,不会缺少任何组件。
- 避免供应商锁定:MLflow 为模型打包提供了标准格式和统一的部署 API。您可以轻松地在部署目标之间切换,无需重写代码。
概念
MLflow Model
MLflow Model 是一种标准格式,用于打包机器学习模型及其元数据,例如依赖项和推理模式。您通常使用 MLflow Tracking API(例如 mlflow.pyfunc.log_model()
)在训练执行后创建模型。另外,也可以通过 MLflow Model Registry 注册和检索模型。要使用 MLflow 部署,您必须首先创建一个模型。
容器
容器在简化模型部署流程和实现标准化方面起着关键作用。MLflow 使用 Docker 容器来打包模型及其依赖项,从而能够在各种目的地部署模型,而不会出现环境兼容性问题。有关如何将模型部署为容器的更多详细信息,请参阅构建 MLflow Model 的 Docker 镜像。如果您不熟悉 Docker,可以在 “什么是容器” 开始学习。
部署目标
部署目标是指模型的部署目的地环境。MLflow 支持各种目标,包括本地环境、云服务(AWS、Azure)、Kubernetes 集群等。
工作原理
一个 MLflow Model 已经打包了您的模型及其依赖项,因此 MLflow 可以创建一个虚拟环境(用于本地部署)或一个包含运行模型所需一切的 Docker 容器镜像。随后,MLflow 使用 Flask 等框架启动一个带有 REST 端点的推理服务器,为其部署到各种目的地处理推理请求做好准备。有关服务器和端点的详细信息,可在推理服务器规范中找到。
MLflow 提供了 CLI 命令 和 Python API 来简化部署过程。所需的命令因部署目标而异,因此请继续阅读下一节以获取有关您特定目标的更多详细信息。
支持的部署目标
MLflow 支持各种部署目标。有关每个目标的详细信息和教程,请点击下方相应的链接。
使用 MLflow 将模型作为推理服务器在本地部署非常简单,只需一个命令 mlflow models serve
。
Amazon SageMaker 是一项完全托管的服务,用于扩展 ML 推理容器。MLflow 通过易于使用的命令简化了部署过程,无需编写容器定义。

MLflow 与 Azure ML 无缝集成。您可以将 MLflow Model 部署到 Azure ML 托管的在线/批处理端点,或部署到 Azure Container Instances (ACI) / Azure Kubernetes Service (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 部署,以及 Azure ML 需要 azureml-mlflow 库。
因此,建议查阅您所选目标的特定文档,以确定合适的命令。
Python API
MLflow 部署中几乎所有功能都可以通过 Python API 访问。更多详情,请参阅以下 API 参考:
常见问题解答
如果您在模型部署过程中遇到任何依赖项问题,请参阅模型依赖项常见问题解答,以获取有关如何排除故障和验证修复的指导。