用于部署的模型包(预览版)

机器学习模型在训练后,需要部署它,以便其他人可以使用其预测。 但部署模型不只需要权重或模型的项目。 模型包是 Azure 机器学习中的一项功能,可用于收集将机器学习模型部署到服务平台所需的所有依赖项。 包可以在工作区之间移动,甚至可以在 Azure 机器学习外部移动。

重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

什么是模型包?

在部署模型之前,最佳做法是,必须收集并解析模型成功运行所需的所有依赖项,以便可以在可重现且可靠的方法中部署模型。

Screenshot that shows the dependencies collected during a model package operation.

通常,模型的依赖项包括:

  • 在其中执行模型的基础映像或环境。
  • 模型依赖的 Python 包和依赖项的列表,使其正常运行。
  • 模型可能需要生成推理的额外资产。 这些资产可以包括标签的映射和预处理参数。
  • 推理服务器为请求提供服务所需的软件;例如,flask 服务器或 TensorFlow 服务。
  • 推理例程(如果需要)。

所有这些元素都需要收集,然后部署在服务基础结构中。 收集所有依赖项后生成的资产称为模型包

打包模型的优点

在部署之前打包模型具有以下优势:

  • 可重现性:打包时(而非部署时)收集所有依赖项。 解析依赖项后,可以根据需要多次部署包,同时保证已解析依赖项。
  • 冲突解决更快:Azure 机器学习在打包模型时检测到与依赖项相关的任何错误配置,例如缺少 Python 包。 无需部署模型来发现此类问题。
  • 与推理服务器集成更简便:因为所使用的推理服务器可能需要特定的软件配置(例如 Torch Serve 包),所以此类软件可能与模型的依赖项产生冲突。 Azure 机器学习中的模型包注入推理服务器所需的依赖项,以帮助在部署模型之前检测冲突。
  • 可移植性:可以使用注册表将 Azure 机器学习模型包从一个工作区移到另一个工作区。 还可以生成可在 Azure 机器学习外部部署的包。
  • 使用专用网络的 MLflow 支持:对于 MLflow 模型,Azure 机器学习需要连接 Internet 才可动态安装所需的 Python 包,以使模型运行。 通过打包 MLflow 模型,可以在模型打包操作期间解析这些 Python 包,以便 MLflow 模型包不需要连接 Internet 连接便可部署。

提示

强烈建议在部署之前打包 MLflow 模型,甚至对于没有出站网络连接的终结点而言也是必需的。 MLflow 模型指示其在模型本身中的依赖项,因此需要动态安装包。 打包 MLflow 模型时,此动态安装在打包时(而非部署时)执行。

模型包的部署

可以将模型包作为联机终结点的输入。 使用模型包有助于通过减少部署时出错的可能性来简化 MLOps 工作流,因为打包操作期间会收集所有依赖项。 还可以配置模型包生成 Docker 映像,以便在本地或云中 Azure 机器学习外部的任何位置部署。

Screenshot that shows all the possible targets for a model package.

部署前的包

使用模型包进行部署的最简单方法是在执行部署之前指定 Azure 机器学习部署模型包。 使用 Azure CLI、Azure 机器学习 SDK 或 Azure 机器学习工作室在联机终结点中创建部署时,可以指定使用模型打包,如下所示:

创建部署时使用 --with-package 标志:

az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME

Azure 机器学习先打包模型,然后执行部署。

注意

使用包时,如果指示具有 condapip 依赖项的基本环境,则无需包括推理服务器的依赖项 (azureml-inference-server-http)。 而会自动添加这些依赖项。

部署已打包的模型

可以将已打包的模型直接部署到联机终结点。 这种做法可确保结果的可重现性,并且是最佳做法。 请参阅打包模型并将其部署到联机终结点

若要在 Azure 机器学习之外部署包,请参阅在 Azure 机器学习之外打包和部署模型

下一步