在订阅之间移动 Azure 机器学习工作区(预览版)

随着机器学习应用程序的要求发生变化,可能需要将工作区移到其他 Azure 订阅。 例如,在下列情况下,可能需要移动工作区:

  • 将工作区从测试订阅提升到生产订阅。
  • 更改应用程序的设计和体系结构。
  • 将工作区移到具有更多可用配额的订阅。
  • 将工作区移到具有不同成本中心的订阅。

通过移动工作区,你可以在单个自动化步骤中迁移工作区及其内容。 下表描述了移动的工作区内容:

工作区内容 随工作区一起移动
数据存储
数据集
试验作业
环境
工作区中存储的模型和其他资产
计算资源
终结点

重要

工作区移动目前以公共预览版提供。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

先决条件

  • 来源订阅中的 Azure 机器学习工作区。 有关详细信息,请参阅创建工作区资源

  • 必须有管理来源订阅和目标订阅中资源的权限。 例如,“订阅”级别的参与者或所有者角色。 有关角色的详细信息,请参阅 Azure 角色

    • 需要从源位置删除资源的权限。
    • 需要在目标位置创建资源的权限。
    • 移动不得违反目标位置中的 Azure 策略。
    • 源工作区范围的任何角色分配都不会移动;必须在目标中重新创建它们。
  • 必须针对所需的资源提供程序注册目标订阅。 下表包含 Azure 机器学习所需的资源提供程序的列表:

    资源提供程序 为什么需要它
    Microsoft.MachineLearningServices 创建 Azure 机器学习工作区。
    Microsoft.Storage Azure 存储帐户用作该工作区的默认存储。
    Microsoft.ContainerRegistry Azure 容器注册表被工作区用来生成 Docker 映像。
    Microsoft.KeyVault 该工作区使用 Azure Key Vault 来存储机密。
    Microsoft.Notebooks/NotebookProxies Azure 机器学习计算实例上集成的笔记本。
    Microsoft.ContainerService 如果计划将训练后的模型部署到 Azure Kubernetes 服务。

    如果计划将客户管理的密钥与 Azure 机器学习一起使用,则必须注册以下服务提供程序:

    资源提供程序 为什么需要它
    Microsoft.DocumentDB/databaseAccounts 用于记录工作区元数据的 Azure Cosmos DB 实例。
    Microsoft.Search/searchServices Azure 搜索为工作区提供索引编制功能。

    有关注册资源提供程序的信息,请参阅解决资源提供程序注册错误

  • Azure CLI

    提示

    移动操作不使用用于机器学习的 Azure CLI 扩展。

支持的方案

  • 自动化工作区跨同一区域中的资源组或订阅移动。 有关详细信息,请参阅将资源移到新资源组或订阅

    注意

    工作区在移动前必须处于静止状态;计算将被删除,没有实时终结点或正在运行的试验。

    Screenshot of the move resources steps in the Azure portal.

  • 支持移动配置了专用终结点的工作区。 专用终结点将断开连接,移动后会重新创建可传递专用终结点。 但是,移动之后新专用终结点(包括工作区专用终结点)的批准工作由你负责。

限制

  • 工作区移动不适用于复制工作区,也不适用于将单项资产(如模型或数据集)从一个工作区移到另一个工作区。

  • 工作区移动不支持跨 Azure 区域进行迁移。

  • 工作区移动不支持跨 Microsoft Entra 租户进行迁移。

    提示

    有关手动移动租户的信息,请参阅将 Azure 订阅转移到其他 Microsoft Entra ID 一文。

  • 在移动操作期间,工作区不能使用。 验证所有试验作业、数据分析作业和标记项目是否已完成。 还要验证推理终结点是否未调用。

  • 移动期间工作区不可用。

  • 在移动之前,必须从工作区中删除或拆离计算和推理终结点。

  • 数据存储在移动后仍可能会显示旧订阅信息。 有关手动更新数据存储的步骤,请参阅场景:移动具有非默认数据存储的工作区

不支持以下场景:

  • 包含计算(现有计算或正在创建的计算)的工作区。
  • 具有已部署服务的工作区。
  • 具有联机终结点/部署的工作区。
  • 客户托管密钥配置的工作区。
  • 标签项目当前正在运行中的工作区。
  • 与 Azure Databricks 链接的工作区。
  • 跨区域移动工作区。

准备并验证移动

  1. 在 Azure CLI 中,将订阅设置为源工作区的订阅

    az account set -s origin-sub-id
    
  2. 验证源工作区是否未使用。 检查任何试验作业、数据分析作业或标记项目是否均已完成。 还要验证推理终结点是否未调用。

  3. 从工作区中删除或拆离任何计算,并删除任何推理终结点。 不支持移动计算和终结点。 另请注意,移动期间工作区不可用。

  4. 在新的订阅中创建目标资源组。 移动后,此资源组将包含工作区。 目标必须与源必须位于同一区域。

    az group create -g destination-rg -l my-region --subscription destination-sub-id                  
    
  5. 以下命令演示如何验证工作区的移动操作。 可以通过将关联的资源(例如存储帐户、容器注册表、密钥保管库和应用程序见解)添加到 resources 列表来将其包含在移动中。 验证可能需要几分钟。 在此命令中,origin-rg 是源资源组,而 destination-rg 是目标。 订阅 ID 为 origin-sub-iddestination-sub-id,而工作区为 origin-workspace-name

    az resource invoke-action --action validateMoveResources --ids "/subscriptions/origin-sub-id/resourceGroups/origin-rg" --request-body "{  \"resources\": [\"/subscriptions/origin-sub-id/resourceGroups/origin-rg/providers/Microsoft.MachineLearningServices/workspaces/origin-workspace-name\"],\"targetResourceGroup\":\"/subscriptions/destination-sub-id/resourceGroups/destination-rg\" }"
    

命名工作区

验证成功后,移动工作区。 还可以通过将任何关联的资源添加到 ids 参数来将其包含在移动操作中。 此操作可能需要几分钟。

az resource move --destination-group destination-rg --destination-subscription-id destination-sub-id --ids "/subscriptions/origin-sub-id/resourceGroups/origin-rg/providers/Microsoft.MachineLearningServices/workspaces/origin-workspace-name"

移动完成后,在新位置重新创建任何计算并重新部署任何 Web 服务终结点。

场景:移动具有非默认数据存储的工作区

自动化工作区移动操作不会移动非默认数据存储。 使用以下步骤在移动后手动更新数据存储凭据。

  1. Azure 机器学习工作室中,选择“数据”,然后选择非默认数据存储。 对于每个非默认数据存储,检查“订阅 ID”和“资源组名称”字段是否为空。 如果是,请选择“更新身份验证”。

    Screenshot of the data asset overview.

    在“更新数据存储凭据”对话框中,选择存储帐户移动到的订阅 ID 和资源组名称,然后选择“保存”。

    Screenshot of the update datastore credentials dialog.

  2. 如果已为非默认数据资产填充“订阅 ID”和“资源组名称”字段,并在移动前引用订阅 ID 和资源组,则使用以下步骤:

    1. 导航到“数据存储”选项卡,选择数据存储,然后选择“注销”。

      Screenshot of the unregister datastore link.

    2. 选择“创建”以新建数据存储。

      Screenshot of the create datastore link.

    3. 在“创建数据存储”对话框中,使用与注销的数据存储相同的名称、类型等。 从新位置选择订阅 ID 和存储帐户。 最后,选择“创建”以新建数据存储注册。

      Screenshot of the create dataset dialog.

后续步骤