导入数据资产(预览)

适用范围:Azure CLI ml 扩展 v2(当前版本)Python SDK azure-ai-ml v2(当前版本)

本文介绍如何将数据从外部源导入 Azure 机器学习平台。 如果数据导入成功,则会自动使用导入期间提供的名称创建并注册 Azure 机器学习数据资产。 Azure 机器学习数据资产类似于 Web 浏览器书签(收藏夹)。 无需记住指向最常用的数据的长存储路径 (URI)。 相反,你可以创建数据资产,然后使用友好名称访问该资产。

数据导入会创建源数据和元数据的缓存,以便在 Azure 机器学习训练作业中更快、更可靠地访问数据。 数据缓存可避免网络和连接约束。 对缓存的数据进行版本控制以支持可重现性。 这为从 SQL Server 源导入的数据提供版本控制功能。 此外,缓存的数据还提供数据世系来审核任务。 数据导入在后台使用 ADF(Azure 数据工厂管道),这意味着用户可以避免与 ADF 进行复杂的交互。 在后台,Azure 机器学习还会处理 ADF 计算资源池大小的管理、计算资源预配和清理,以便通过确定适当的并行化来优化数据传输。

传输的数据已分区,并作为 parquet 文件安全地存储在 Azure 存储中。 这样做可在训练期间提高处理速度。 ADF 计算成本仅涉及用于数据传输的时间。 存储成本仅涉及缓存数据所需的时间,因为缓存的数据是从外部源导入的数据副本。 Azure 存储托管该外部源。

缓存功能涉及前期计算和存储成本。 但是,与在训练期间直接连接到外部源数据相比,它可自行付费,并且能够节省资金,因为它降低了经常性的训练计算成本。 它将数据缓存为 parquet 文件,这使得作业训练更快、更可靠,从而防止大型数据集出现连接超时。 这可以减少重新运行次数和训练失败次数。

可以从 Amazon S3、Azure SQL 和 Snowflake 导入数据。

重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

先决条件

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

注意

要成功导入数据,请验证是否已安装适用于 SDK 的最新 azure-ai-ml 包(版本 1.15.0 或更高版本)以及 ml 扩展(版本 2.15.1 或更高版本)。

如果有较旧的 SDK 包或 CLI 扩展,请删除旧包,并使用选项卡部分中显示的代码安装新包。 按照如下所示的 SDK 和 CLI 说明进行操作:

代码版本

az extension remove -n ml
az extension add -n ml --yes
az extension show -n ml #(the version value needs to be 2.15.1 or later)

从外部数据库作为 mltable 数据资产导入

注意

外部数据库可以具有 Snowflake、Azure SQL 等格式。

以下代码示例可以从外部数据库导入数据。 负责处理导入操作的 connection 将确定外部数据库数据源元数据。 在此示例中,代码从 Snowflake 资源导入数据。 连接指向 Snowflake 源。 稍加修改,连接即可指向 Azure SQL 数据库源和 Azure SQL 数据库源。 从外部数据库源导入的资产 typemltable

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

$schema: http://azureml/sdk-2-0/DataImport.json
# Supported connections include:
# Connection: azureml:<workspace_connection_name>
# Supported paths include:
# Datastore: azureml://datastores/<data_store_name>/paths/<my_path>/${{name}}


type: mltable
name: <name>
source:
  type: database
  query: <query>
  connection: <connection>
path: <path>

接下来,在 CLI 中运行以下命令:

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

从外部文件系统将数据作为文件夹数据资产导入

注意

Amazon S3 数据资源可用作外部文件系统资源。

负责处理数据导入操作的 connection 将确定外部数据源方面。 连接将 Amazon S3 存储桶定义为目标。 连接需要有效的 path 值。 从外部文件系统源导入的资产值的 typeuri_folder

下一个代码示例从 Amazon S3 资源导入数据。

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

$schema: http://azureml/sdk-2-0/DataImport.json
# Supported connections include:
# Connection: azureml:<workspace_connection_name>
# Supported paths include:
# path: azureml://datastores/<data_store_name>/paths/<my_path>/${{name}}


type: uri_folder
name: <name>
source:
  type: file_system
  path: <path_on_source>
  connection: <connection>
path: <path>

接下来,在 CLI 中执行以下命令:

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

检查外部数据源的导入状态

数据导入操作是一种异步操作。 这可能需要很长时间。 通过 CLI 或 SDK 提交导入数据操作后,Azure 机器学习服务可能需要几分钟才能连接到外部数据源。 然后,服务将启动数据导入并处理数据缓存和注册。 导入数据所需的时间还取决于源数据集的大小。

下一个示例返回提交的数据导入活动的状态。 命令或方法使用“数据资产”名称作为输入来确定数据具体化的状态。

> az ml data list-materialization-status --name <name>

后续步骤