管理 Azure 机器学习注册表
Azure 机器学习实体可分为两大类:
- 模型、环境、组件和数据集等资产是与工作区无关的持久实体。 例如,可以将模型注册到任何工作区并部署到任何终结点。
- 计算、作业和终结点等资源是特定于工作区的暂时性实体。 例如,联机终结点具有对特定工作区中的特定实例唯一的评分 URI。 同样,作业在已知的持续时间内运行,并在每次运行时都生成日志和指标。
资产本身可以存储在中央存储库中并在不同的工作区中使用,这些工作区可能位于不同的区域中。 资源是特定于工作区的。
Azure 机器学习注册表使你能够在不同的工作区中创建和使用这些资产。 注册表支持多区域复制,以便在使用资产时对其进行低延迟访问,从而让你能使用位于不同 Azure 区域的工作区中的资产。 创建注册表将预配帮助复制所需的 Azure 资源。 首先,每个受支持区域中的 Azure Blob 存储帐户。 其次,启用了对每个受支持区域的复制功能的单个 Azure 容器注册表。
先决条件
在按照本文中的步骤操作之前,请确保满足以下先决条件:
Azure CLI 和 Azure CLI 的
ml
扩展。 有关详细信息,请参阅安装、设置和使用 CLI (v2)。重要
本文中的 CLI 示例假定你使用的是 Bash(或兼容的)shell。 例如,从 Linux 系统或者适用于 Linux 的 Windows 子系统。
Azure 机器学习工作区。 如果没有,请使用安装、设置和使用 CLI (v2) 中的步骤创建一个。
提示
如果使用 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
设置为 false
。 storage_account_hns
字段位于 replication_locations
列表中的每个 location
下。
注意
storage_account_hns
的 hns
部分指的是 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 | 允许用户删除注册表 |