跳到主要内容

MLflow 服务

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

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

  • 轻松部署:MLflow 提供了一个简单的接口,可将模型部署到各种目标,无需编写样板代码。
  • 依赖项和环境管理:MLflow 确保部署环境与训练环境保持一致,捕获所有依赖项。这保证了模型无论部署在哪里,都能保持一致的运行状态。
  • 打包模型和代码:使用 MLflow,不仅模型本身,任何补充代码和配置也会与部署容器一起打包。这确保了模型可以在没有任何缺失组件的情况下无缝执行。
  • 避免厂商锁定:MLflow 为模型打包提供了一个标准格式,并为部署提供统一的 API。您可以轻松地在不同的部署目标之间切换,而无需重写代码。

概念

MLflow 模型

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

容器

容器在简化和标准化模型部署过程中起着关键作用。MLflow 使用 Docker 容器将模型及其依赖项打包,从而可以在没有环境兼容性问题的情况下部署到各种目的地。有关如何将模型部署为容器的更多详细信息,请参阅为 MLflow 模型构建 Docker 镜像。如果您是 Docker 新手,可以从“什么是容器”开始学习。

部署目标

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

工作原理

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

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

支持的部署目标

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

API 参考

命令行界面

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

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

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

Python API

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

常见问题

如果在模型部署过程中遇到任何依赖项问题,请参阅模型依赖项常见问题解答,以获取有关如何解决和验证修复程序的指导。