部署

重要

本页描述了用于部署您的内部 MLflow 模型的工具集。有关 **LLM 部署服务器**(以前称为 AI 网关)的信息,请参阅 MLflow 部署服务器

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

../_images/mlflow-deployment-overview.png

通过使用 MLflow 部署工具集,您可以享受以下好处:

  • 轻松部署:MLflow 提供了一个简单的接口,用于将模型部署到各种目标,消除了编写样板代码的需求。

  • 依赖和环境管理:MLflow 确保部署环境与训练环境一致,捕获所有依赖项。这保证了模型无论部署在何处都能一致运行。

  • 打包模型和代码:使用 MLflow,不仅模型,而且任何辅助代码和配置都与部署容器一起打包。这确保了模型可以在没有任何缺失组件的情况下无缝执行。

  • 避免供应商锁定:MLflow 提供了一种标准格式来打包模型,并提供了统一的部署API。您可以轻松地在不同的部署目标之间切换,而无需重写代码。

概念

MLflow 模型

MLflow Model 是一种标准格式,它将机器学习模型与其元数据(如依赖项和推理模式)打包在一起。通常,您使用 MLflow Tracking APIs 的结果创建一个模型,例如,mlflow.pyfunc.log_model()。或者,可以通过 MLflow Model Registry 注册和检索模型。要使用 MLflow 部署,您必须首先创建一个模型。

容器

容器在简化并标准化模型部署过程中起着关键作用。MLflow 使用 Docker 容器来打包带有其依赖项的模型,从而能够在各种目标上进行部署而不会出现环境兼容性问题。有关如何将模型作为容器部署的更多详细信息,请参阅 为 MLflow 模型构建 Docker 镜像。如果您是 Docker 新手,可以从 “什么是容器” 开始学习。

部署目标

部署目标指的是模型的目标环境。MLflow 支持多种目标,包括本地环境、云服务(AWS、Azure)、Kubernetes 集群等。

工作原理

一个 MLflow 模型 已经打包了你的模型及其依赖项,因此 MLflow 可以创建一个虚拟环境(用于本地部署)或包含运行模型所需一切的 Docker 容器镜像。随后,MLflow 使用 Flask 等框架启动一个带有 REST 端点的推理服务器,为部署到各种目的地处理推理请求做好准备。有关服务器和端点的详细信息,请参阅 推理服务器规范

MLflow 提供了 CLI 命令Python API 来简化部署过程。所需的命令根据部署目标的不同而有所差异,因此请继续阅读下一节以获取关于您特定目标的更多详细信息。

支持的部署目标

MLflow 提供了对多种部署目标的支持。有关每个目标的详细信息和教程,请点击以下相应链接。

API 参考

命令行界面

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

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

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

Python API

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

常见问题解答

如果在模型部署过程中遇到任何依赖性问题,请参考 模型依赖性常见问题解答 以获取故障排除和验证修复的指导。