跳至主内容

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 commandsPython APIs 来简化部署流程。所需的命令因部署目标而异,因此请继续阅读下一节以了解有关您特定目标的更多详细信息。

支持的部署目标

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

API 参考

命令行界面

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

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

因此,建议查阅您所选择的目标的特定文档,以确定适当的命令。

Python API

MLflow 部署中可用的几乎所有功能也可以通过 Python APIs 访问。更多详情,请参阅以下 API 参考:

常见问题

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