管理 Azure 机器学习注册表

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

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

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

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

工作区和注册表中的资产之间的关系图。

先决条件

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

提示

如果使用 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 允许用户删除注册表