创建数据资产

适用于:Python SDK azure-ai-ml v2(当前版本)

适用于:Azure CLI ml 扩展 v2(当前)

本文介绍如何在 Azure 机器学习中创建数据资产。 通过创建数据资产,可以创建对数据源位置的引用及其元数据的副本。 由于数据保留在其现有位置中,因此不会产生额外的存储成本,也不会损害数据源的完整性。 可以从数据存储、Azure 存储、公共 URL 和本地文件创建数据。

创建数据资产的好处包括:

  • 可以与团队其他成员共享和重复使用数据,这样他们就无需记住文件位置。

  • 可以在模型训练期间(在任何受支持的计算类型上)无缝访问数据,而无需担心连接字符串或数据路径。

  • 可以对数据进行版本控制。

先决条件

若要创建和使用数据资产,需要做好以下准备:

支持的路径

在 Azure 机器学习中创建数据资产时,需要指定指向其位置的 path 参数。 下表显示了 Azure 机器学习中支持的不同数据位置以及 path 参数示例:

位置 示例
本地计算机上的路径 ./home/username/data/my_data
公共 http (s) 服务器上的路径 https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Azure 存储上的路径 https://<account_name>.blob.core.chinacloudapi.cn/<container_name>/path
abfss://<file_system>@<account_name>.dfs.core.chinacloudapi.cn/<path>
数据存储上的路径 azureml://datastores/<data_store_name>/paths/<path>

注意

从本地路径创建数据资产时,它将自动上传到云中的默认 Azure 机器学习数据存储。

创建 uri_folder 数据资产

下面演示如何将文件夹创建为资产:

创建 YAML 文件 (<file-name>.yml):

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: ./<path>
# blob:  https://<account_name>.blob.core.chinacloudapi.cn/<container_name>/<path>
# ADLS gen2: abfss://<file_system>@<account_name>.dfs.core.chinacloudapi.cn/<path>/
# Datastore: azureml://datastores/<data_store_name>/paths/<path>
type: uri_folder
name: <name_of_data>
description: <description goes here>
path: <path>

接下来,使用 CLI 创建数据资产:

az ml data create -f <file-name>.yml

创建 uri_file 数据资产

下面演示如何将特定文件创建为数据资产:

本地路径中数据的示例 YAML 文件 <file-name>.yml 如下所示:

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# Supported paths include:
# local: ./<path>/<file>
# blob:  https://<account_name>.blob.core.chinacloudapi.cn/<container_name>/<path>/<file>
# ADLS gen2: abfss://<file_system>@<account_name>.dfs.core.chinacloudapi.cn/<path>/<file>
# Datastore: azureml://datastores/<data_store_name>/paths/<path>/<file>

type: uri_file
name: <name>
description: <description>
path: <uri>
> az ml data create -f <file-name>.yml

创建 mltable 数据资产

mltable 这种方法可用来为表格数据抽象架构定义,以便更轻松地共享数据资产(概述见 MLTable)。

在本节中,我们将介绍当类型为 mltable 时如何创建数据资产。

MLTable 文件

MLTable 文件是一个提供数据架构规范的文件,使 mltable 引擎可以将数据具体化为内存中对象 (Pandas/Dask/Spark)。 下面提供了一个示例 MLTable 文件:

type: mltable

paths:
  - pattern: ./*.txt
transformations:
  - read_delimited:
      delimiter: ,
      encoding: ascii
      header: all_files_same_headers

重要

建议并置 MLTable 文件与存储中的基础数据。 例如:

├── my_data
│   ├── MLTable
│   ├── file_1.txt
.
.
.
│   ├── file_n.txt

并置 MLTable 与数据可确保得到自包含项目,即所需的全部内容都存储在一个文件夹 (my_data) 中;而无论该文件夹是存储在本地驱动器、云存储空间还是存储在公共 HTTP 服务器中。 不应在 MLTable 文件中指定绝对路径。

在 Python 代码中,使用以下命令将 MLTable 项目具体化为 Pandas 数据帧:

import mltable

tbl = mltable.load(uri="./my_data")
df = tbl.to_pandas_dataframe()

mltable.load() 中的 uri 参数应是包含有效 MLTable 文件的本地或云文件夹的有效路径。

注意

需要在环境中安装 mltable 库 (pip install mltable)。

下面介绍如何创建 mltable 数据资产。 path 可以是上述任何受支持的路径格式。

创建 YAML 文件 (<file-name>.yml):

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json

# path must point to **folder** containing MLTable artifact (MLTable file + data
# Supported paths include:
# local: ./<path>
# blob:  https://<account_name>.blob.core.chinacloudapi.cn/<container_name>/<path>
# ADLS gen2: abfss://<file_system>@<account_name>.dfs.core.chinacloudapi.cn/<path>/
# Datastore: azureml://datastores/<data_store_name>/paths/<path>

type: mltable
name: <name_of_data>
description: <description goes here>
path: <path>

注意

路径指向包含 MLTable 项目的文件夹。

接下来,使用 CLI 创建数据资产:

az ml data create -f <file-name>.yml

后续步骤