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

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

重要

本文中标记了“(预览版)”的项目目前为公共预览版。 该预览版在提供时没有附带服务级别协议,建议不要将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

先决条件

什么是计算目标?

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

查看计算目标

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

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

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

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

    查看计算目标的列表

开始创建过程

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

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

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

    创建计算目标

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

    选择“新建”

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

  5. 选择“创建”。

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

    从列表中查看计算状态

请按创建和管理 Azure 机器学习计算实例中的步骤进行操作。

创建计算群集

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

字段 说明
位置 将会在其中创建计算群集的 Azure 区域。 在默认情况下,此位置与工作区的位置相同。 将该位置设置为不同于工作区所在区域的区域的功能目前为预览版,只可用于计算群集,不可用于计算实例 。
在使用不同于工作区或数据存储所在区域的区域时,可能会出现网络延迟加重和数据传输成本增加的情况。 在创建群集以及在该群集上运行作业时,可能会存在这样的延迟和成本。
虚拟机类型 选择“CPU”或“GPU”。 此类型在创建后无法更改
虚拟机大小 在你的区域中,支持的虚拟机大小可能会受到限制。 请查看可用性列表

选择“下一步”,进入“高级设置”,按如下所示填写窗体 :

字段 说明
计算名称
  • 名称是必须提供的,且长度必须介于 3 到 24 个字符之间。
  • 有效字符为大小写字母、数字和 - 字符。
  • 名称必须以字母开头
  • 名称必须在 Azure 区域内的全部现有计算中都是唯一的。 如果选择的名称不是唯一的,则会显示警报
  • 如果在名称中使用了 - 字符,在此字符之后必须至少跟有一个字母
  • 最小节点数 需要预配的节点的最小数量。 如果需要专用数量的节点,请在此处设置所需计数。 将最小值设置为 0 可节省费用,这样在群集空闲时就不需要为任何节点付费。
    最大节点数 需要预配的节点的最大数量。 提交作业时,计算将自动缩放到此节点计数的最大值。
    缩减前的空闲秒数 将群集规模缩减到最小节点数之前等待的空闲时间。
    启用 SSH 访问 按照启用 SSH 访问中关于计算实例(上文)的说明操作。
    高级设置 可选。 配置虚拟网络 指定 资源组虚拟网络子网,以在 Azure 虚拟网络 (vnet) 中创建计算实例。 有关详细信息,请参阅 vnet 的这些网络要求。 另外请附加托管标识以授予对资源的访问权限

    启用 SSH 访问

    默认情况下会禁用 SSH 访问。 创建 SSH 访问后就不能进行更改了。 如果计划使用 VS Code Remote 以交互模式进行调试,请确保启用访问权限。

    选择“下一步: 高级设置”后:

    1. 开启“启用 SSH 访问”。
    2. 在“SSH 公钥源”中,从下拉列表中选择其中一个选项:
      • 如果生成新密钥对:
        1. 在“密钥对名称”中输入密钥的名称。
        2. 选择“创建”。
        3. 选择“下载私钥并创建计算”。 密钥通常下载到“下载”文件夹中。
      • 如果选择“使用存储在 Azure 中的现有公钥”,搜索并选择“存储密钥”中的密钥 。
      • 如果选择“使用现有公钥”,请以单行格式(以“ssh-rsa”开头)或多行 PEM 格式提供 RSA 公钥。 可以在 Linux 和 OS X 上使用 ssh-keygen 生成 SSH 密钥,或在 Windows 上使用 PuTTYGen 生成这些密钥。

    创建并运行计算群集后,请参阅使用 SSH 访问进行连接

    设置托管标识

    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
      • Kubernetes(预览版)
    3. 填写表单,并提供必需属性的值。

      备注

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

    4. 选择“附加”。

    重要

    若要附加 Azure Kubernetes 服务 (AKS) 或启用了 Arc 的 Kubernetes 群集,你必须是订阅所有者,或者必须有权访问订阅中的 AKS 群集资源。 否则,“附加新计算”页上的群集列表将会是空白。

    若要拆离计算,请使用以下步骤:

    1. 在 Azure 机器学习工作室中,选择“计算”、“附加的计算”,以及要删除的计算 。
    2. 使用“拆离”链接来拆离计算。

    使用 SSH 访问进行连接

    如果创建了计算实例或计算群集,并启用了 SSH 访问,请按照以下步骤进行访问。

    1. 在工作区资源中查找计算:

      1. 在左侧选择“计算”。
      2. 使用顶部的选项卡选择“计算实例”或“计算群集”,以查找计算机 。
    2. 在资源列表中选择计算机名称。

    3. 查找连接字符串:

      • 对于“计算实例”,选择“详细信息”部分顶部的“连接” 。

        屏幕截图:“详细信息”页面顶部的连接工具。

      • 对于“计算群集”,选择顶部的“节点”,然后在表中为节点选择“连接字符串” 。 屏幕截图:计算群集中节点的连接字符串。

    4. 复制该连接字符串。

    5. 对于 Windows,打开 PowerShell 或命令提示符:

      1. 转到存储密钥的目录或文件夹

      2. 将 -i 标志添加到连接字符串,以查找私钥并指向其存储位置:

        ssh -i <keyname.pem> azureuser@... (rest of connection string)

    6. 对于 Linux 用户,请按照为 Azure 中的 Linux VM 创建和使用 SSH 密钥对中的步骤进行操作

    后续步骤

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

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