在 Azure 机器学习工作室中创建计算目标以进行模型训练和部署

本文介绍了如何在 Azure 机器学习工作室中创建和管理计算目标。 也可以使用以下 SDK 与扩展创建和管理计算目标:

先决条件

什么是计算目标?

使用 Azure 机器学习可以在不同的资源或环境(统称为 计算目标)中训练模型。 计算目标可以是本地计算机,也可以是云资源,例如 Azure 机器学习计算、Azure HDInsight 或远程虚拟机。 还可以为模型部署创建计算目标,如“部署模型的位置和方式”中所述。

查看计算目标

若要查看工作区的所有计算目标,请使用以下步骤:

  1. 导航到 Azure 机器学习工作室

  2. 在“管理”下,选择“计算” 。

  3. 选择顶部的选项卡以显示各类计算目标。

    查看计算目标的列表

创建计算目标

遵循上述步骤查看计算目标的列表。 然后使用以下步骤创建计算目标:

  1. 在顶部选择对应于将要创建的计算类型的选项卡。

  2. 如果你没有计算目标,请选择页面中间的“创建”。

    创建计算目标

  3. 如果看到计算资源的列表,请选择列表上方的“+ 新建”。

    选择“新建”

  4. 为你的计算类型填写表单:

  1. 选择“创建”。

  2. 通过在列表中选择计算目标来查看创建操作的状态:

    从列表中查看计算状态

计算实例

使用上述步骤创建计算实例。 然后按如下所示填写表单:

新建计算实例

字段 说明
计算名称
  • 名称是必须提供的,且长度必须介于 3 到 24 个字符之间。
  • 有效字符为大小写字母、数字和 - 字符。
  • 名称必须以字母开头
  • 名称必须在 Azure 区域内的全部现有计算中都是唯一的。 如果选择的名称不是唯一的,则会显示警报
  • 如果在名称中使用了 - 字符,在此字符之后必须至少跟有一个字母
  • 虚拟机类型 选择“CPU”或“GPU”。 此类型在创建后无法更改
    虚拟机大小 在你的区域中,支持的虚拟机大小可能会受到限制。 请查看可用性列表
    启用/禁用 SSH 访问 默认情况下会禁用 SSH 访问。 SSH 访问 在创建后无法更改。 如果计划使用 VS Code Remote 以交互模式进行调试,请确保启用访问权限
    高级设置 可选。 配置虚拟网络 指定 资源组虚拟网络子网,以在 Azure 虚拟网络 (vnet) 中创建计算实例。 有关详细信息,请参阅 vnet 的这些网络要求

    计算群集

    为训练、批量推理或强化学习工作负载创建单个或多个节点计算群集。 使用上述步骤创建计算群集。 然后按如下所示填写表单:

    字段 说明
    计算名称
  • 名称是必须提供的,且长度必须介于 3 到 24 个字符之间。
  • 有效字符为大小写字母、数字和 - 字符。
  • 名称必须以字母开头
  • 名称必须在 Azure 区域内的全部现有计算中都是唯一的。 如果选择的名称不是唯一的,则会显示警报
  • 如果在名称中使用了 - 字符,在此字符之后必须至少跟有一个字母
  • 虚拟机类型 选择“CPU”或“GPU”。 此类型在创建后无法更改
    虚拟机优先级 选择“专用”或“低优先级”。 低优先级虚拟机的费用更低,但不能保证计算节点。 其他作业可能会抢先于你的作业执行。
    虚拟机大小 在你的区域中,支持的虚拟机大小可能会受到限制。 请查看可用性列表
    最小节点数 需要预配的节点的最小数量。 如果需要专用数量的节点,请在此处设置所需计数。 将最小值设置为 0 可节省费用,这样在群集空闲时就不需要为任何节点付费。
    最大节点数 需要预配的节点的最大数量。 提交作业时,计算将自动缩放到此节点计数的最大值。
    高级设置 可选。 配置虚拟网络 指定 资源组虚拟网络子网,以在 Azure 虚拟网络 (vnet) 中创建计算实例。 有关详细信息,请参阅 vnet 的这些网络要求。 另外请附加托管标识以授予对资源的访问权限

    设置托管标识

    Azure 机器学习计算群集还支持使用托管标识来验证对 Azure 资源的访问,而不需要在代码中包含凭据。 托管标识分为两种类型:

    • 系统分配的托管标识将在 Azure 机器学习计算群集上直接启用。 系统分配的标识的生命周期将直接绑定到计算群集。 如果计算群集遭删除,Azure 会自动清理 Azure AD 中的凭据和标识。
    • 用户分配的托管标识是通过 Azure 托管标识服务提供的独立 Azure 资源。 可以将一个用户分配的托管标识分配给多个资源,并根据需要将其保留任意长的时间。

    在群集创建过程中或在编辑计算群集详细信息时,请在“高级设置”中切换“分配托管标识”并指定系统分配的标识或用户分配的标识 。

    托管标识用法

    默认托管标识是系统分配的托管标识或第一个用户分配的托管标识。

    在运行期间,一个标识有两种应用:

    1. 系统使用标识来设置用户的存储装载、容器注册表和数据存储。

      • 在这种情况下,系统将使用默认托管标识。
    2. 用户应用标识以便从已提交运行的代码中访问资源

      • 在这种情况下,请提供与要用于检索凭据的托管标识对应的 client_id。
      • 或者,通过 DEFAULT_IDENTITY_CLIENT_ID 环境变量获取用户分配的标识的客户端 ID。

      例如,若要使用默认托管标识检索数据存储的令牌,请执行以下操作:

      client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
      credential = ManagedIdentityCredential(client_id=client_id)
      token = credential.get_token('https://storage.azure.com/')
      

    推理群集

    重要

    将 Azure Kubernetes 服务与 Azure 机器学习配合使用有多个配置选项。 某些场景(如网络)需要额外的设置和配置。 有关将 AKS 与 Azure 机器学习配合使用的详细信息,请参阅创建和附加 Azure Kubernetes 服务群集

    创建或附加 Azure Kubernetes 服务 (AKS) 群集以用于大规模推理。 使用上述步骤创建 AKS 群集。 然后按如下所示填写表单:

    字段 说明
    计算名称
  • 必须提供名称。 名称必须包含 2 到 16 个字符。
  • 有效字符为大小写字母、数字和 - 字符。
  • 名称必须以字母开头
  • 名称必须在 Azure 区域内的全部现有计算中都是唯一的。 如果选择的名称不是唯一的,则会显示警报
  • 如果在名称中使用了 - 字符,在此字符之后必须至少跟有一个字母
  • Kubernetes 服务 选择“新建”,并填写表单的其余部分。 或者选择“使用现有”,然后从订阅中选择现有的 AKS 群集。
    区域 选择将要在其中创建该群集的区域
    虚拟机大小 在你的区域中,支持的虚拟机大小可能会受到限制。 请查看可用性列表
    群集目的 请选择“生产”或“开发测试”
    节点数 节点数乘以虚拟机的核心 (vCPU) 数的结果必须大于等于 12。
    网络配置 选择“高级”以在现有虚拟网络中创建计算。 若要详细了解虚拟网络中的 AKS,请参阅使用专用终结点和虚拟网络的训练和推理过程中的网络隔离
    启用 SSL 配置 此选项用于针对计算配置 SSL 证书

    附加的计算

    若要使用在 Azure 机器学习工作区外部创建的计算目标,必须附加这些计算目标。 附加计算目标会使其可供你的工作区使用。 附加的计算用于为训练附加计算目标 。 推理群集用于为推理附加 AKS 群集 。

    请使用上述步骤来附加计算。 然后按如下所示填写表单:

    1. 输入计算目标的名称。

    2. 选择要附加的计算类型。 并非所有计算类型都可以从 Azure 机器学习工作室附加。 目前,可为训练附加的计算类型包括:

      • Azure 虚拟机(用于附加 Data Science Virtual Machine)
      • Azure Databricks(在机器学习管道中使用)
      • Azure Data Lake Analytics(在机器学习管道中使用)
      • Azure HDInsight
    3. 填写表单,并提供必需属性的值。

      备注

      Microsoft 建议使用 SSH 密钥,因为它们比密码更安全。 密码很容易受到暴力破解攻击。 SSH 密钥依赖于加密签名。 若要了解如何创建用于 Azure 虚拟机的 SSH 密钥,请参阅以下文档:

    4. 选择“附加”。

    后续步骤

    在创建目标并将其附加到工作区后,通过 ComputeTarget 对象在运行配置中使用该目标:

    from azureml.core.compute import ComputeTarget
    myvm = ComputeTarget(workspace=ws, name='my-vm-name')