创建和管理 Azure 机器学习工作区

本文介绍如何通过 Azure 门户或 SDK for Python 创建、查看和删除用于 Azure 机器学习Azure 机器学习工作区

随着需求的变化或自动化要求的增加,还可以使用 CLI通过 VS Code 扩展创建和删除工作区。

必备条件

限制

  • 创建新的工作区时,可以自动创建工作区所需的服务或使用现有的服务。 如果要使用来自不同于工作区所在的 Azure 订阅的现有服务,则必须在包含这些服务的订阅中注册 Azure 机器学习命名空间。 例如,在订阅 A 中创建一个使用订阅 B 中的存储帐户的工作区时,必须在订阅 B 中注册 Azure 机器学习命名空间,然后才能将此存储帐户用于该工作区。

    Azure 机器学习的资源提供程序是 Microsoft.MachineLearningService。 有关如何查看它是否已注册以及如何注册的信息,请参阅 Azure 资源提供程序和类型一文。

    重要

    这仅适用于工作区创建期间提供的资源:Azure 存储帐户、Azure 容器注册表、Azure Key Vault 和 Application Insights。

默认情况下,创建工作区时还会创建 Azure 容器注册表 (ACR)。 由于 ACR 当前不支持在资源组名称中使用 unicode 字符,因此请使用不包含这些字符的资源组。

创建工作区

  • 默认规范。 默认情况下,系统会自动创建依赖资源和资源组。 以下代码创建一个名为 myworkspace 的工作区,并在 chinaeast2 中创建一个名为 myresourcegroup 的资源组。

    from azureml.core import Workspace
    
    ws = Workspace.create(name='myworkspace',
                   subscription_id='<azure-subscription-id>',
                   resource_group='myresourcegroup',
                   create_resource_group=True,
                   location='chinaeast2'
                   )
    

    如果需要将一个现有的 Azure 资源组用于该工作区,请将 create_resource_group 设置为 False。

  • 多个租户。 如果有多个帐户,请添加要使用的 Azure Active Directory 的租户 ID。 在 Azure 门户的“Azure Active Directory 外部标识”下找到你的租户 ID。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='chinaeast2',
                auth=interactive_auth
                )
    
  • 主权云 。 如果你在主权云中操作,则需要使用额外的代码向 Azure 进行身份验证。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='chinaeast2',
                auth=interactive_auth
                )
    
  • 使用现有的 Azure 资源。 你还可以创建一个工作区,该工作区使用带有 Azure 资源 ID 格式的现有 Azure 资源。 请在 Azure 门户中或通过 SDK 查找特定的 Azure 资源 ID。 此示例假设资源组、存储帐户、密钥保管库、App Insights 和容器注册表已存在。

    import os
    from azureml.core import Workspace
    from azureml.core.authentication import ServicePrincipalAuthentication
    
    service_principal_password = os.environ.get("AZUREML_PASSWORD")
    
    service_principal_auth = ServicePrincipalAuthentication(
        tenant_id="<tenant-id>",
        username="<application-id>",
        password=service_principal_password)
    
                          auth=service_principal_auth,
                               subscription_id='<azure-subscription-id>',
                               resource_group='myresourcegroup',
                               create_resource_group=False,
                               location='chinaeast2',
                               friendly_name='My workspace',
                               storage_account='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.storage/storageaccounts/mystorageaccount',
                               key_vault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/mykeyvault',
                               app_insights='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.insights/components/myappinsights',
                               container_registry='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.containerregistry/registries/mycontainerregistry',
                               exist_ok=False)
    

有关详细信息,请查看工作区 SDK 参考

如果在访问订阅时遇到问题,请参阅为 Azure 机器学习资源和工作流设置身份验证以及 Azure 机器学习中的身份验证笔记本。

网络

Azure 机器学习 Python SDK 提供 PrivateEndpointConfig 类,此类可与 Workspace.create() 配合使用来创建具有专用终结点的工作区。 此类需要现有虚拟网络。

重要

将专用终结点与 Azure 机器学习工作区配合使用的功能目前为公共预览版。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

漏洞扫描

Azure 安全中心跨混合云工作负荷提供统一的安全管理和高级威胁防护。 你应该允许 Azure 安全中心扫描你的资源并遵循其建议。 有关详细信息,请参阅通过安全中心扫描 Azure 容器注册表映像Azure Kubernetes 服务与安全中心的集成

高级

默认情况下,工作区的元数据存储在 Microsoft 维护的 Azure Cosmos DB 实例中。 该数据是使用 Microsoft 管理的密钥加密的。

若要限制 Microsoft 在你的工作区中收集的数据,请在门户中选择“高业务影响工作区”,或在 Python 中设置 hbi_workspace=true 。 有关此设置的详细信息,请参阅静态加密

重要

只能在创建工作区时选择高业务影响。 在创建工作区后,不能更改此设置。

使用自己的密钥

你可以提供自己的密钥来加密数据。 这样做会创建在 Azure 订阅中存储元数据的 Azure Cosmos DB 实例。

重要

此 Cosmos DB 实例及其所需的全部资源是在订阅的 Microsoft 托管资源组中创建的。 这意味着需要为此 Cosmos DB 实例付费。 托管资源组的命名格式为 <AML Workspace Resource Group Name><GUID>。 如果 Azure 机器学习工作区使用专用终结点,则还会为 Cosmos DB 实例创建一个虚拟网络。 此 VNet 用于保护 Cosmos DB 与 Azure 机器学习之间的通信。

  • 请勿删除包含此 Cosmos DB 实例的资源组,也不要删除此组中自动创建的任何资源。 如果需要删除该资源组和 Cosmos DB 实例等内容,必须删除使用它的 Azure 机器学习工作区。 删除与资源组、Cosmos DB 实例和其他自动创建的资源相关联的工作区时,这些资源都将被删除。
  • 此 Cosmos DB 帐户的默认请求单位数设置为“8000” 。
  • 不能提供自己的 VNet 来与创建的 Cosmos DB 实例一起使用。 也不能修改虚拟网络。 例如,你不能更改它使用的 IP 地址范围。

通过以下步骤提供你自己的密钥:

重要

在执行这些步骤之前,必须先执行以下操作:

  1. 授予机器学习应用(在“标识和访问管理”中)对订阅的参与者权限。

  2. 按照配置客户管理的密钥中的步骤完成以下操作:

    • 注册 Azure Cosmos DB 提供程序
    • 创建和配置 Azure Key Vault
    • 生成密钥

    你无需手动创建 Azure Cosmos DB 实例,系统会在创建工作区期间为你创建一个实例。 将使用一个基于 <your-workspace-resource-name>_<GUID> 模式的名称在单独的资源组中创建此 Azure Cosmos DB 实例。

在创建工作区后,不能更改此设置。 如果删除工作区使用的 Azure Cosmos DB,则还必须删除正在使用它的工作区。

使用 cmk_keyvaultresource_cmk_uri 指定客户管理的密钥。

from azureml.core import Workspace
   ws = Workspace.create(name='myworkspace',
               subscription_id='<azure-subscription-id>',
               resource_group='myresourcegroup',
               create_resource_group=True,
               location='chinaeast2'
               cmk_keyvault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/<keyvault-name>', 
               resource_cmk_uri='<key-identifier>'
               )

下载配置文件

如果要创建计算实例,请跳过此步骤。 该计算实例已为你创建此文件的副本。

如果你计划在本地环境使用引用此工作区 (ws) 的代码,请编写配置文件:

ws.write_config()

使用 Python 脚本或 Jupyter Notebook 将此文件放入到目录结构中。 它可以位于同一目录(名为 .azureml 的子目录)中,也可以位于父目录中。 创建计算实例时,此文件会添加到 VM 上的正确目录中。

连接到工作区

在 Python 代码中,创建一个用于连接到工作区的工作区对象。 此代码将读取配置文件的内容以查找工作区。 如果你尚未进行身份验证,系统会提示你登录。

from azureml.core import Workspace

ws = Workspace.from_config()
  • 多个租户。 如果有多个帐户,请添加要使用的 Azure Active Directory 的租户 ID。 在 Azure 门户的“Azure Active Directory 外部标识”下找到你的租户 ID。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.from_config(auth=interactive_auth)
    
  • 主权云 。 如果你在主权云中操作,则需要使用额外的代码向 Azure 进行身份验证。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.from_config(auth=interactive_auth)
    

如果在访问订阅时遇到问题,请参阅为 Azure 机器学习资源和工作流设置身份验证以及 Azure 机器学习中的身份验证笔记本。

查找工作区

查看你可以使用的所有工作区的列表。

Azure 门户的“订阅”页中查找你的订阅。 复制 ID 并在下面的代码中使用它,以便查看可用于该订阅的所有工作区。

from azureml.core import Workspace

Workspace.list('<subscription-id>')

创建工作区

不再需要工作区时,请删除它。

删除工作区 ws

ws.delete(delete_dependent_resources=False, no_wait=False)

默认操作是不删除与工作区关联的资源,即容器注册表、存储帐户、密钥保管库和应用程序见解。 如果将 delete_dependent_resources 设置为 True,则也会删除这些资源。

清理资源

重要

已创建的资源可以用作其他 Azure 机器学习教程和操作方法文章的先决条件。

如果不打算使用已创建的资源,请删除它们,以免产生任何费用:

  1. 在 Azure 门户中,选择最左侧的“资源组” 。

    在 Azure 门户中删除

  2. 从列表中选择已创建的资源组。

  3. 选择“删除资源组” 。

  4. 输入资源组名称。 然后选择“删除” 。

故障排除

  • Azure 机器学习工作室支持的浏览器:建议使用与操作系统兼容的最新浏览器。 支持以下浏览器:

    • Microsoft Edge(新的 Microsoft Edge(最新版), 不是旧版 Microsoft Edge)
    • Safari(最新版本,仅限 Mac)
    • Chrome(最新版本)
    • Firefox(最新版本)
  • Azure 门户

    • 如果通过 SDK 的共享链接或 Azure 门户直接访问工作区,则无法查看扩展中包含订阅信息的标准“概述”页面。 此情况下,也无法切换到其他工作区。 若要查看其他工作区,请直接转到 Azure 机器学习工作室并搜索工作区名称。

    • 所有资产(数据集、试验、计算等)仅适用于 Azure 机器学习工作室, 它们不可在 Azure 门户中使用。

资源提供程序错误

创建 Azure 机器学习工作区或工作区使用的资源时,可能会收到类似于以下消息的错误:

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

大多数资源提供程序均已自动注册,但并非全部。 如果收到此消息,则需要注册提到的提供程序。

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

移动工作区

警告

不支持将 Azure 机器学习工作区移动到另一个订阅,或将拥有的订阅移到新租户。 这样做可能会导致错误。

删除 Azure 容器注册表

Azure 机器学习工作区使用 Azure 容器注册表 (ACR) 执行某些操作。 首次需要 ACR 实例时,它会自动创建一个。

警告

为工作区创建 Azure 容器注册表后,请不要将其删除。 删除该注册表将损坏 Azure 机器学习工作区。

示例

创建工作区的示例:

后续步骤

有了工作区后,请了解如何训练和部署模型