管理 Azure 机器学习注册表

Azure 机器学习实体可分为两大类:

  • 模型、环境、组件和数据集等资产是与工作区无关的持久实体。 例如,可以将模型注册到任何工作区并部署到任何终结点。
  • 计算、作业和终结点等资源是特定于工作区的暂时性实体。 例如,联机终结点具有对特定工作区中的特定实例唯一的评分 URI。 同样,作业在已知的持续时间内运行,并在每次运行时都生成日志和指标。

资产本身可以存储在中央存储库中并在不同的工作区中使用,这些工作区可能位于不同的区域中。 资源是特定于工作区的。

Azure 机器学习注册表使你能够在不同的工作区中创建和使用这些资产。 注册表支持多区域复制,以便在使用资产时对其进行低延迟访问,从而让你能使用位于不同 Azure 区域的工作区中的资产。 创建注册表将预配帮助复制所需的 Azure 资源。 首先,每个受支持区域中的 Azure Blob 存储帐户。 其次,启用了对每个受支持区域的复制功能的单个 Azure 容器注册表。

Diagram of the relationships between assets in workspace and registry.

先决条件

在按照本文中的步骤操作之前,请确保满足以下先决条件:

提示

如果使用 CLI 的旧版 ml 扩展,可能需要先将其更新到最新版本,然后才能使用此功能。 若要更新最新版本,请使用以下命令:

az extension update -n ml

>
> For more information, see [Install, set up, and use the CLI (v2)](../how-to-configure-cli.md).

<!--Update_Description: new article about new feature cli-->
<!--NEW.date: 05/01/2023-->

准备创建注册表

在继续创建注册表之前,需要仔细确定以下信息:

选择名称

在选择名称之前,请考虑以下因素。

  • 注册表旨在促进在跨所有工作区的组织内的团队之间共享 ML 资产。 选择反映共享范围的名称。 该名称应有助于标识组、部门或组织。
  • 在组织(Microsoft Entra 租户)中独一无二的注册表名称。 建议为团队或组织名称添加前缀,并避免使用通用名称。
  • 注册表名称一旦创建就无法更改,因为它们用于代码中引用的模型、环境和组件的 ID。
    • 长度可以为 2 - 32 个字符。
    • 允许使用字母数字、下划线、连字符。 没有其他特殊字符。 不含空格 - 注册表名称是可在代码中引用的模型、环境和组件 ID 的一部分。
    • 名称可以包含下划线或连字符,但不能以下划线或连字符开头。 需要以字母数字开头。

选择 Azure 区域

注册表支持跨工作区共享资产。 为此,注册表跨多个 Azure 区域复制内容。 在创建注册表时,需要定义注册表支持的区域列表。 创建包含现有工作区的所有区域的列表,并计划在不久的将来添加这些区域。 此列表是一组很好的开始区域。 创建注册表时,定义主要区域和一组其他区域。 创建注册表后无法更改主要区域,但可以稍后更新其他区域。

检查权限

确保你是计划在其中创建注册表的订阅或资源组的“所有者”或“参与者”。 如果你没有其中一个内置角色,请查看本文末尾的权限部分。

创建注册表

创建 YAML 定义并将其命名为 registry.yml

注意

YAML 文件中列出了主要位置两次。 在以下示例中,chinaeast2 首先作为主要位置(location 项)列出,同时在 replication_locations 列表中列出。

name: DemoRegistry1
tags:
  description: Basic registry with one primary region and to additional regions
  foo: bar
location: chinaeast2
replication_locations:
  - location: chinaeast2
  - location: chinaeast2
  - location: chinaeast2

有关 YAML 文件结构的更多信息,请参阅注册表 YAML 参考一文。

提示

通常会在 Azure 门户中看到 Azure 区域的显示名称,例如“中国东部 2”,但注册表创建 YAML 需要不含空格和小写字母的区域名称。 使用 az account list-locations -o table 查找区域显示名称到可在 YAML 中指定的区域名称的映射。

运行 registry create 命令。

az ml registry create --file registry.yml

指定存储帐户类型和 SKU(可选)

提示

只能通过 Azure CLI 指定 Azure 存储帐户类型和 SKU。

Azure 存储提供多种类型的存储帐户,这些帐户具有不同的功能和定价。 有关详细信息,请参阅存储帐户类型一文。 确定最适合你的需求的最佳存储帐户 SKU 后,找到相应 SKU 类型的值。 在 YAML 文件中,使用所选的 SKU 类型作为 storage_account_type 字段的值。 此字段位于 replication_locations 列表中的每个 location 下。

接下来,决定是要使用 Azure Blob 存储帐户还是 Azure Data Lake Storage Gen2。 要创建 Azure Data Lake Storage Gen2,请将 storage_account_hns 设置为 true。 要创建 Azure Blob 存储,请将 storage_account_hns 设置为 falsestorage_account_hns 字段位于 replication_locations 列表中的每个 location 下。

注意

storage_account_hnshns 部分指的是 Azure Data Lake Storage Gen2 帐户的分层命名空间功能。

以下示例 YAML 文件演示了此高级存储配置:

name: DemoRegistry2
tags:
  description: Registry with additional configuration for storage accounts
  foo: bar
location: chinaeast2
replication_locations:
  - location: chinaeast2
    storage_config:
      storage_account_hns: False
      storage_account_type: Standard_LRS
  - location: chinaeast2
    storage_config:
      storage_account_hns: False
      storage_account_type: Standard_LRS
  - location: chinaeast2
    storage_config:
      storage_account_hns: False
      storage_account_type: Standard_LRS

将用户添加到注册表

决定是允许用户仅使用注册表中的资产(模型、环境和组件),还是同时使用和创建注册表中的资产。 如果你不熟悉如何使用 Azure 基于角色的访问控制来管理权限,请查看分配角色的步骤

允许用户使用注册表中的资产

要让用户只阅读资产,可以授予用户内置的“读取者”角色。 如果你不想使用内置角色,请创建具有以下权限的自定义角色

权限 说明
Microsoft.MachineLearningServices/registries/read 允许用户列出注册表并获取注册表元数据
Microsoft.MachineLearningServices/registries/assets/read 允许用户浏览资产并在工作区中使用资产

允许用户创建和使用注册表中的资产

要让用户同时读取和创建/删除资产,除了上述读取权限外,还需要授予以下写入权限。

权限 说明
Microsoft.MachineLearningServices/registries/assets/write 在注册表中创建资产
Microsoft.MachineLearningServices/registries/assets/delete 删除注册表中的资产

警告

内置的“参与者”和“所有者”角色允许用户创建、更新和删除注册表。 如果希望用户创建和使用注册表中的资产,但不创建或更新该注册表,则必须创建自定义角色。 查看自定义角色,了解如何根据权限创建自定义角色。

允许用户创建和管理注册表

要让用户创建、更新和删除注册表,请授予他们内置的“参与者”或“所有者”角色。 如果不想使用内置角色,除了上述所有权限外,还需创建具有以下权限的自定义角色,以便读取、创建和删除注册表中的资产。

权限 说明
Microsoft.MachineLearningServices/registries/write 允许用户创建或更新注册表
Microsoft.MachineLearningServices/registries/delete 允许用户删除注册表

后续步骤