你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用范围:
Azure CLI ml 扩展 v2(最新版)
Python SDK azure-ai-ml v2(最新版)
批处理终结点允许部署对大量数据运行推理的模型。 这些终结点简化了批量评分的托管模型,因此你可以专注于机器学习而不是基础结构。
在以下情况下,使用批处理终结点部署模型:
- 您使用需要更长时间进行推断的昂贵模型。
- 对分布在多个文件中的大量数据执行推理。
- 不需要低延迟。
- 你可以利用并行化。
本文介绍如何使用批处理终结点部署机器学习模型,该模型可解决经典 MNIST(修改的国家标准与技术研究所)数字识别问题。 部署的模型对大量数据(如图像文件)执行批处理推理。 该步骤首先对使用 Torch 构建的模型进行批量部署。 此部署将成为终结点中的默认值。 稍后,创建使用 TensorFlow (Keras)生成的模型 的第二个部署 ,测试第二个部署,并将其设置为终结点的默认部署。
Prerequisites
在按照本文中的步骤操作之前,请确保满足以下先决条件:
Azure 订阅。 如果没有 Azure 订阅,请在开始操作前先创建一个免费帐户。 试用 Azure 机器学习的免费版或付费版。
Azure 机器学习工作区。 如果没有,请使用如何管理工作区一文中的步骤创建一个。
若要执行以下任务,请确保在工作区中具有以下权限:
若要创建/管理批处理终结点和部署:请使用所有者角色、参与者角色或允许
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*的自定义角色。若要在工作区资源组中创建 ARM 部署:在部署工作区的资源组中使用所有者角色、参与者角色或允许
Microsoft.Resources/deployments/write的自定义角色。
需要安装以下软件才能使用 Azure 机器学习:
Azure CLI 和
ml适用于 Azure 机器学习的扩展。az extension add -n ml
克隆示例存储库
本文中的示例基于 azureml-examples 存储库中包含的代码示例。 要在无需复制/粘贴 YAML 和其他文件的情况下在本地运行命令,请先克隆存储库,然后将目录更改为以下文件夹:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli/endpoints/batch/deploy-models/mnist-classifier
准备你的系统
连接到工作区
首先,连接到在其中工作的 Azure 机器学习工作区。
如果尚未为 Azure CLI 指定默认设置,则应保存默认设置。 若要避免多次输入订阅、工作区、资源组和位置的值,请运行以下代码:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
创建计算
批处理终结点在计算群集上运行且支持 Azure 机器学习计算群集 (AmlCompute) 和 Kubernetes 群集。 群集是一种共享资源,因此一个群集可以托管一个或多个批处理部署(如果需要,还可以托管其他工作负载)。
创建名为 batch-cluster 的计算,如以下代码所示。 根据需要进行调整,并使用 azureml:<your-compute-name> 引用计算。
az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
注意
此时不会为计算付费,因为群集在调用批处理终结点并提交批处理评分作业之前仍为 0 个节点。 有关计算成本的详细信息,请参阅管理和优化 AmlCompute 的成本。
创建批处理终结点
批处理终结点是客户端调用以触发批处理评分作业的 HTTPS 终结点。 批处理评分作业对多个输入进行评分。 批处理部署是托管执行批处理评分的模型的一组计算资源(或批处理推理)。 一个批处理终结点可以包含多个批处理部署。 有关批处理终结点的详细信息,请参阅什么是批处理终结点?
提示
其中一个批处理部署充当该终结点的默认部署。 调用终结点时,默认部署将执行批处理评分。 有关批处理终结点和部署的详细信息,请参阅 批处理终结点和批处理部署。
命名终结点。 终结点的名称在 Azure 区域中必须唯一,因为该名称包含在终结点的 URI 中。 例如,
mybatchendpoint中只能有一个名为westus2的批处理终结点。配置批处理终结点
以下 YAML 文件定义了批处理终结点。 将此文件与 CLI 命令一起使用,以便 创建批处理终结点。
endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: mnist-batch description: A batch endpoint for scoring images from the MNIST dataset. tags: type: deep-learning下表描述了终结点的关键属性。 有关完整的批处理终结点 YAML 架构,请参阅 CLI (v2) 批处理终结点 YAML 架构。
密钥 说明 name批处理终结点的名称。 在 Azure 区域级别需是唯一的。 description批处理终结点的说明。 此属性是可选的。 tags要包含在终结点中的标记。 此属性是可选的。 创建终结点:
创建批处理部署
模型部署是一组资源,在承载执行实际推理的模型时需要它。 若要创建批处理模型部署,你需要具备以下项:
- 工作区中已注册的模型
- 用于为模型评分的代码
- 安装了模型的依赖项的环境
- 预先创建的计算和资源设置
首先,注册要部署的模型 - 用于热门数字识别问题 (MNIST) 的 Torch 模型。 批处理部署只能部署已在工作区中注册的模型。 如果要部署的模型已注册,则可以跳过此步骤。
提示
模型与部署关联,而不与终结点关联。 这意味着,只要不同的模型(或模型版本)部署在不同的部署中,单个终结点就可以在同一终结点下提供不同的模型(或模型版本)。
现在可以创建评分脚本了。 批处理部署需要一个评分脚本,该脚本指示应如何执行给定的模型,以及如何处理输入数据。 批处理终结点支持使用 Python 创建的脚本。 在本例中,你需要部署一个模型来读取表示数字的图像文件并输出相应的数字。 评分脚本如下所示:
注意
对于 MLflow 模型,Azure 机器学习会自动生成评分脚本,因此无需提供评分脚本。 如果你的模型是 MLflow 模型,则可以跳过此步骤。 有关批处理终结点如何与 MLflow 模型配合工作的详细信息,请参阅在批处理部署中使用 MLflow 模型一文。
警告
如果要在批处理终结点下部署自动化机器学习(AutoML)模型,请注意,AutoML 提供的评分脚本仅适用于联机终结点,不适用于批处理执行。 有关如何为批处理部署创建评分脚本的信息,请参阅创建批处理部署的评分脚本。
deployment-torch/code/batch_driver.py
import os import pandas as pd import torch import torchvision import glob from os.path import basename from mnist_classifier import MnistClassifier from typing import List def init(): global model global device # AZUREML_MODEL_DIR is an environment variable created during deployment # It is the path to the model folder model_path = os.environ["AZUREML_MODEL_DIR"] model_file = glob.glob(f"{model_path}/*/*.pt")[-1] model = MnistClassifier() model.load_state_dict(torch.load(model_file)) model.eval() device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") def run(mini_batch: List[str]) -> pd.DataFrame: print(f"Executing run method over batch of {len(mini_batch)} files.") results = [] with torch.no_grad(): for image_path in mini_batch: image_data = torchvision.io.read_image(image_path).float() batch_data = image_data.expand(1, -1, -1, -1) input = batch_data.to(device) # perform inference predict_logits = model(input) # Compute probabilities, classes and labels predictions = torch.nn.Softmax(dim=-1)(predict_logits) predicted_prob, predicted_class = torch.max(predictions, axis=-1) results.append( { "file": basename(image_path), "class": predicted_class.numpy()[0], "probability": predicted_prob.numpy()[0], } ) return pd.DataFrame(results)创建运行批处理部署的环境。 环境应该包括批处理终结点所需的
azureml-core和azureml-dataset-runtime[fuse]包以及运行你的代码所需的任何依赖项。 在本例中,依赖项已捕获在conda.yaml文件中:deployment-torch/environment/conda.yaml
name: mnist-env channels: - conda-forge dependencies: - python=3.8.5 - pip<22.0 - pip: - torch==1.13.0 - torchvision==0.14.0 - pytorch-lightning - pandas - azureml-core - azureml-dataset-runtime[fuse]重要说明
包
azureml-core和azureml-dataset-runtime[fuse]是批量部署所必需的,应包含在环境依赖项中。按如下所示指定环境:
转到侧菜单中的“ 环境 ”选项卡。
选择 “自定义环境>创建”。
输入环境的名称,在本例中为
torch-batch-env。对于“选择环境源”,请选择“使用具有可选 conda 文件的现有 docker 映像”。
对于“容器注册表映像路径”中,输入“”。
mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04选择“下一步”转到“自定义”部分。
将文件的内容 deployment-torch/environment/conda.yaml 从 GitHub 存储库复制到门户中。
选择 “下一步 ”,直到到达“审阅页面”。
选择“ 创建 ”并等待环境准备就绪。
警告
批量部署不支持精心设计的环境。 需要指定自己的环境。 始终可以使用特选环境的基础映像作为你自己的环境来简化过程。
创建部署定义
deployment-torch/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json name: mnist-torch-dpl description: A deployment using Torch to solve the MNIST classification dataset. endpoint_name: mnist-batch type: model model: name: mnist-classifier-torch path: model code_configuration: code: code scoring_script: batch_driver.py environment: name: batch-torch-py38 image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml compute: azureml:batch-cluster resources: instance_count: 1 settings: max_concurrency_per_instance: 2 mini_batch_size: 10 output_action: append_row output_file_name: predictions.csv retry_settings: max_retries: 3 timeout: 30 error_threshold: -1 logging_level: info下表描述了批处理部署的关键属性。 有关完整的批处理部署 YAML 架构,请参阅 CLI (v2) 批处理部署 YAML 架构。
密钥 说明 name部署的名称。 endpoint_name要在其下创建部署的终结点的名称。 model用于批量评分的模型。 该示例使用 path以内联方式定义模型。 此定义允许使用自动生成的名称和版本自动上传和注册模型文件。 有关更多选项,请参阅模型架构。 对于生产方案,最佳做法应该是单独创建模型并在此处引用模型。 若要引用现有模型,请使用azureml:<model-name>:<model-version>语法。code_configuration.code包含用于对模型进行评分的所有 Python 源代码的本地目录。 code_configuration.scoring_scriptcode_configuration.code目录中的 Python 文件。 此文件必须具有init()函数和run()函数。 对于任何成本较高或者一般性的准备工作(例如将模型加载到内存中),请使用init()函数。init()在进程开始时只调用一次。 使用run(mini_batch)为每个项评分;mini_batch值是文件路径列表。run()函数应返回 Pandas 数据帧或数组。 每个返回的元素指示mini_batch中成功运行一次输入元素。 有关如何创作评分脚本的详细信息,请参阅了解评分脚本。environment用于为模型评分的环境。 该示例使用 conda_file和image以内联方式定义环境。 依赖项conda_file安装在image之上。 环境将自动使用自动生成的名称和版本进行注册。 有关更多选项,请参阅环境架构。 对于生产方案,最佳做法应该是单独创建环境并在此处引用环境。 若要引用现有环境,请使用azureml:<environment-name>:<environment-version>语法。compute用于运行批量评分的计算。 该示例使用在开头部分创建的 batch-cluster,并使用azureml:<compute-name>语法引用它。resources.instance_count每个批量评分作业要使用的实例数。 settings.max_concurrency_per_instance每个实例的并行 scoring_script运行的最大数量。settings.mini_batch_sizescoring_script可以在一次run()调用中处理的文件数。settings.output_action应如何在输出文件中组织输出。 append_row将所有run()返回的输出结果合并到一个名为output_file_name的单个文件中。summary_only不会合并输出结果,而只会计算error_threshold。settings.output_file_nameappend_rowoutput_action批量评分输出文件的名称。settings.retry_settings.max_retries失败的 scoring_scriptrun()的最大尝试次数。settings.retry_settings.timeout对小批量进行评分的 scoring_scriptrun()超时(以秒计)。settings.error_threshold应忽略的输入文件评分失败次数。 如果整个输入的错误计数超出此值,则批量评分作业将终止。 此示例使用 -1,指示允许失败任意次,而不会终止批量评分作业。settings.logging_level日志详细程度。 值(以详细程度递增的顺序排列)为:WARNING、INFO 和 DEBUG。 settings.environment_variables要针对每个批量评分作业设置的环境变量名称/值对字典。 转到侧菜单中的 “终结点 ”选项卡。
选择选项卡“批处理终结点”“创建”>。
为终结点命名,在本例中为
mnist-batch。 可以配置其余字段或将其留空。选择“下一步”转到“模型”部分。
选择模型 mnist-classifier-torch。
选择“下一步”转到“部署”页。
为部署命名。
对于 输出操作,请确保已选择 追加行。
对于“输出文件名”,确保批量评分输出文件是所需的文件。 默认为
predictions.csv。对于“微批大小”,调整将包含在每个微批中的文件的大小。 此大小控制评分脚本每批接收的数据量。
对于“评分超时(秒)”,确保指定足够的时间,使部署能够为给定的文件批评分。 如果增加文件数,则通常也需要增大超时值。 更昂贵的模型(如基于深度学习的模型)可能需要此字段中的高值。
对于“每个实例的最大并发性”,配置你要为部署中的每个计算实例使用的执行程序数。 在此处指定较大的数字可以保证更高的并行度,但也会增大计算实例上的内存压力。 请连同“微批大小”一起优化此值。
完成后,选择“下一步”以转到“代码 + 环境”页。
对于“选择用于推理的评分脚本”,浏览以查找并选择评分脚本文件 deployment-torch/code/batch_driver.py。
在“选择环境”部分中,选择之前创建的环境 torch-batch-env。
选择“下一步”以转到“计算”页。
选择在上一步中创建的计算群集。
警告
批量部署支持 Azure Kubernetes 群集,但仅当使用 Azure 机器学习 CLI 或 Python SDK 创建时。
对于“实例计数”,输入你要为部署使用的计算实例数。 在本例中,使用 2。
选择“下一页”。
创建部署:
运行以下代码以在批处理终结点下创建一个批处理部署,并将其设置为默认部署。
az ml batch-deployment create --file deployment-torch/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default提示
--set-default参数将新创建的部署设置为终结点的默认部署。 这是一种简便的方法来创建终结点的新默认部署,尤其对于首次创建部署。 对于生产方案,最佳做法可能是创建一个新部署(而不将其设置为默认部署)。 验证部署是否按预期工作,稍后更新默认部署。 有关实现此过程的详细信息,请参阅部署新模型部分。检查批处理终结点和部署详细信息。
选择Batch 终结点选项卡。
选择要查看的批处理终结点。
终结点的“详细信息”页显示终结点的详细信息以及终结点中提供的所有部署。
运行批量终结点并访问结果
了解数据流
在运行批处理终结点之前,请了解数据流经系统的方式:
输入:要处理的数据(评分)。 这包括:
- 存储在 Azure 存储中的文件(Blob 存储、Data Lake)
- 包含多个文件的文件夹
- Azure 机器学习中的已注册数据集
处理:已部署的模型以批处理(微型批处理)处理输入数据并生成预测。
输出:模型的结果,存储为 Azure 存储中的文件。 默认情况下,输出将保存到工作区的默认 Blob 存储,但可以指定其他位置。
调用批处理终结点
调用批处理终结点会触发批量评分作业。
name作业在调用响应中返回,并跟踪批处理评分进度。 指定输入数据路径,以便终结点可以找到要评分的数据。 以下示例演示如何通过 Azure 存储帐户中存储的 MNIST 数据集的示例数据启动新作业。
可以使用 Azure CLI、Azure 机器学习 SDK 或 REST 终结点来运行和调用批处理终结点。 有关这些选项的详细信息,请参阅 为批处理终结点创建作业和输入数据。
注意
并行化的工作原理是什么?
批量部署在文件级别分配工作。 例如,如果一个文件夹包含 100 个文件,按 10 个文件的小批量划分,则会得到 10 个批次,每批 10 个文件。 无论文件大小如何,都会发生这种情况。 如果文件太大而无法以小型批处理进行处理,请将它们拆分为较小的文件,以提高并行度或减少每个小型批处理的文件数。 批处理部署当前不考虑文件大小分布中的偏差。
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --input-type uri_folder --query name -o tsv)
批处理终结点支持读取位于不同位置的文件或文件夹。 要详细了解支持的类型以及如何指定它们,请参阅访问批处理终结点作业中的数据。
监视批处理作业执行进度
批处理评分作业需要时间来处理所有输入。
检查批量评分结果
作业输出存储在云存储中,可以在工作区的默认 Blob 存储中,也可以在你指定的存储中。 若要了解如何更改默认值,请参阅配置输出位置。 通过以下步骤,可以在作业完成时在 Azure 存储资源管理器中查看评分结果:
运行以下代码,在 Azure 机器学习工作室中打开批量评分作业。
invoke的响应中还包含以interactionEndpoints.Studio.endpoint值的形式提供的作业工作室链接。az ml job show -n $JOB_NAME --web在作业图中,选择
batchscoring步骤。选择“输出 + 日志”选项卡,然后选择“显示数据输出”。
在“数据输出”中,选择图标以打开“存储资源管理器”。
存储资源管理器中的评分结果类似以下示例页:
配置输出位置
默认情况下,批处理评分结果存储在工作区的默认 Blob 存储中的一个文件夹里,该文件夹以作业命名(系统生成的 GUID)。 在调用批处理终结点时配置输出位置。
使用 output-path 配置 Azure 机器学习已注册的数据集中的任何文件夹。 指定文件夹时,--output-path 的语法与 --input 的语法相同,即都为 azureml://datastores/<datastore-name>/paths/<path-on-datastore>/。 使用 --set output_file_name=<your-file-name> 配置新的输出文件名。
OUTPUT_FILE_NAME=predictions_`echo $RANDOM`.csv
OUTPUT_PATH="azureml://datastores/workspaceblobstore/paths/$ENDPOINT_NAME"
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --output-path $OUTPUT_PATH --set output_file_name=$OUTPUT_FILE_NAME --query name -o tsv)
警告
必须使用唯一的输出位置。 如果输出文件存在,批处理评分作业将失败。
重要说明
与输入不同,输出只能存储在 blob 存储帐户上运行的 Azure 机器学习数据存储中。
覆盖每个作业的部署配置
调用批处理端点时,可以更改某些配置设置,以优化利用计算资源并提高性能。 当你需要不同作业的不同设置而不永久修改部署时,此功能非常有用。
可以重写哪些设置?
可以按作业配置以下设置:
| 设置 | 何时使用 | 示例方案 |
|---|---|---|
| 实例计数 | 当数据量不同时 | 对较大的数据集使用更多实例(10 个实例用于 100 万个文件,2 个实例用于 100,000 个文件)。 |
| 小批量大小 | 需要平衡吞吐量和内存使用量时 | 对大型图像使用较小的批处理(10-50 个文件),对小型文本文件使用更大的批(100-500 个文件)。 |
| 最大重试次数 | 数据质量变化时 | 用于噪声数据的重试次数较高(5-10);用于干净数据的重试次数较低(1-3) |
| 超时 | 处理时间因数据类型而异 | 复杂模型的超时时间较长(300 秒):简单模型的超时时间较短(30 秒) |
| 错误阈值 | 需要不同的故障容错级别时 | 关键作业的严格阈值(-1):实验性作业的宽大阈值 (10%) |
如何替代设置
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --mini-batch-size 20 --instance-count 5 --query name -o tsv)
将部署添加到终结点
配置了一个包含部署的批处理终结点后,可以继续微调模型并添加新的部署。 在同一个终结点下开发和部署新模型时,批处理终结点将继续为默认部署提供服务。 部署不能相互影响。
在本示例中,你将添加第二个部署,该部署使用 Keras 和 TensorFlow 构建的模型来解决相同的 MNIST 问题。
添加第二个部署
为批处理部署创建环境。 包括代码运行所需的任何依赖项。 添加库
azureml-core,因为批处理部署是必需的。 以下环境定义包括使用 TensorFlow 运行模型所需的库。将文件的内容 deployment-keras/environment/conda.yaml 从 GitHub 存储库复制到门户中。
选择“下一步”,直到到达“查看”页面。
选择“创建”,并等待环境可供使用。
使用的 conda 文件如下所示:
deployment-keras/environment/conda.yaml
name: tensorflow-env channels: - conda-forge dependencies: - python=3.8.5 - pip - pip: - pandas - tensorflow - pillow - azureml-core - azureml-dataset-runtime[fuse]创建模型的评分脚本:
deployment-keras/code/batch_driver.py
import os import numpy as np import pandas as pd import tensorflow as tf from typing import List from os.path import basename from PIL import Image from tensorflow.keras.models import load_model def init(): global model # AZUREML_MODEL_DIR is an environment variable created during deployment model_path = os.path.join(os.environ["AZUREML_MODEL_DIR"], "model") # load the model model = load_model(model_path) def run(mini_batch: List[str]) -> pd.DataFrame: print(f"Executing run method over batch of {len(mini_batch)} files.") results = [] for image_path in mini_batch: data = Image.open(image_path) data = np.array(data) data_batch = tf.expand_dims(data, axis=0) # perform inference pred = model.predict(data_batch) # Compute probabilities, classes and labels pred_prob = tf.math.reduce_max(tf.math.softmax(pred, axis=-1)).numpy() pred_class = tf.math.argmax(pred, axis=-1).numpy() results.append( { "file": basename(image_path), "class": pred_class[0], "probability": pred_prob, } ) return pd.DataFrame(results)创建部署定义
deployment-keras/deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json name: mnist-keras-dpl description: A deployment using Keras with TensorFlow to solve the MNIST classification dataset. endpoint_name: mnist-batch type: model model: name: mnist-classifier-keras path: model code_configuration: code: code scoring_script: batch_driver.py environment: name: batch-tensorflow-py38 image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest conda_file: environment/conda.yaml compute: azureml:batch-cluster resources: instance_count: 1 settings: max_concurrency_per_instance: 2 mini_batch_size: 10 output_action: append_row output_file_name: predictions.csv选择 “下一步 ”以转到“代码 + 环境”页。
对于“选择用于推理的评分脚本”,浏览以选择评分脚本文件 deployment-keras/code/batch_driver.py。
对于“选择环境”,请选择在上一步中创建的环境。
选择“下一页”。
在“计算”页面上,选择在上一步骤中创建的计算群集。
对于“实例计数”,输入你要为部署使用的计算实例数。 在本例中,使用 2。
选择“下一页”。
创建部署:
测试非默认批处理部署
若要测试新的非默认部署,需要知道你要运行的部署的名称。
DEPLOYMENT_NAME="mnist-keras-dpl"
JOB_NAME=$(az ml batch-endpoint invoke --name $ENDPOINT_NAME --deployment-name $DEPLOYMENT_NAME --input https://azuremlexampledata.blob.core.windows.net/data/mnist/sample --input-type uri_folder --query name -o tsv)
请注意 --deployment-name 用于指定要执行的部署。 使用此参数可以对非默认部署执行 invoke 操作,而不更新批处理终结点的默认部署。
更新默认批处理部署
尽管可以在终结点内调用特定部署,但通常需要调用终结点本身,让终结点决定使用哪个部署 - 默认部署。 可以更改默认部署(进而更改处理部署的模型),而无需更改与调用终结点的用户之间的协定。 使用以下代码更新默认部署:
az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME
删除批处理端点和部署
如果不需要旧的批处理部署,请运行以下代码将其删除。 该 --yes 标志确认删除。
az ml batch-deployment delete --name mnist-torch-dpl --endpoint-name $ENDPOINT_NAME --yes
运行以下代码以删除批处理终结点及其基础部署。 系统不会删除批处理评分作业。
az ml batch-endpoint delete --name $ENDPOINT_NAME --yes