什么是 Azure 机器学习中的计算目标?
计算目标是指定的计算资源或环境,用来运行训练脚本或托管服务部署。 此位置可以是你的本地计算机,也可以是基于云的计算资源。 如果使用计算目标,以后无需更改代码即可轻松更改计算环境。
Azure 机器学习为不同的计算目标提供不同的支持。 在典型的模型开发生命周期中,你可以:
- 首先,基于少量数据进行开发和试验。 在此阶段,请使用本地环境(如本地计算机或基于云的虚拟机 (VM))作为计算目标。
- 通过使用其中一种训练计算目标,纵向扩展到更多的数据或进行分布式训练。
- 模型准备就绪后,将其部署到具有这些部署计算目标之一的 Web 托管环境。
你用于计算目标的计算资源附加到工作区。 本地计算机以外的计算资源由工作区的用户共享。
训练计算目标
在针对更大的数据集纵向扩展训练或执行分布式训练时,请使用 Azure 机器学习计算来创建可在每次提交作业时自动缩放的单节点或多节点群集。 你也可以附加自己的计算资源,不过,为不同方案提供的支持可能会有所不同。
一个训练作业的计算目标可以在下一个训练作业中重复使用。 例如,将远程 VM 附加到你的工作区后,可以将其重复用于多个作业。 对于机器学习管道,请对每个计算目标使用适当的管道步骤。
可为大多数作业的训练计算目标使用下述任一资源。 但并非所有资源都可用于自动化机器学习、机器学习管道或设计器。 Azure Databricks 可以用作本地运行和机器学习管道的培训资源,但不能用作其他培训的远程目标。
训练目标 | 自动化机器学习 | 机器学习管道 | Azure 机器学习设计器 |
---|---|---|---|
本地计算机 | 是 | ||
Azure 机器学习计算群集 | 是 | 是 | 是 |
Azure 机器学习无服务器计算 | 是 | 是 | 是 |
Azure 机器学习计算实例 | 是(通过 SDK) | 是 | 是 |
Azure 机器学习 Kubernetes | 是 | 是 |
推理的计算目标
执行推理时,Azure 机器学习会创建托管模型和使用该模型所需的关联资源的 Docker 容器。 然后,系统将在计算目标中使用此容器。
用于托管模型的计算目标会影响已部署的终结点的成本和可用性。 使用此表选择合适的计算目标。
计算目标 | 用途 | GPU 支持 | 说明 |
---|---|---|---|
Azure 机器学习终结点 | 实时推理 批量推理 |
是 | 用于无服务器计算上的实时(托管联机终结点)和批量评分(批处理终结点)的完全托管计算。 |
Azure 机器学习 Kubernetes | 实时推理 批量推理 |
是 | 在本地、云和边缘 Kubernetes 群集上运行推理工作负载。 |
计算目标 | 用途 | GPU 支持 | 说明 |
---|---|---|---|
本地 Web 服务 | 测试/调试 | 用于有限的测试和故障排除。 硬件加速依赖于本地系统中库的使用情况。 | |
Azure 机器学习 Kubernetes | 实时推理 | 是 | 在云中运行推理工作负载。 |
Azure 容器实例 | 实时推理 建议仅用于开发/测试目的。 |
用于需要小于 48 GB RAM 的基于 CPU 的小规模工作负载。 不需要你管理群集。 只适合小于 1 GB 的模型。 在设计器中受支持。 |
注意
选择群集 SKU 时,请先纵向扩展,然后横向扩展。从其 RAM 是模型所需量的 150% 的计算机开始,然后分析结果,找到具有所需性能的计算机。 了解这一信息后,增加计算机的数量,使其满足你的并发推理需求。
Azure 机器学习计算(托管)
Azure 机器学习可以创建和管理托管计算资源。 此类型的计算针对机器学习工作负载进行了优化。 Azure 机器学习计算群集、无服务器计算和计算实例是仅有的托管计算。
不需要创建无服务器计算。 可以通过以下方法创建 Azure 机器学习计算实例或计算群集:
- Azure 机器学习工作室
- Python SDK 和 Azure CLI:
- Azure 资源管理器模板。 有关示例模板,请参阅创建 Azure 机器学习计算群集。
注意
不必创建计算群集,使用无服务器计算将计算生命周期管理工作交给 Azure 机器学习。
在创建时,这些计算资源会自动成为工作区的一部分,这一点与其他类型的计算目标不同。
功能 | 计算群集 | 计算实例 |
---|---|---|
单节点或多节点群集 | ✓ | 单节点群集 |
每次提交作业时自动缩放 | ✓ | |
自动化群集管理和作业计划 | ✓ | ✓ |
为 CPU 和 GPU 资源提供支持 | ✓ | ✓ |
支持的 VM 系列和大小
为 Azure 机器学习中的托管计算资源选择节点大小时,可以从 Azure 提供的选定 VM 大小中进行选择。 Azure 针对不同工作负载为 Linux 和 Windows 提供了一系列大小。 若要了解详细信息,请参阅 VM 类型和大小。
选择 VM 大小时有几个例外和限制:
- Azure 机器学习不支持某些 VM 系列。
- 某些 VM 系列(例如 GPU 和其他特殊 SKU)可能最初不会显示在可用 VM 的列表中。 但是,在请求配额更改后,你仍可使用它们。 若要详细了解如何请求配额,请参阅请求增加配额和限制。
请查看下表,详细了解支持的系列。
支持的 VM 系列 | 类别 | 支持的服务 |
---|---|---|
DDSv4 | 常规用途 | 计算群集和实例 |
Dv2 | 常规用途 | 计算群集和实例 |
Dv3 | 常规用途 | 计算群集和实例 |
DSv2 | 常规用途 | 计算群集和实例 |
DSv3 | 常规用途 | 计算群集和实例 |
Ev3 | 内存优化 | 计算群集和实例 |
ESv3 | 内存优化 | 计算群集和实例 |
FSv2 | 计算优化 | 计算群集和实例 |
M | 内存优化 | 计算群集和实例 |
NCv3 | GPU | 计算群集和实例 |
虽然 Azure 机器学习支持这些 VM 系列,但它们可能并非在所有 Azure 区域中均可用。 若要检查 VM 系列是否可用,请参阅可用产品(按区域)。
注意
Azure 机器学习不支持 Azure 计算支持的所有 VM 大小。 若要列出特定计算 VM 类型支持的可用 VM 大小,请使用以下方法之一:
如果使用支持 GPU 的计算目标,请务必确保在训练环境中安装正确的 CUDA 驱动程序。 根据下表来确定要使用的正确的 CUDA 版本:
GPU 体系结构 | Azure VM 系列 | 支持的 CUDA 版本 |
---|---|---|
Volta | NCv3 | 9.0+ |
除了确保 CUDA 版本和硬件兼容以外,还请确保 CUDA 版本与你正在使用的机器学习框架的版本兼容:
- 对于 PyTorch,你可以通过访问 Pytorch 的“早期版本”页来检查兼容性。
- 对于 Tensorflow,你可以通过访问 Tensorflow 的“从源代码构建”页来检查兼容性。
计算隔离
Azure 机器学习计算提供已隔离到特定硬件类型并专用于单个客户的 VM 大小。 独立 VM 大小最适合为满足合规性和监管要求等原因而需要与其他客户的工作负载高度隔离的工作负载。 使用独立大小可保证你的 VM 是该特定服务器实例上唯一运行的 VM。
当前的独立 VM 产品/服务包括:
- Standard_M128ms
- Standard_F72s_v2
- Standard_NC24s_v3
- Standard_NC24rs_v3(支持 RDMA)
若要了解有关隔离的详细信息,请参阅 Azure 公有云中的隔离。
非托管计算
Azure 机器学习不管理“非托管”计算目标。 请在 Azure 机器学习外部创建此类型的计算目标,然后将其附加到工作区。 对于非托管计算资源,可能需要执行额外的步骤才能保持或提高机器学习工作负载的性能。
Azure 机器学习支持以下非托管计算类型:
- 远程虚拟机
- Azure HDInsight
- Azure Databricks
- Azure Data Lake Analytics
有关详细信息,请参阅管理计算资源。