Azure 机器学习中的关键数据概念
借助 Azure 机器学习,可以从本地计算机或现有的基于云的存储资源中导入数据。 本文介绍重要的 Azure 机器学习数据概念。
数据存储
Azure 机器学习数据存储用作对现有 Azure 存储帐户的引用。 Azure 机器学习数据存储具有以下优势:
- 可使用易用的常见 API 与不同的存储类型(Blob/文件存储/ADLS)进行交互。
- 在团队运营中更轻松地发现有用的数据存储。
- 对于基于凭据的访问(服务主体/SAS/密钥),Azure 机器学习数据存储可保护连接信息。 这样,就不需要在脚本中放置该信息。
使用现有 Azure 存储帐户创建数据存储时,你有两个不同的身份验证方法选项:
- 基于凭据 - 使用服务主体、共享访问签名 (SAS) 令牌或帐户密钥对数据访问进行身份验证。 具有工作区读者访问权限的用户可以访问凭据。
- 基于标识:使用 Microsoft Entra 标识或托管标识对数据访问进行身份验证。
下表汇总了 Azure 机器学习数据存储可以创建的 Azure 基于云的存储服务。 此外,该表还汇总了可以访问这些服务的身份验证类型:
支持的存储服务 | 基于凭据的身份验证 | 基于标识的身份验证 |
---|---|---|
Azure Blob 容器 | ✓ | ✓ |
Azure 文件共享 | ✓ | |
Azure Data Lake Gen1 | ✓ | ✓ |
Azure Data Lake Gen2 | ✓ | ✓ |
有关数据存储的详细信息,请访问创建数据存储。
默认数据存储
每个 Azure 机器学习工作区都有一个默认存储帐户(Azure 存储帐户),其中包含以下数据存储:
提示
若要查找工作区的 ID,请转到 Azure 门户中的工作区。 选择“设置”,然后选择“属性”。 此时将显示工作区 ID。
数据存储名称 | 数据存储类型 | 数据存储名称 | 说明 |
---|---|---|---|
workspaceblobstore |
Blob 容器 | azureml-blobstore-{workspace-id} |
存储数据上传、作业代码快照和管道数据缓存。 |
workspaceworkingdirectory |
文件共享 | code-{GUID} |
存储笔记本、计算实例和提示流的数据。 |
workspacefilestore |
文件共享 | azureml-filestore-{workspace-id} |
用于数据上传的替代容器。 |
workspaceartifactstore |
Blob 容器 | azureml |
指标、模型和组件等资产的存储。 |
数据类型
URI(存储位置)可以引用文件、文件夹或数据表。 机器学习作业输入和输出定义需要以下三种数据类型之一:
类型 | V2 API | V1 API | 规范场景 | V2/V1 API 差异 |
---|---|---|---|---|
File 引用单个文件 |
uri_file |
FileDataset |
读/写单个文件 - 文件可以采用任何格式。 | V2 API 的新类型。 在 V1 API 中,文件始终映射到计算目标文件系统上的文件夹,此映射需要 os.path.join 。 在 V2 API 中,映射的是单个文件。 这样,就可以在代码中引用该位置。 |
文件夹 引用单个文件夹 |
uri_folder |
FileDataset |
必须将 parquet/CSV 文件的文件夹读取/写入到 Pandas/Spark 中。 使用文件夹中的图像、文本、音频、视频文件进行深度学习。 |
在 V1 API 中,FileDataset 有一个关联的引擎,可以从文件夹中获取文件样本。 在 V2 API 中,文件夹是到计算目标文件系统的简单映射。 |
表 引用数据表 |
mltable |
TabularDataset |
架构很复杂,可能会频繁更改,或者需要大型表格数据的一部分。 使用表的 AutoML。 |
在 V1 API 中,Azure 机器学习后端存储了数据具体化蓝图。 因此,仅当你有 Azure 机器学习工作区时,TabularDataset 才起作用。 mltable 将数据具体化蓝图存储在你的存储中。 存储在此位置意味着可以在不连接 Azure 机器学习的情况下使用它(例如在本地)。 在 V2 API 中,可以更轻松地从本地作业转换到远程作业。 有关详细信息,请访问在 Azure 机器学习中使用表。 |
URI
统一资源标识符 (URI) 表示本地计算机上的存储位置、Azure 存储或公开可用的 http(s) 位置。 这些示例显示了不同存储选项的 URI:
存储位置 | URI 示例 |
---|---|
Azure 机器学习数据存储 | azureml://datastores/<data_store_name>/paths/<folder1>/<folder2>/<folder3>/<file>.parquet |
本地计算机 | ./home/username/data/my_data |
公共 http(s) 服务器 | https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv |
Blob 存储 | wasbs://<containername>@<accountname>.blob.core.chinacloudapi.cn/<folder>/ |
Azure Data Lake (gen2) | abfss://<file_system>@<account_name>.dfs.core.chinacloudapi.cn/<folder>/<file>.csv |
Azure Data Lake (gen1) | adl://<accountname>.azuredatalakestore.net/<folder1>/<folder2> |
Azure 机器学习作业将 URI 映射到计算目标文件系统。 此映射意味着,对于使用或生成 URI 的命令,该 URI 的工作方式类似于文件或文件夹。 URI 使用基于标识的身份验证通过 Microsoft Entra ID(默认)或托管标识连接到存储服务。 Azure 机器学习数据存储 URI 可以应用基于标识的身份验证或基于凭据(例如服务主体、SAS 令牌、帐户密钥)的身份验证,而不会泄露机密。
URI 可以用作 Azure 机器学习作业的输入或输出,并且可以使用以下四种不同模式选项之一映射到计算目标文件系统:
- 只读装载 (
ro_mount
):URI 表示装载到计算目标文件系统的存储位置。 装载的数据位置仅支持只读输出。 - 读写装载 (
rw_mount
):URI 表示装载到计算目标文件系统的存储位置。 装载的数据位置支持其中的读取输出和数据写入。 - 下载 (
download
):URI 表示包含下载到计算目标文件系统的数据的存储位置。 - 上传 (
upload
):写入计算目标位置的所有数据都上传到 URI 表示的存储位置。
此外,还可以在“直接”模式下将 URI 作为作业输入字符串传入。 下表汇总了可用于输入和输出的模式组合:
作业 输入或输出 |
upload |
download |
ro_mount |
rw_mount |
direct |
---|---|---|---|---|---|
输入 | ✓ | ✓ | ✓ | ||
输出 | ✓ | ✓ |
有关详细信息,请参阅在作业中访问数据。
数据运行时功能
Azure 机器学习使用自己的数据运行时来完成以下三个目的之一:
- 装载/上传/下载
- 将存储 URI 映射到计算目标文件系统
- 使用 Azure 机器学习表 (
mltable
) 将表格数据具体化为 pandas/spark
Azure 机器学习数据运行时专为高速且高效完成机器学习任务而设计。 它提供以下主要优势:
- Rust 语言体系结构。 Rust 语言以高速和高内存效率而闻名。
- 轻型;Azure 机器学习数据运行时不依赖于其他技术(例如 JVM),因此,运行时可在计算目标上快速安装。
- 多进程(并行)数据加载。
- 数据预提取在 CPU 上作为后台任务运行,以提高 GPU 在深度学习操作中的利用率。
- 对云存储的无缝身份验证。
数据资产
Azure 机器学习数据资产与 Web 浏览器书签(收藏夹)类似。 可以创建数据资产,然后使用易记名称访问该资产,而无需记住指向最常用数据的冗长存储路径 (URI)。
通过创建数据资产,还可以创建对数据源位置的引用及其元数据的副本。 由于数据保留在其现有位置中,因此不会产生额外的存储成本,也不会损害数据源的完整性。 可以从 Azure 机器学习数据存储、Azure 存储、公共 URL 或本地文件创建数据资产。
有关数据资产的详细信息,请访问创建数据资产。