适用于:Python SDK azure-ai-ml v2(当前版本)
本文介绍如何在 Azure 机器学习中创建数据资产。 通过创建数据资产,可以创建对数据源位置的引用及其元数据的副本。 由于数据保留在其现有位置中,因此不会产生额外的存储成本,也不会损害数据源的完整性。 可以从数据存储、Azure 存储、公共 URL 和本地文件创建数据。
创建数据资产的好处包括:
可以与团队其他成员共享和重复使用数据,这样他们就无需记住文件位置。
可以在模型训练期间(在任何受支持的计算类型上)无缝访问数据,而无需担心连接字符串或数据路径。
可以对数据进行版本控制。
先决条件
若要创建和使用数据资产,需要做好以下准备:
Azure 订阅。 如果没有订阅,请在开始之前创建一个试用帐户。 试用免费版或付费版 Azure 机器学习。
Azure 机器学习工作区。 创建工作区资源。
已安装 Azure 机器学习 CLI/SDK 和 MLTable 包 (
pip install mltable
)。
支持的路径
在 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