跳到主要内容

MLflow 服务

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

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

  • 轻松部署:MLflow 提供了一个简单的界面,用于将模型部署到各种目标,无需编写样板代码。
  • 依赖项和环境管理:MLflow 确保部署环境与训练环境一致,捕获所有依赖项。 这保证了模型运行的一致性,无论它们部署在哪里。
  • 打包模型和代码:使用 MLflow,不仅是模型,任何补充代码和配置都与部署容器一起打包。 这确保了模型可以无缝执行,而不会丢失任何组件。
  • 避免供应商锁定:MLflow 提供了一种用于打包模型的标准格式和用于部署的统一 API。 您可以轻松地在部署目标之间切换,而无需重写代码。

概念

MLflow 模型

MLflow 模型是一种标准格式,它将机器学习模型与其元数据(例如依赖项和推理模式)打包在一起。 您通常会使用 MLflow Tracking 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 参考

常见问题

如果您在模型部署期间遇到任何依赖项问题,请参见模型依赖项常见问题解答,以获取有关如何进行故障排除和验证修复的指导。