跳到主要内容

将 MLflow 模型部署到 Kubernetes

将 MLServer 用作推理服务器

默认情况下,MLflow 部署使用 FastAPI(一个广泛使用的 Python ASGI Web 应用程序框架)来提供推理端点。然而,FastAPI 本身并不支持水平扩展,可能不适合大规模生产用例。为了解决这个不足,MLflow 集成了 MLServer 作为替代部署选项。MLServer 被用作 Kubernetes 原生框架(如 Seldon CoreKServe(以前称为 KFServing))的核心 Python 推理服务器。使用 MLServer,您可以利用 Kubernetes 的可伸缩性和可靠性来大规模服务您的模型。请参阅 Serving Framework,了解 FastAPI 和 MLServer 之间的详细比较,以及为什么 MLServer 是 ML 生产用例的更好选择。

为 MLflow 模型构建 Docker 镜像

将 MLflow 模型部署到 Kubernetes 的关键步骤是构建一个包含 MLflow 模型和推理服务器的 Docker 镜像。这可以通过 `build-docker` CLI 命令或 Python API 来完成。

mlflow models build-docker -m runs:/<run_id>/model -n <image_name> --enable-mlserver

如果您想使用最基础的 FastAPI 服务器而不是 MLServer,请删除 `--enable-mlserver` 标志。有关其他选项,请参阅 build-docker 命令文档。

重要提示

自 MLflow 2.10.1 起,Docker 镜像规范已更改,以减小镜像大小并提高性能。最值得注意的是,除非是 Java 模型(如 `spark`),否则不再在镜像中安装 Java。如果您需要为其他模型(例如使用 SparkML 的自定义 Python 模型)安装 Java,请指定 `--install-java` 标志来强制安装 Java。

部署步骤

请参阅以下合作伙伴文档,了解如何使用 MLServer 将 MLflow 模型部署到 Kubernetes。您也可以按照下面的教程,了解包括环境设置、模型训练和部署在内的端到端过程。

教程

您也可以在以下教程中学习如何在 MLflow 中训练模型并将其部署到 Kubernetes