创建 Azure 机器学习计算实例
本文内容
适用范围:Azure CLI ml 扩展 v2(最新版)
Python SDK azure-ai-ml v2(最新版)
了解如何在 Azure 机器学习工作区中创建计算实例。
可将计算实例用作云中的完全配置、完全托管的开发环境。 对于开发和测试,还可将该实例用作训练计算目标。 计算实例可以并行运行多个作业,它有一个作业队列。 作为开发环境的计算实例不能与工作区中的其他用户共享。
本文介绍如何创建计算实例。 有关管理启动、停止、重启和删除计算实例的步骤,请参阅管理 Azure 机器学习计算实例。
你还可以借助自己的自定义环境使用安装脚本创建计算实例。
计算实例可以在虚拟网络环境中安全地运行作业,无需企业打开 SSH 端口。 作业在容器化环境中执行,并将模型依赖项打包到 Docker 容器中。
备注
本文在某些示例中使用 CLI v2。 如果你仍在使用 CLI v1,请参阅使用 CLI v1 创建 Azure 机器学习计算群集。
- Azure 机器学习工作区。 有关详细信息,请参阅创建 Azure 机器学习工作区。 在存储帐户中,必须启用“允许存储帐户密钥访问”选项才能成功创建计算实例。
选择用于其他先决条件的环境的选项卡。
- 没有额外的先决条件。
时间估计:大约 5 分钟。
对于工作区而言,创建计算实例是一次性过程。 可将此计算重复用作开发工作站,或者用作训练的计算目标。 可将多个计算实例附加到工作区。
对于每个区域每个虚拟机 (VM) 系列配额和创建计算实例时应用的区域总配额,专用内核数一致,且该数量与 Azure 机器学习训练计算群集配额共享。 停止计算实例不会释放配额,因此无法确保能够重启计算实例。 配额是针对 Azure 资源的额度限制,而不是容量保证,是否重启计算实例仍然取决于区域的可用容量。 如果区域的 SKU 容量紧张,则可能无法重启计算实例。 创建计算实例后,不能更改其虚拟机大小。
创建计算实例的最快方法是按照创建入门所需的资源中的步骤操作。
或者,使用以下示例创建具有更多选项的计算实例:
导航到 Azure 机器学习工作室。
在“管理”下,选择“计算” 。
在顶部选择“计算实例”。
如果没有计算实例,请在页面中间选择“创建”。
如果看到计算资源的列表,请选择列表上方的“+ 新建”。
填写表单:
字段 说明 计算名称 - 名称是必填项,且长度必须介于 3 到 24 个字符之间。
- 有效字符为大小写字母、数字和 - 字符。
- 名称必须以字母开头
- 名称必须在 Azure 区域内的全部现有计算中都是唯一的。 如果选择的名称不是唯一的,你将看到警报
- 如果在名称中使用了 - 字符,则在此字符之后必须至少跟有一个字母虚拟机类型 选择“CPU”或“GPU”。 此类型在创建后无法更改 虚拟机大小 在你的区域中,支持的虚拟机大小可能会受到限制。 请查看可用性列表 除非要为计算实例配置高级设置,否则请选择“查看 + 创建”。
如果要为计算实例配置 SSH、虚拟网络、根访问和托管标识等安全设置,请选择“安全性”。 使用此部分可以:
将计算机分配给其他用户。 有关分配给其他用户的详细信息,请参阅代表他人创建
分配托管标识。 请参阅分配托管标识。
启用 SSH 访问。 按照详细的 SSH 访问说明操作。
启用虚拟网络:
如果在使用 Azure 虚拟网络,请指定资源组、虚拟网络和子网,以在 Azure 虚拟网络中创建计算实例。 还可以选择“无公共 IP”以防止创建需要专用链接工作区的公共 IP 地址。 还必须满足虚拟网络设置的这些网络要求。
如果使用 Azure 机器学习 托管虚拟网络,则会在托管虚拟网络中创建计算实例。 还可以选择“无公共 IP”以防止创建公共 IP 地址。 有关详细信息,请参阅使用托管网络进行托管计算。
如果想要添加要在计算实例上使用的自定义应用程序,例如 RStudio 或 Posit Workbench,请选择“应用程序”。 请参阅添加自定义应用程序(例如 RStudio 或 Posit Workbench)。
如果想要添加其他信息来对计算实例进行分类,请选择“标记”。
选择“查看 + 创建”以查看设置。
查看设置后,请选择“创建”以创建计算实例。
还可使用 Azure 资源管理器模板创建计算实例。
为避免系统对已打开但不活动的计算实例收费,你可以对何时因计算实例不活动而将其关闭进行配置。
满足以下条件的计算实例将被视为非活动实例:
- 没有活动的 Jupyter 内核会话(这意味着没有通过 Jupyter、JupyterLab 或交互式笔记本使用笔记本)
- 没有活动的 Jupyter 终端会话
- 没有活动的 Azure 机器学习运行或试验
- 无 VS Code 连接;必须关闭 VS Code 连接,计算实例才会被视为非活动实例。 如果 VS Code 在 3 小时内未检测到任何活动,则会话将自动终止。
- 计算中未运行任何自定义应用程序
如果有任何自定义应用程序正在运行,则计算实例不会被视为空闲。 若要使用自定义应用程序自动关闭计算,需要设置日程安排,或者需要移除自定义应用程序。 围绕非活动时间段也有一些基本限制;计算实例必须处于非活动状态至少 15 分钟,最多 3 天。 我们也不会跟踪 VS Code SSH 连接以确定活动。
此外,如果计算实例已经空闲了一段时间,则如果将空闲关闭设置更新为比当前空闲持续时间短的时间,则空闲时间时钟将重置为 0。 例如,如果计算实例已经闲置了 20 分钟,且关闭设置更新为 15 分钟,则闲置时钟将重置为 0。
重要
如果计算实例还配置了托管标识,则除非托管标识对 Azure 机器学习工作区具有参与者访问权限,否则计算实例不会因不活动而关闭。 有关分配权限的详细信息,请参阅管理对 Azure 机器学习工作区的访问权限。
可以在创建计算实例期间为现有计算实例配置设置,也可以通过以下界面这样做:
也可使用以下方法更改空闲时间:
REST API
终结点:
POST https://management.chinacloudapi.cn/subscriptions/{SUB_ID}/resourceGroups/{RG_NAME}/providers/Microsoft.MachineLearningServices/workspaces/{WS_NAME}/computes/{CI_NAME}/updateIdleShutdownSetting?api-version=2021-07-01
正文:
{ "idleTimeBeforeShutdown": "PT30M" // this must be a string in ISO 8601 format }
ARM 模板:仅可在新建计算实例时配置
// Note that this is just a snippet for the idle shutdown property in an ARM template { "idleTimeBeforeShutdown":"PT30M" // this must be a string in ISO 8601 format }
为自动关闭和自动启动定义多个计划。 例如,创建两个计划,一个从周一至周四上午 9 点开始,下午 6 点停止,另一个从周五上午 9 点开始,下午 4 点停止。 每个计算实例总共可以创建四个计划。
还可以为代表他人创建计算实例定义计划。 可以创建一个计划用于在停止状态下创建计算实例。 代表其他用户创建计算实例时,停止的计算实例很有用。
在计划的关闭之前,用户会看到一条通知,提醒他们计算实例即将关闭。 此时,用户可以选择关闭即将发生的关闭事件。 例如,如果它们正在使用其计算实例。
填写表单。
在完成所需设置后,请选择“下一步”以转到“计划”。
选择“添加计划”以添加新计划。
选择“启动计算实例”或“停止计算实例” 。
选择“时区”。
选择“启动时间”或“关闭时间” 。
选择此计划处于活动状态的天数。
如果要创建其他计划,请再次选择“添加计划”。
创建计算实例后,可以从计算实例详细信息部分查看、编辑或添加新计划。
备注
时区标签不考虑夏令时。 例如,(UTC+01:00) 阿姆斯特丹、柏林、伯尔尼、罗马、斯德哥尔摩、维也纳在夏令时期间实际上是 UTC+02:00。
可以使用资源管理器模板来计划计算实例的自动启动和停止。
在资源管理器模板中,添加:
"schedules": "[parameters('schedules')]"
然后,使用 cron 或 LogicApps 表达式在参数文件中定义启动或停止实例的计划:
"schedules": {
"value": {
"computeStartStop": [
{
"triggerType": "Cron",
"cron": {
"timeZone": "UTC",
"expression": "0 18 * * *"
},
"action": "Stop",
"status": "Enabled"
},
{
"triggerType": "Cron",
"cron": {
"timeZone": "UTC",
"expression": "0 8 * * *"
},
"action": "Start",
"status": "Enabled"
},
{
"triggerType": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"timeZone": "UTC",
"schedule": {
"hours": [17],
"minutes": [0]
}
},
"action": "Stop",
"status": "Enabled"
}
]
}
}
“action”的值可以是
Start
或Stop
。对于触发类型
Recurrence
,使用与逻辑应用相同的语法,及此定期架构。对于触发类型
cron
,使用标准 cron 语法:// Crontab expression format: // // * * * * * // - - - - - // | | | | | // | | | | +----- day of week (0 - 6) (Sunday=0) // | | | +------- month (1 - 12) // | | +--------- day of month (1 - 31) // | +----------- hour (0 - 23) // +------------- min (0 - 59) // // Star (*) in the value field above means all legal values as in // braces for that column. The value column can have a * or a list // of elements separated by commas. An element is either a number in // the ranges shown above or two numbers in the range separated by a // hyphen (meaning an inclusive range).
使用 Azure Policy 为订阅中的每个计算实例强制执行已存在的关闭计划;如果不存在任何计划,则强制执行默认设置的某个计划。 下面是一个示例策略,可将一个在太平洋时间晚上 10:10 进行的关闭计划设为默认计划。
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
"equals": "ComputeInstance"
},
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
"exists": "false"
}
]
},
"then": {
"effect": "append",
"details": [
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
"value": {
"computeStartStop": [
{
"triggerType": "Cron",
"cron": {
"startTime": "2021-03-10T21:21:07",
"timeZone": "Pacific Standard Time",
"expression": "0 22 * * *"
},
"action": "Stop",
"status": "Enabled"
}
]
}
}
]
}
}
}
作为管理员,你可代表数据科学家创建计算实例,并通过以下方式将实例分配给他们:
工作室,使用本文中的安全设置。
Azure 资源管理器模板。 可以在 Microsoft Entra 管理中心找到这些值。
为了进一步增强安全性,在代表数据科学家创建计算实例并向其分配实例时,如果计算实例具有安装脚本或自定义应用,则在创建期间将禁用单一登录 (SSO)。
在通过更新计算实例上的 SSO 设置将计算分配给受分配用户之后,他们需要自行在计算实例上启用 SSO。 受分配用户需要在其角色 MachineLearningServices/workspaces/computes/enableSso/action 中具有以下权限/操作。 受分配用户不需要“计算写入(创建)”权限即可启用 SSO。
下面是受分配用户需要执行的步骤。 请注意,由于安全原因,不允许计算实例的创建者在该计算实例上启用 SSO。
在 Azure 机器学习工作室的左侧导航窗格中单击计算。
单击需要启用 SSO 的计算实例的名称。
编辑“单一登录详细信息”部分。
启用单一登录切换。
保存。 更新需要一些时间。
可以将系统或用户分配的托管标识分配给计算实例,以针对其他 Azure 资源(例如存储)进行身份验证。 使用托管标识进行身份验证有助于改进工作区安全性和管理。 例如,仅当登录到计算实例时,用户才能访问训练数据。 或者,使用常见的用户分配的托管标识允许访问特定存储帐户。
重要
如果计算实例还配置为空闲关闭,则除非托管标识对 Azure 机器学习工作区具有参与者访问权限,否则计算实例不会因不活动而关闭。 有关分配权限的详细信息,请参阅管理对 Azure 机器学习工作区的访问权限。
可以从 Azure 机器学习工作室创建具有托管标识的计算实例:
- 填写表单以创建新的计算实例。
- 选择“安全”。
- 启用“分配托管标识”。
- 在“标识类型”下,选择“系统分配”或“用户分配”。
- 如果选择了“用户分配”,请选择订阅和标识的名称。
创建托管标识后,至少向托管标识授予对数据存储的存储帐户的存储 Blob 数据读者角色,请参阅访问存储服务。 然后,在处理计算实例时,托管标识会自动用于对数据存储进行身份验证。
备注
在 Microsoft Entra ID 中,创建的系统托管标识的名称采用 /workspace-name/computes/compute-instance-name 格式。
还可以手动使用托管标识对其他 Azure 资源进行身份验证。 以下示例演示如何使用它来获取 Azure 资源管理器访问令牌:
import requests
def get_access_token_msi(resource):
client_id = os.environ.get("DEFAULT_IDENTITY_CLIENT_ID", None)
resp = requests.get(f"{os.environ['MSI_ENDPOINT']}?resource={resource}&clientid={client_id}&api-version=2017-09-01", headers={'Secret': os.environ["MSI_SECRET"]})
resp.raise_for_status()
return resp.json()["access_token"]
arm_access_token = get_access_token_msi("https://management.chinacloudapi.cn")
若要将 Azure CLI 与托管标识配合使用进行身份验证,请在登录时将标识客户端 ID 指定为用户名:
az cloud set -n AzureChinaCloud
az login --identity --username $DEFAULT_IDENTITY_CLIENT_ID
备注
尝试使用托管标识时无法使用 azcopy
。 azcopy login --identity
将不起作用。
默认情况下会禁用 SSH 访问。 创建后无法启用或禁用 SSH 访问。 如果计划使用 VS Code Remote 以交互式方式进行调试,请确保启用访问权限。
选择“下一步: 高级设置”后:
- 开启“启用 SSH 访问”。
- 在“SSH 公钥源”中,从下拉列表中选择其中一个选项:
- 如果生成新密钥对:
- 在“密钥对名称”中输入密钥的名称。
- 选择“创建”。
- 选择“下载私钥并创建计算”。 密钥通常下载到“下载”文件夹中。
- 如果选择“使用存储在 Azure 中的现有公钥”,搜索并选择“存储密钥”中的密钥 。
- 如果选择“使用现有公钥”,请以单行格式(以“ssh-rsa”开头)或多行 PEM 格式提供 RSA 公钥。 可以在 Linux 和 OS X 上使用 ssh-keygen 生成 SSH 密钥,或在 Windows 上使用 PuTTYGen 生成这些密钥。
- 如果生成新密钥对:
尽管创建后无法启用或禁用 SSH,但可以选择稍后在启用了 SSH 的计算实例上设置 SSH 密钥。 这样就可以在创建后设置 SSH 密钥。 为此,请选择在计算实例上启用 SSH,然后选择“稍后设置 SSH 密钥”作为 SSH 公钥源。 创建计算实例后,可以访问计算实例的“详细信息”页,然后选择以编辑 SSH 密钥。 在那里,你能够添加 SSH 密钥。
此常见用例的一个示例是,代表其他用户创建计算实例时(请参阅代表创建),代表其他用户预配计算实例时,可以通过选择“稍后设置 SSH 密钥”为新的计算实例所有者启用 SSH。 这样的话,按照之前的步骤创建计算实例并将其分配给新所有者之后,新所有者便可以为其新拥有的计算实例设置 SSH 密钥。
创建启用了 SSH 访问的计算后,请使用以下步骤进行访问。
在工作区资源中查找计算:
- 在左侧选择“计算”。
- 使用顶部的选项卡选择“计算实例”或“计算群集”,以查找计算机 。
在资源列表中选择计算机名称。
查找连接字符串:
对于“计算实例”,选择“详细信息”部分顶部的“连接” 。
对于“计算群集”,选择顶部的“节点”,然后在表中为节点选择“连接字符串” 。
复制该连接字符串。
对于 Windows,打开 PowerShell 或命令提示符:
转到存储密钥的目录或文件夹
将 -i 标志添加到连接字符串,以查找私钥并指向其存储位置:
ssh -i <keyname.pem> azureuser@... (rest of connection string)
对于 Linux 用户,请按照为 Azure 中的 Linux VM 创建和使用 SSH 密钥对中的步骤进行操作
对于 SCP,请使用:
scp -i key.pem -P {port} {fileToCopyFromLocal } azureuser@yourComputeInstancePublicIP:~/{destination}
- REST API
你为其创建计算实例的数据科学家需要拥有针对以下项的 Azure 基于角色的访问控制 (Azure RBAC) 权限:
- Microsoft.MachineLearningServices/workspaces/computes/start/action
- Microsoft.MachineLearningServices/workspaces/computes/stop/action
- Microsoft.MachineLearningServices/workspaces/computes/restart/action
- Microsoft.MachineLearningServices/workspaces/computes/applicationaccess/action
- Microsoft.MachineLearningServices/workspaces/computes/updateSchedules/action
数据科学家可启动、停止和重启计算实例。 他们可将计算实例用于:
- Jupyter
- JupyterLab
- RStudio
- Posit Workbench(以前称为 RStudio Workbench)
- 集成式笔记本
创建计算实例时可以安装其他应用程序,例如 RStudio 或 Posit Workbench(以前称为 RStudio Workbench)。 在工作室中按照这些步骤在计算实例上安装自定义应用程序
- 填写表单以创建新的计算实例
- 选择“应用程序”
- 选择“添加应用程序”
RStudio 是 R 开发人员用来开发 ML 和数据科学项目的最流行 IDE 之一。 你可以轻松设置 Posit Workbench(可以通过它访问 RStudio 和其他开发工具)以使用你自己的 Posit 许可证在计算实例上运行,并访问 Posit Workbench 提供的丰富功能集
- 创建计算实例时,请按照上面列出的步骤添加应用程序。
- 在“应用程序”下拉列表中选择“Posit Workbench (自带许可证)”,然后在“许可证密钥”字段中输入你的 Posit Workbench 许可证密钥。 你可以从 posit 获取 Posit Workbench 许可证或试用许可证。
- 选择“创建”,将 Posit Workbench 应用程序添加到计算实例。
重要
如果使用专用链接工作区,请确保可以访问 docker 映像 pkg-containers.githubusercontent.com 和 ghcr.io。 此外,请使用 8704-8993 范围内的已发布端口。 对于 Posit Workbench,请通过提供对 https://www.wyday.com 的网络访问来确保许可证可供访问。
备注
- 尚不支持从 Posit Workbench 访问工作区文件存储。
- 访问多个 Posit Workbench 实例时,如果看到“400 错误请求。请求标头或 Cookie 过大”错误, 请使用新浏览器或以隐身模式从浏览器访问。
若要使用 RStudio,请如下所述设置一个自定义应用程序:
创建计算实例时,请按照之前的步骤添加应用程序。
在“应用程序”下拉列表中选择“自定义应用程序”。
配置要使用的应用程序名称。
将应用程序设置为在目标端口
8787
上运行 - 下面列出的 RStudio 开源的 Docker 映像需要在此目标端口上运行。设置要在已发布端口
8787
上访问的应用程序 - 如果需要,可以将应用程序配置为在不同的已发布端口上访问。将 Docker 映像指向
ghcr.io/azure/rocker-rstudio-ml-verse:latest
。选择“创建”以将 RStudio 安装为计算实例上的自定义应用程序。
重要
如果使用专用链接工作区,请确保可以访问 docker 映像 pkg-containers.githubusercontent.com 和 ghcr.io。 此外,请使用 8704-8993 范围内的已发布端口。 对于 Posit Workbench,请通过提供对 https://www.wyday.com 的网络访问来确保许可证可供访问。
通过在 Docker 映像中提供应用程序,在计算实例上安装其他自定义应用程序。
- 创建计算实例时,请按照之前的步骤添加应用程序。
- 在“应用程序”下拉列表中选择“自定义应用程序”。
- 配置“应用程序名称”、要在其上运行应用程序的“目标端口”、要在其上访问应用程序的“已发布端口”,以及包含该应用程序的“Docker 映像”。 如果自定义映像存储在 Azure 容器注册表中,请为应用程序的用户分配“参与者”角色。 有关分配角色的信息,请参阅管理对 Azure 机器学习工作区的访问权限。
- (可选)添加要用于应用程序的“环境变量”。
- 使用 Bind 装载添加对默认存储帐户中文件的访问权限:
- 为“主机路径”指定 /home/azureuser/cloudfiles。
- 为“容器路径”指定 /home/azureuser/cloudfiles。
- 选择“添加”以添加此装载。 由于文件已装载,因此对这些文件所做的更改可用于其他计算实例和应用程序。
- 选择“创建”以在计算实例上安装该自定义应用程序。
重要
如果使用专用链接工作区,请确保可以访问 docker 映像 pkg-containers.githubusercontent.com 和 ghcr.io。 此外,请使用 8704-8993 范围内的已发布端口。 对于 Posit Workbench,请通过提供对 https://www.wyday.com 的网络访问来确保许可证可供访问。
在工作室中访问安装的自定义应用程序:
- 在左侧选择“计算”。
- 在“计算实例”选项卡上,查看“应用程序”列下的应用程序。
备注
设置自定义应用程序后可能需要几分钟才能通过链接访问它。 花费的时间取决于自定义应用程序所用映像的大小。 如果在尝试访问该应用程序时看到 502 错误消息,请等待一段时间以便应用程序设置完毕,然后再重试。 如果从 Azure 容器注册表拉取自定义映像,则你需要具有工作区的“参与者”角色。 有关分配角色的信息,请参阅管理对 Azure 机器学习工作区的访问权限。
- 管理 Azure 机器学习计算实例
- 访问计算实例终端
- 创建和管理文件
- 将计算实例更新到最新的 VM 映像
- 在 VS Code 中使用计算实例: