在 Azure 机器学习中使用批处理终结点时,可以对大量输入数据执行长时间的批处理操作。 数据可以位于不同的位置,例如分布在不同区域中。 某些类型的批处理终结点还可以接收文本参数作为输入。
本文介绍如何为批处理终结点指定参数输入并创建部署作业。 此过程支持处理来自各种源的数据,例如数据资产、数据存储、存储帐户和本地文件。
批处理终结点和部署。 要创建这些资源,请参阅使用 Azure 机器学习在批处理部署中部署 MLflow 模型 。
运行批处理终结点部署的权限。 可使用 AzureML 数据科学家 、参与者 和所有者 角色可用于运行部署。 对于自定义角色定义,请参阅批处理终结点上的授权 以查看所需的特定权限。
用于调用终结点的凭据。 有关详细信息,请参阅建立身份验证 。
从部署终结点的计算群集对输入数据的读取访问。
提示
在某些情况下,需要使用无凭据数据存储或外部 Azure 存储帐户作为数据输入。 在这些方案中,请确保为数据访问配置计算群集 ,因为计算群集的托管标识用于装载存储帐户。 你仍能进行精细访问控制,因为作业(调用程序)的标识仍用于读取基础数据。
若要调用终结点,需要有效的 Microsoft Entra 令牌。 调用终结点时,Azure 机器学习会在与令牌关联的标识下创建一个批处理部署作业。
如果使用 Azure 机器学习 CLI (v2) 或适用于 Python 的 Azure 机器学习 SDK (v2) ,则无需手动获取 Microsoft Entra 令牌。 登录期间,系统会对用户标识进行身份验证。 它还会检索并传递令牌。
如果使用 REST API 调用终结点,则需要手动获取令牌。
可以使用自己的凭据进行调用,具体过程如下。
使用 Azure CLI 通过交互式身份验证或设备代码身份验证登录 :
az login
使用适用于 Python 的 Azure 机器学习 SDK 登录:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
ml_client = MLClient.from_config(DefaultAzureCredential())
如果配置在 Azure 机器学习计算实例外部运行,则需要指定部署终结点的工作区:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
subscription_id = "<subscription-ID>"
resource_group = "<resource-group-name>"
workspace = "<workspace-name>"
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
为用户帐户获取有效令牌最容易的方法是使用 Azure CLI。 在控制台中,运行以下 Azure CLI 命令:
az account get-access-token --resource https://ml.azure.com --query "accessToken" --output tsv
提示
使用 REST 请求时,建议使用服务主体调用批处理终结点。 有关详细信息,请参阅使用服务主体运行作业 。
有关各种类型的凭据的详细信息,请参阅如何使用不同类型的凭据运行作业 。
若要通过批处理终结点创建作业,请调用该终结点。 可以使用 Azure 机器学习 CLI、适用于 Python 的 Azure 机器学习 SDK 或 REST API 调用来完成调用。
以下示例显示了接收单个输入数据文件夹进行处理的批处理终结点的调用基础知识。 有关涉及各种输入和输出的示例,请参阅了解输入和输出 。
在批处理终结点下使用 invoke
操作:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
使用 MLClient.batch_endpoints.invoke()
方法调用批处理终结点。 在以下代码中,endpoint
是一个终结点对象。
from azure.ai.ml import Input
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
inputs={
"heart_data": Input(path="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data")
}
)
向终结点的调用 URL 发出 POST
请求。 若要获取调用 URL,请转到 Azure 机器学习工作室并打开终结点的详细信息页。
在请求中使用以下正文:
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
}
}
}
}
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
Batch 终结点可以在同一终结点下托管多个部署。 除非用户另有指定,否则使用默认终结点。 可以使用以下过程更改所使用的部署。
使用参数--deployment-name
或-d
指定部署的名称:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--deployment-name $DEPLOYMENT_NAME \
--input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
使用参数 deployment_name
指定部署的名称。 在以下代码中,deployment
是一个部署对象。
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
deployment_name=deployment.name,
inputs={
"heart_data": Input(path="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data")
}
)
在请求中使用以下正文:
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
}
}
}
}
将标头秘钥 azureml-model-deployment
添加到请求。 对于其值,请使用要调用的部署的名称。
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
azureml-model-deployment: <deployment-name>
可以在调用时配置某些作业属性。
备注
目前,仅可在包含管道组件部署的批处理终结点中配置作业属性。
使用以下过程配置试验名称。
使用参数 --experiment-name
指定试验的名称:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--experiment-name "my-batch-job-experiment" \
--input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
使用参数 experiment_name
指试验的名称:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
experiment_name="my-batch-job-experiment",
inputs={
"heart_data": Input(path="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"),
}
)
使用正文的 properties
部分中的 experimentName
键指示试验名称:
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
}
},
"properties":
{
"experimentName": "my-batch-job-experiment"
}
}
}
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
批处理终结点提供使用者可用来创建批处理作业的持久 API。 可使用同一接口指定部署预期的输入和输出。 使用输入传递终结点执行作业所需的任何信息。
Batch 终结点支持两种类型的输入:
数据输入 ,或指向特定存储位置或 Azure 机器学习资产的指针
文本输入 ,或要传递给作业的文本值(如数字或字符串)
输入和输出的数量和类型取决于批处理部署的类型 。 模型部署始终需要一个数据输入并生成一个数据输出。 模型部署不支持文本输入。 相比之下,管道组件部署为生成终结点提供了更通用的构造。 在管道组件部署中,可以指定任意数量的数据输入、文本输入和输出。
下表汇总了批处理部署的输入和输出:
展开表
提示
始终对输入和输出命名。 每个名称充当用于标识数据并在调用期间传递值的键。 由于模型部署始终需要一个输入和输出,因此在模型部署中进行调用时会忽略这些名称。 可以指定最能描述用例的名称,如 sales_estimation
。
数据输入是指指向数据放置位置的输入。 由于批处理终结点通常使用大量数据,因此不能在调用请求中传递输入数据。 而是指定批处理终结点查找数据时应转到的位置。 在目标计算实例上装载和流式传输输入数据以提高性能。
Batch 终结点可以读取位于以下存储类型中的文件:
Azure 机器学习数据资产 ,包括文件夹 (uri_folder
) 和文件 (uri_file
) 类型。
Azure 机器学习数据存储 ,包括 Azure Blob 存储、Azure Data Lake Storage Gen1 和 Azure Data Lake Storage Gen2。
Azure 存储帐户 ,包括 Blob 存储、Data Lake Storage Gen1 和 Data Lake Storage Gen2。
使用面向 Python 的 Azure 机器学习 CLI 或 Azure 机器学习 SDK 调用终结点时的本地数据文件夹和文件。 但本地数据将上传到 Azure 机器学习工作区的默认数据存储。
重要
弃用通知:FileDataset
类型的数据资产 (V1) 已弃用,并且将来会停用 。 依赖此功能的现有批处理终结点将继续工作。 但不支持使用以下方法创建的批处理终结点中的 V1 数据集:
正式发布的 Azure 机器学习 CLI v2 版本(2.4.0 及更高版本)。
正式发布的 REST API 版本(2022-05-01 及更高版本)。
文本输入是指可以在调用时表示和解析的输入,如字符串、数字和布尔值。 在管道组件部署过程中,通常使用文本输入将参数传递给终结点。 批处理终结点支持以下文本类型:
string
boolean
float
integer
仅在管道组件部署中支持文本输入。 要查看如何指定文本终结点,请参阅使用文本输入创建作业 。
数据输出是指批处理作业结果的放置位置。 每个输出都有一个可识别的名称,Azure 机器学习会自动为每个已命名的输出分配唯一路径。 如果需要,可以指定另一个路径。
重要
批处理终结点仅支持在 Blob 存储数据存储中写入输出。 如果需要写入已启用分层命名空间的存储帐户(例如 Data Lake Storage Gen2),可以将存储服务注册为 Blob 存储数据存储,因为这些服务完全兼容。 可以通过这种方式将批处理终结点的输出写入 Data Lake Storage Gen2。
以下示例演示如何在从数据资产 、数据存储 和 Azure 存储帐户 获取数据输入时创建作业。
支持将 Azure 机器学习数据资产(以前称为数据集)作为作业的输入。 按照以下步骤使用 Azure 机器学习中已注册数据资产中存储的输入数据来运行批处理终结点作业。
警告
目前不支持表类型 (MLTable
) 的数据资产。
创建数据资产。 在此示例中,它包含一个文件夹,其中包含多个 CSV 文件。 使用批处理终结点并行处理文件。 如果你的数据已注册为数据资产,则可以跳过此步骤。
在名为 heart-data.yml 的 YAML 文件中创建数据资产定义:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: heart-data
description: An unlabeled data asset for heart classification.
type: uri_folder
path: data
创建数据资产:
az ml data create -f heart-data.yml
创建数据资产定义:
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data
data_path = "heart-classifier-mlflow/data"
data_asset_name = "heart-data"
heart_data_object = Data(
path=data_path,
type=AssetTypes.URI_FOLDER,
description="An unlabeled data asset for heart classification",
name=data_asset_name
)
创建数据资产:
ml_client.data.create_or_update(heart_data_object)
若要检索新创建的数据资产,请使用以下命令:
heart_data_asset = ml_client.data.get(name=data_asset_name, label="latest")
使用 Azure 机器学习 CLI 或适用于 Python 的 Azure 机器学习 SDK 创建数据资产。
设置输入:
DATA_ASSET_ID=$(az ml data show -n heart-data --label latest | jq -r .id)
input = Input(path=heart_data_asset.id)
查找以下值,然后构造数据资产 ID:
订阅 ID
资源组名称
工作区名称
数据资产名称
数据资产版本
数据资产 ID 的格式为 /subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/data/<data-asset-name>/versions/<data-asset-version>
。
运行终结点:
使用 --set
参数指定输入。 首先将数据资产名称中的任何连字符替换为下划线字符。 键仅可包含字母数字字符和下划线字符。
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--set inputs.heart_data.type="uri_folder" inputs.heart_data.path=$DATA_ASSET_ID
对于提供模型部署的终结点,可以使用 --input
参数来指定数据输入,因为模型部署始终只需要一个数据输入。
az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $DATA_ASSET_ID
当指定多个输入时,--set
参数往往会生成长命令。 在这种情况下,可以在文件中列出输入,然后在调用终结点时引用该文件。 例如,可以创建一个名为 inputs.yml 的 YAML 文件,其中包含以下行:
inputs:
heart_data:
type: uri_folder
path: /subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/data/heart-data/versions/1
然后,可以运行以下命令,该命令使用 --file
参数来指定输入:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
调用 invoke
方法,并使用 inputs
参数指定所需的输入:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
inputs={
"heart_data": input
}
)
要简化模型部署的 invoke
调用,请使用 input
参数指定输入数据的位置:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
input=input
)
提示
调用终结点时,使用 inputs
和 input
参数有什么差别?
一般情况下,可以将字典 inputs = {}
参数与 invoke
方法一起使用,以便向包含模型部署 或管道部署 的批处理终结点提供任意数量的所需输入。
对于模型部署 ,可以使用 input
参数来更方便地指定部署的输入数据位置。 这种方法之所以可行,是因为模型部署始终只采用一个数据输入 。
在请求中使用以下正文:
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "<data-asset-ID>"
}
}
}
}
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
批处理部署作业直接引用 Azure 机器学习注册数据存储中的数据。 在此示例中,你会首先将一些数据上传到 Azure 机器学习工作区中的默认数据存储。 然后,在该数据上运行批处理部署。
此示例使用默认数据存储,但可以使用其他数据存储。 在 Azure 机器学习工作区中,默认 Blob 数据存储名为 workspaceblobstore 。 如果要在以下步骤中使用其他数据存储,请将 workspaceblobstore
替换为首选数据存储的名称。
将示例数据上传到数据存储。 示例数据在 azureml-examples 存储库中提供。 可以在该存储库的 sdk/python/endpoints/batch/deploy-models/heart-classifier-mlflow/data 文件夹中找到数据。
在 Azure 机器学习 工作室中,打开默认 Blob 数据存储的数据资产页,然后查找其 Blob 容器的名称。
使用 Azure 存储资源管理器或 AzCopy 等工具将示例数据上传到该容器中名为 heart-disease-uci-unlabel 的文件夹。
设置输入信息:
将文件路径放在 INPUT_PATH
变量中:
DATA_PATH="heart-disease-uci-unlabeled"
INPUT_PATH="azureml://datastores/workspaceblobstore/paths/$DATA_PATH"
将文件路径放在 input
变量中:
data_path = "heart-disease-uci-unlabeled"
input = Input(type=AssetTypes.URI_FOLDER, path=f"azureml://datastores/workspaceblobstore/paths/{data_path}")
如果数据位于文件中,请将输入类型分配更改为 type=AssetTypes.URI_FILE
。
在请求中使用以下正文。 首先将占位符替换为适当的值。 将 <data-path>
占位符替换为 heart-disease-uci-unlabeled
。
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/datastores/workspaceblobstore/paths/<data-path>"
}
}
}
}
如果数据位于文件中,请使用 UriFile
类型作为 JobInputType
值。
请注意 paths
文件夹是如何作为输入路径的一部分的。 此格式指示后面的值是路径。
运行终结点:
使用 --set
参数指定输入:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--set inputs.heart_data.type="uri_folder" inputs.heart_data.path=$INPUT_PATH
对于提供模型部署的终结点,可以使用 --input
参数来指定数据输入,因为模型部署始终只需要一个数据输入。
az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_PATH --input-type uri_folder
当指定多个输入时,--set
参数往往会生成长命令。 在这种情况下,可以在文件中列出输入,然后在调用终结点时引用该文件。 例如,可以创建一个名为 inputs.yml 的 YAML 文件,其中包含以下行:
inputs:
heart_data:
type: uri_folder
path: azureml://datastores/workspaceblobstore/paths/<data-path>
如果数据位于文件中,请改用 uri_file
类型作为输入。
然后,可以运行以下命令,该命令使用 --file
参数来指定输入:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
通过使用 inputs
参数指定所需的输入,调用 invoke
方法:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
inputs={
"heart_data": input
}
)
要简化模型部署的 invoke
调用,请使用 input
参数指定输入数据的位置:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
input=input
)
提示
调用终结点时,使用 inputs
和 input
参数有什么差别?
一般情况下,可以将字典 inputs = {}
参数与 invoke
方法一起使用,以便向包含模型部署 或管道部署 的批处理终结点提供任意数量的所需输入。
对于模型部署 ,可以使用 input
参数来更方便地指定部署的输入数据位置。 这种方法之所以可行,是因为模型部署始终只采用一个数据输入 。
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
Azure 机器学习批处理终结点可以从 Azure 存储帐户中的云位置(包括公有云和私有云)读取数据。 按以下步骤使用存储帐户中的数据运行批处理终结点作业。
有关从存储帐户读取数据所需的其他配置的详细信息,请参阅配置计算群集以便进行数据访问 。
设置输入:
设置 INPUT_DATA
变量:
INPUT_DATA="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
如果数据位于文件中,请使用以下类似的格式来定义输入路径:
INPUT_DATA="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
设置 input
变量:
input = Input(
type=AssetTypes.URI_FOLDER,
path="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
)
如果数据位于文件中,请将输入类型分配更改为 type=AssetTypes.URI_FILE
:
input = Input(
type=AssetTypes.URI_FILE,
path="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
)
在请求中使用以下正文:
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
}
}
}
}
如果数据位于文件中,请将 JobInputType
值更改为 UriFile
:
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFile",
"Uri": "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
}
}
}
}
运行终结点:
使用 --set
参数指定输入:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--set inputs.heart_data.type="uri_folder" inputs.heart_data.path=$INPUT_DATA
对于提供模型部署的终结点,可以使用 --input
参数来指定数据输入,因为模型部署始终只需要一个数据输入。
az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_DATA --input-type uri_folder
当指定多个输入时,--set
参数往往会生成长命令。 在这种情况下,可以在文件中列出输入,然后在调用终结点时引用该文件。 例如,可以创建一个名为 inputs.yml 的 YAML 文件,其中包含以下行:
inputs:
heart_data:
type: uri_folder
path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
然后,可以运行以下命令,该命令使用 --file
参数来指定输入:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
如果数据位于文件中,请使用 uri_file
inputs.yml 文件中的类型作为数据输入。
通过使用 inputs
参数指定所需的输入,调用 invoke
方法:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
inputs={
"heart_data": input
}
)
要简化模型部署的 invoke
调用,请使用 input
参数指定输入数据的位置:
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
input=input
)
提示
调用终结点时,使用 inputs
和 input
参数有什么差别?
一般情况下,可以将字典 inputs = {}
参数与 invoke
方法一起使用,以便向包含模型部署 或管道部署 的批处理终结点提供任意数量的所需输入。
对于模型部署 ,可以使用 input
参数来更方便地指定部署的输入数据位置。 这种方法之所以可行,是因为模型部署始终只采用一个数据输入 。
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
管道组件部署可以采用文本输入。 有关包含基本管道的批处理部署示例,请参阅如何使用批处理终结点部署管道 。
以下示例演示如何指定名为 score_mode
的输入,其类型为 string
,值为 append
:
将输入放到 YAML 文件中,例如名为 inputs.yml 的 YAML 文件:
inputs:
score_mode:
type: string
default: append
运行以下命令,该命令使用 --file
参数指定输入。
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
还可以使用 --set
参数来指定类型和默认值。 但是,当指定多个输入时,此方法往往会生成长命令:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--set inputs.score_mode.type="string" inputs.score_mode.default="append"
使用 inputs
参数提供有关文本输入的信息。
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
inputs = {
'score_mode': Input(type="string", default="append")
}
)
在请求中使用以下正文:
{
"properties": {
"InputData": {
"score_mode": {
"JobInputType" : "Literal",
"Value": "append"
}
}
}
}
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json
以下示例演示如何更改命名为 score
的输出的位置。 为了保持内容完整,该示例还配置了命名为 heart_data
的输入。
此示例使用默认数据存储 workspaceblobstore 。 但可以使用工作区中的任何其他数据存储,只要它是 Blob 存储帐户即可。 如果要使用不同的数据存储,请将以下步骤中的 workspaceblobstore
替换为首选数据存储的名称。
获取数据存储的 ID。
DATA_STORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
from azure.ai.ml import Output
default_ds = ml_client.datastores.get_default()
数据存储 ID 的格式为 /subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>/datastores/workspaceblobstore
。
创建数据输出:
在名为 inputs-and-outputs.yml 的文件中定义输入和输出值。 在输出路径中使用数据存储 ID。 为了完整性,还需定义数据输入。
inputs:
heart_data:
type: uri_folder
path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
outputs:
score:
type: uri_file
path: <data-store-ID>/paths/batch-jobs/my-unique-path
设置 output
路径变量:
data_path = "batch-jobs/my-unique-path"
output = Output(type=AssetTypes.URI_FILE, path=f"{default_ds.id}/paths/{data_path}")
为了保持内容完整,还要创建一个数据输入:
input = Input(
type=AssetTypes.URI_FOLDER,
path="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
)
在请求中使用以下正文。 首先将 <data-path>
占位符替换为唯一路径,例如 batch-jobs/my-unique-path
。 此外,请将 <data-store-ID>
占位符替换为数据存储的 ID。
{
"properties": {
"InputData": {
"heart_data": {
"JobInputType" : "UriFolder",
"Uri": "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
}
},
"OutputData": {
"score": {
"JobOutputType" : "UriFile",
"Uri": "<data-store-ID>/paths/<data-path>"
}
}
}
}
备注
请注意 paths
文件夹是如何作为输出路径的一部分的。 此格式指示后面的值是路径。
运行部署:
使用 --file
参数指定输入和输出值:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs-and-outputs.yml
使用 outputs
参数提供有关输出的信息。
job = ml_client.batch_endpoints.invoke(
endpoint_name=endpoint.name,
inputs={ "heart_data": input },
outputs={ "score": output }
)
创建请求:
POST HTTP/1.1
Host: <endpoint-URI>
Authorization: Bearer <token>
Content-Type: application/json