Azure 机器学习的工作原理:资源和资产

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

本文适用于 Azure 机器学习 CLI 和 Python SDK (v2) 的第二个版本。 对于版本 1 (v1),请参阅 Azure 机器学习的工作原理:体系结构和概念 (v1)

Azure 机器学习包含多种资源和资产,使你能够执行机器学习任务。 运行任何作业都需要这些资源和资产。

  • 资源:运行机器学习工作流所需的设置或基础结构资源。 资源包括:
  • 资产:使用 Azure 机器学习命令创建,或作为训练/评分运行的一部分创建。 资产的版本受控,可以在 Azure 机器学习工作区中注册。 其中包括:

本文档将提供这些资源和资产的简要概述。

先决条件

若要使用本文中的 Python SDK 代码示例,请执行以下操作:

  1. 安装 Python SDK v2

  2. 创建与 Azure 机器学习订阅的连接。 这些示例均依赖于 ml_client。 若要创建工作区,不需要为连接提供工作区名称,因为还可能没有工作区名称。 本文中的所有其他示例都要求连接中包含工作区名称。

    # import required libraries
    from azure.ai.ml import MLClient
    from azure.ai.ml.entities import Workspace
    from azure.identity import DefaultAzureCredential
    
    # Enter details of your subscription
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    
    # get a handle to the subscription (use this if you haven't created a workspace yet)
    ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
    
    # all other examples in this article require the connection to include workspace name
    workspace_name = "<WORKSPACE_NAME>"
    ml_client = ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name)
    

工作区

工作区是 Azure 机器学习的顶级资源,为使用 Azure 机器学习时创建的所有项目提供了一个集中的处理位置。 工作区保留所有作业的历史记录,包括日志、指标、输出和脚本快照。 工作区存储对数据存储和计算等资源的引用。 它还保存模型、环境、组件和数据资产等所有资产。

创建工作区

若要使用 Python SDK v2 创建工作区,可使用以下代码:

适用范围:Python SDK azure-ai-ml v2(最新版)

# specify the workspace details
ws = Workspace(
    name="my_workspace",
    location="eastus",
    display_name="My workspace",
    description="This example shows how to create a workspace",
    tags=dict(purpose="demo"),
)

ml_client.workspaces.begin_create(ws) # use MLClient to connect to the subscription and resource group and create workspace

Jupyter 笔记本演示了使用 SDK v2 创建 Azure 机器学习工作区的更多方法。

有关创建工作区的更详细信息,请参阅在门户中或使用 Python SDK (v2) 管理 Azure 机器学习工作区

计算

计算是运行作业或托管终结点的指定计算资源。 Azure 机器学习支持以下类型的计算:

  • 计算实例 - 完全在云中配置和托管的开发环境。 可将该实例用作训练或推理计算来进行开发和测试。 它类似于云中的虚拟机。
  • 计算群集 - 一种托管的计算基础结构,让你可以在云中轻松创建 CPU 或 GPU 计算节点的群集。
  • 无服务器计算 - 可以即时访问的计算群集。 使用无服务器计算时,不需要创建自己的群集。 所有计算生命周期管理工作负担都将转移到 Azure 机器学习。
  • 推理群集 - 用于将经过训练的机器学习模型部署到 Azure Kubernetes 服务。 可以从 Azure 机器学习工作区创建 Azure Kubernetes 服务 (AKS) 群集,或者附加现有的 AKS 群集。
  • 附加计算 - 你可以将自己的计算资源附加到工作区,并将其用于训练和推理。

创建计算

若要使用 Python SDK v2 创建计算群集,可使用以下代码:

适用范围:Python SDK azure-ai-ml v2(最新版)

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="chinanorth",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic)

Jupyter 笔记本演示了使用 SDK v2 创建计算的其他方法。

有关创建计算的更详细信息,请参阅:

数据存储

Azure 机器学习数据存储将连接信息安全地存储在 Azure 上的数据存储中,因此无需在脚本中对其进行编码。 可以注册并创建一个数据存储,以便轻松连接到存储帐户,并访问底层存储服务中的数据。 CLI v2 和 SDK v2 支持以下类型的基于云的存储服务:

  • Azure Blob 容器
  • Azure 文件共享
  • Azure Data Lake
  • Azure Data Lake Gen2

创建数据存储

若要使用 Python SDK v2 创建数据存储,可使用以下代码:

适用范围:Python SDK azure-ai-ml v2(最新版)

import AzureBlobDatastore

blob_datastore1 = AzureBlobDatastore(
    name="blob_example",
    description="Datastore pointing to a blob container.",
    account_name="mytestblobstore",
    container_name="data-container",
    credentials={
        "account_key": "XXXxxxXXXxXXXXxxXXXXXxXXXXXxXxxXxXXXxXXXxXXxxxXXxxXXXxXxXXXxxXxxXXXXxxxxxXXxxxxxxXXXxXXX"
    },
)
ml_client.create_or_update(blob_datastore1)

Jupyter 笔记本演示了使用 SDK v2 创建数据存储的其他方法。

若要详细了解如何使用数据存储,请参阅创建和管理数据资产

型号

Azure 机器学习模型由一个或多个表示机器学习模型的二进制文件和任何相应的元数据组成。 可以从本地或远程文件或目录创建模型。 支持使用 httpswasbsazureml 作为远程位置。 创建的模型将在工作区中按指定的名称和版本进行跟踪。 Azure 机器学习支持三种类型的模型存储格式:

  • custom_model
  • mlflow_model
  • triton_model

在模型注册表中创建模型

通过模型注册,可在 Azure 云的工作区中存储模型并控制模型版本。 模型注册表可帮助你组织和跟踪已训练的模型。

有关如何在注册表中创建模型的详细信息,请参阅在 Azure 机器学习中使用模型

环境

Azure 机器学习环境是执行机器学习任务的环境的封装。 这些环境将指定与训练和评分脚本有关的软件包、环境变量和软件设置。 环境是机器学习工作区中托管的且版本受控的实体。 环境支持跨各种计算的可重现、可审核和可移植机器学习工作流。

环境的类型

Azure 机器学习支持两种类型的环境:特选和自定义。

特选环境由 Azure 机器学习提供,且默认可用于你的工作区。 应该按原样使用它们,其中包含的 Python 包和设置的集合可帮助你开始使用各种机器学习框架。 这些预先创建的环境还可以加快部署速度。 如需完整列表,请参阅特选环境一文。

在自定义环境中,你需要负责设置环境,并安装训练或评分脚本需要在计算中用到的包或任何其他依赖项。 Azure 机器学习使你能够通过以下方式创建你自己的环境

  • Docker 映像
  • 基础 Docker 映像,并使用 conda YAML 进一步自定义
  • Docker 生成上下文

创建 Azure 机器学习自定义环境

若要使用 Python SDK v2 创建环境,请参阅创建环境

Jupyter 笔记本演示了使用 SDK v2 创建自定义环境的其他方法。

有关环境的更详细信息,请参阅在 Azure 机器学习中创建和管理环境

Data

Azure 机器学习可用于处理不同类型的数据:

  • URI(本地/云存储中的位置)
    • uri_folder
    • uri_file
  • 表(表格数据抽象)
    • mltable
  • 基元
    • string
    • boolean
    • number

对于大多数方案,会使用 URI(uri_folderuri_file)- 存储中的某个位置,可以通过将存储装载或下载到节点,轻松将此位置映射到作业中计算节点的文件系统。

mltable 是用于 AutoML 作业、并行作业和某些高级方案的表格数据的抽象。 如果你刚开始使用 Azure 机器学习,并且不使用 AutoML,我们强烈建议你从 URI 开始。

组件

Azure 机器学习组件是一段独立的代码,执行机器学习管道中的一个步骤。 组件是高级机器学习管道的构建基块。 组件可以执行数据处理、模型训练、模型评分等任务。 组件类似于函数 - 具有名称、参数,需要输入并可返回输出。