什么是部署模板?

部署模板是一种可重复使用、限定于注册表范围的工件,用于打包模型在托管联机终结点上为流量提供服务所需的基础结构和运行时设置。 作为模型作者,将部署模板与模型一起发布,以便使用者可以一致地部署模型,而无需了解每个基础结构详细信息。 作为使用者,可以使用短 YAML 或 REST 有效负载部署模型,因为部署模板已指定环境、环境变量、探测和其他设置。

注释

本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。

为何使用部署模板?

部署模板可帮助你将模型创作问题与模型使用分开:

  • 可重用性。 创作一次部署模板,并在注册表中的多个模型或同一模型的多个版本中重复使用它。
  • 护栏。 通过对模板进行设置 allowed_instance_types 来限制使用者可以使用的实例类型,并通过对模型进行设置 allowed_deployment_templates ,为使用者发布一组特选的部署模板。
  • 一致性。 部署模型的每个使用者都会获得相同的环境映像、评分端口、探测和请求设置,从而减少部署之间的偏差。
  • 解耦的生命周期。 在不更改模型工件的情况下更新部署模板版本,然后在你希望使用方开始使用新版本时,将模型的 default_deployment_template 指向该新版本。

重要概念

部署模板具有以下特征:

  • 注册表范围内。 部署模板位于Azure 机器学习注册表中,而不是工作区中。 通过其注册表资产 URI 来引用它们:azureml://registries/<registry-name>/deploymenttemplates/<template-name>/versions/<version>
  • 已版本化。 每个部署模板都有一个名称和一个版本。 使用者引用特定版本,因此在使用者重新部署之前,模板的更新不会更改正在运行的部署。
  • 键入 Managed 部署模板当前支持以 Managed 为目标的 类型。
  • 绑定到注册表环境。 部署模板上的 environment 字段必须引用注册表范围的环境。 不支持工作区级环境和内联环境定义。

使用部署模板的模型具有两个相关字段:

  • default_deployment_template — 使用者在不指定替代的情况下部署模型时应用的部署模板。
  • allowed_deployment_templates — 模型作者建议使用者用作替代的可选特选部署模板列表。

引用带有 default_deployment_template 的模型的部署可以通过将 properties."azureml.deploymentTemplateOverride" 设置为替代模板的注册表资产 URI 来覆盖该模型。

工作流概览

端到端流具有三个角色:环境所有者、模型作者和模型使用者。 同一个人可以扮演所有三个角色。

  1. 创建环境。 环境所有者在工作区中创建环境并将其共享到注册表。
  2. 创建部署模板。 模型作者在注册表中创建一个部署模板,该模板引用注册表范围内的环境,并设置基础结构属性,例如 default_instance_typeallowed_instance_types评分路径和端口、环境变量和探测。
  3. 注册模型。 模型作者在上传模型权重并为模型设置 default_deployment_template(以及可选的 allowed_deployment_templates)时,在注册表中注册模型。
  4. 部署模型。 用户在工作区中创建托管联机终结点,并创建一个引用注册表模型的部署。 部署使用模型的默认部署模板,或指定模型允许列表中的替代。

有关分步说明,请参阅:

与环境和模型的关系

部署模板位于注册表中的环境和模型之间:

  • 环境描述运行评分代码的容器映像和Python依赖项。 多个部署模板可以引用注册表范围内的环境。
  • 部署模板介绍如何通过引用一个注册表范围的环境以及基础结构设置,在托管联机终结点上运行模型。
  • 注册表中的 模型 可以固定一个默认部署模板,并可以选择限制允许的部署模板替代集。 不同的模型可以重复使用相同的部署模板,或固定不同的部署模板。

Mutability

部署模板和模型遵循不同的可变性规则,以便部署模板版本保持稳定且可重现的目标,而模型版本可以选取更新的基础结构配对。

  • 部署模板版本是不可变的。 创建部署模板的版本后,只有该版本上的 tagsdescription 字段可以原地更新。 影响运行时行为的字段(例如environmentenvironment_variablesdefault_instance_typeallowed_instance_typesrequest_settingsliveness_probereadiness_probe)是不可变的。 若要更改其中任一项,请创建部署模板的新版本。 这可以保证固定到特定部署模板版本的使用者始终获得相同的基础结构配置。
  • 模型版本对于部署模板引用是可变的。 在现有模型版本上,可以更新 default_deployment_templateallowed_deployment_templates 指向新的部署模板或现有部署模板的新版本。 无需创建新的模型版本来推出新的基础结构配置;请改用部署模板版本并更新模型的指针,除非选择创建新的模型版本。

限制和注意事项

  • 部署模板以预览版提供。 架构和行为可能会更改。
  • 部署模板仅支持该 Managed 类型。 将它们与 托管联机终结点一起使用,而不与 Kubernetes 联机终结点或批处理终结点一起使用。
  • environment 字段必须引用注册表范围内的环境。 先将工作区环境共享到注册表中,再引用它们。
  • 模型 allowed_deployment_templates 列表是作者指南,而不是强制实施的限制。 模型作者使用它发布一组经过验证的替代模板,但平台不会阻止使用列表外的模板替代的部署。
  • 如果模板上设置了 instance_type 列表,则在部署中指定的 allowed_instance_types 必须包含在部署模板的 instance_type 列表中。