从 Azure 数据工厂运行批处理终结点

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

大数据需要可以启用协调和操作过程以将这些巨大的原始数据存储优化为可操作的业务见解的服务。 Azure 数据工厂是专为复杂的混合提取-转换-加载 (ETL)、提取-加载-转换 (ELT) 和数据集成项目而构建的托管云服务。

Azure 数据工厂允许创建管道,这些管道可以协调多个数据转换并将其作为单个单元进行管理。 批处理终结点是成为此类处理工作流中的一个步骤的极好候选项。 在本例中,了解如何通过依赖于 Web 调用活动和 REST API 在 Azure 数据工厂活动中使用批处理终结点。

先决条件

对批处理终结点进行身份验证

Azure 数据工厂可以使用 Web 调用活动来调用批处理终结点的 REST API。 Batch 终结点支持 Microsoft Entra ID 进行授权,因此对 API 发出的请求需要适当的身份验证处理。

你可以使用服务主体或托管标识对批处理终结点进行身份验证。 建议使用托管标识,因为它简化了机密的使用。

  1. 可以使用 Azure 数据工厂托管标识与批处理终结点通信。 在这种情况下,只需确保已使用托管标识部署 Azure 数据工厂资源。

  2. 如果没有 Azure 数据工厂资源,或者已部署但没有使用托管标识,请按照以下步骤创建它:Azure 数据工厂托管标识

    警告

    请注意,在 Azure 数据工厂中,资源标识一旦部署就无法更改。 创建资源后,如果需要更改资源标识,则需要重新创建它。

  3. 部署后,向你创建的资源的托管标识授予对 Azure 机器学习工作区的访问权限,如授予访问权限中所述。 在本例中,服务主体将需要:

    1. 工作区中读取批处理部署并对其执行操作的权限。
    2. 在数据存储中读取/写入的权限。
    3. 读取指定为数据输入的任何云位置(存储帐户)的权限。

关于管道

我们将在 Azure 数据工厂中创建一个管道,该管道可以针对某些数据调用给定的批处理终结点。 管道将使用 REST 与 Azure 机器学习批处理终结点进行通信。 要详细了解如何使用批处理终结点的 REST API,请阅读为批处理终结点创建作业和输入数据

管道如下所示:

Diagram that shows th high level structure of the pipeline we are creating.

它由以下活动组成:

  • 运行批处理终结点:这是一个 Web 活动,使用批处理终结点 URI 来调用它。 它将传递数据所在的输入数据 URI 和预期输出文件。
  • 等待作业:这是一个循环活动,用于检查已创建作业的状态并等待其完成,完成后将显示为“已完成”或“失败”。 此活动依次使用以下活动:
    • 检查状态:这是一个 Web 活动,用于查询作为“运行批处理终结点”活动的响应返回的作业资源的状态。
    • 等待:这是一个等待活动,用于控制作业状态的轮询频率。 我们将默认值设置为 120(2 分钟)。

管道需要配置以下参数:

参数 说明 示例值
endpoint_uri 终结点评分 URI https://<endpoint_name>.<region>.inference.studio.ml.azure.cn/jobs
poll_interval 在检查作业状态是否为完成之前等待的秒数。 默认为 120 120
endpoint_input_uri 终结点的输入数据。 支持多个数据输入类型。 确保用于执行作业的管理标识有权访问基础位置。 或者,如果使用数据存储,请确保其中指示凭据。 azureml://datastores/.../paths/.../data/
endpoint_input_type 要提供的输入数据的类型。 目前,批处理终结点支持文件夹 (UriFolder) 和文件 (UriFile)。 默认为 UriFolder UriFolder
endpoint_output_uri 终结点的输出数据文件。 它必须是附加到机器学习工作区的数据存储中的输出文件的路径。 不支持其他类型的 URI。 可以使用名为 workspaceblobstore 的默认 Azure 机器学习数据存储。 azureml://datastores/workspaceblobstore/paths/batch/predictions.csv

警告

请记住,endpoint_output_uri 应是尚不存在的文件的路径。 否则,作业将失败,并显示“路径已存在”错误。

步骤

若要在现有 Azure 数据工厂中创建此管道并调用批处理终结点,请执行以下步骤:

  1. 确保运行批处理终结点的计算有权装载由 Azure 数据工厂作为输入提供的数据。 请注意,访问权限仍由调用终结点(在本例中为 Azure 数据工厂)的标识授予。 但是,运行批处理终结点的计算需要有权装载 Azure 数据工厂提供的存储帐户。 有关详细信息,请参阅访问存储服务

  2. 打开“Azure 数据工厂工作室”,在“工厂资源”下单击加号。

  3. 选择“管道”>“从管道模板导入”

  4. 系统将提示你选择 zip 文件。

  5. 管道预览将显示在门户中。 单击“使用此模板”

  6. 将使用名称“Run-BatchEndpoint”创建管道。

  7. 配置正在使用的批处理部署的参数:

警告

在向批处理终结点提交作业之前,请确保其配置了默认部署。 创建的管道将调用终结点,因此需要创建和配置默认部署。

提示

为了获得最佳可重用性,请使用创建的管道作为模板,并通过利用执行管道活动从其他 Azure 数据工厂管道内部调用它。 在这种情况下,不要在内部管道中配置参数,而要将它们作为参数从外部管道传递,如下图所示:

Screenshot of the pipeline parameters expected for the resulting pipeline when invoked from another pipeline.

  1. 管道已经可以使用。

限制

调用 Azure 机器学习批处理部署时,请考虑以下限制:

数据输入

  • 仅支持 Azure 机器学习数据存储或 Azure 存储帐户(Azure Blob 存储、Azure Data Lake Storage Gen2)作为输入。 如果输入数据位于另一个源中,请在执行批处理作业之前使用 Azure 数据工厂复制活动将数据接收到兼容存储中。

  • 批处理终结点作业不会浏览嵌套文件夹,因此不能使用嵌套文件夹结构。 如果数据分布在多个文件夹中,请注意,必须平展结构。

  • 确保部署中提供的评分脚本能够处理应会馈送到作业中的数据。 如果模型为 MLflow,请参阅在批处理部署中使用 MLflow 模型,了解支持的文件类型方面的限制。

数据输出

  • 目前仅支持已注册的 Azure 机器学习数据存储。 建议注册由 Azure 数据工厂在 Azure 机器学习中用作数据存储的存储帐户。 这样,就可以写回到从中读取数据的同一存储帐户。
  • 输出只支持 Azure Blob 存储帐户。 例如,批处理部署作业不支持 Azure Data Lake Storage Gen2 作为输出。 如果需要将数据输出到其他位置/接收器,请在执行批处理作业后使用 Azure 数据工厂复制活动。

后续步骤