教學課程:在 Jupyter Notebook 中使用 Python SDK 第 2 版 (預覽) 建立生產 ML 管線

適用於Python SDK azure-ai-ml 第 2 版 (預覽)

重要

SDK v2 目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

注意

如需使用 SDK 第 1 版建置管線的教學課程,請參閱教學課程:建置影像分類的 Azure Machine Learning 管線

在本教學課程中,您將使用 Azure Machine Learning (Azure ML),透過 AzureML Python SDK 第 2 版 (預覽) 建立可用於生產環境的機器學習 (ML) 專案。

您將了解如何使用 AzureML Python SDK 第 2 版來:

  • 連線至您的 Azure ML 工作區
  • 建立 Azure ML 資料資產
  • 建立可重複使用的 Azure ML 元件
  • 建立、驗證和執行 Azure ML 管線
  • 將新定型的模型部署為端點
  • 呼叫 Azure ML 端點以進行推斷

必要條件

安裝 SDK

您將完成下列實驗設定,並在 Azure Machine Learning 工作室中執行步驟。 此整合介面包含機器學習工具,可為所有技能等級的資料科學從業人員執行資料科學案例。

首先,您將在計算執行個體上安裝 第 2 版 SDK:

  1. 登入 Azure Machine Learning Studio

  2. 選取您在必要條件中建立的訂用帳戶和工作區。

  3. 選取左側的 [計算]。

  4. 從 [計算執行個體] 清單中,尋找您所建立的執行個體。

  5. 選取 [終端機],在計算執行個體上開啟終端機工作階段。

  6. 在終端機視窗中,使用下列命令安裝 Python SDK 第 2 版 (預覽):

    pip install --pre azure-ai-ml
    

    如需詳細資訊,請參閱安裝 Python SDK 第 2 版

複製 azureml-examples 存放庫

  1. 接著,在終端機上執行命令:

    git clone --depth 1 https://github.com/Azure/azureml-examples
    
  2. 選取左側的 [筆記本]。

  3. 現在,在左側選取 [檔案]。

    Screenshot that shows the Clone tutorials folder.

  4. 資料夾清單會顯示每位存取工作區的使用者。 選取您的資料夾,您會發現 azureml-samples 已複製。

開啟複製的筆記本

  1. 在 [使用者檔案] 區段中開啟已複製的 tutorials 資料夾。

  2. 從您的 azureml-examples/tutorials/e2e-ds-experience/ 資料夾中選取 e2e-ml-workflow.ipynb 檔案。

    Screenshot shows the open tutorials folder.

  3. 在頂端列上,選取您在快速入門:開始使用 Azure Machine Learning 期間建立的計算執行個體,用以執行筆記本。

重要

本文的其餘部分包含與您在 Notebook 中所見相同的內容。

如果您想要在閱讀時執行程式碼,請立即切換至 Jupyter Notebook。 若要在 Notebook 中執行單一程式碼資料格,請按一下程式碼資料格,然後按 Shift+Enter。 或者,從頂端工具列中選擇 [全部執行],以執行整個筆記本

簡介

在本教學課程中,您將建立一個 Azure ML 管線,用以定型信用違約預測的模型。 此管線會處理資料準備、定型,和定型模型的註冊。 接著,您將執行管線、部署模型,並加以使用。

下圖顯示管線在提交後顯示於 AzureML 入口網站中的情形。 這是我們用來引導您完成 AzureML SDK 第 2 版的簡單管線。

兩個步驟依序為準備資料和定型。

Diagram shows overview of the pipeline.

設定管線資源

您可以從 CLI、Python SDK 或工作室介面使用 Azure ML 架構。 在此範例中,您將使用 AzureML Python SDK 第 2 版來建立管線。

建立管線之前,您會設定管線所將使用的資源:

  • 用於定型的資料集
  • 要執行管線的軟體環境
  • 要在其中執行作業的計算資源

連線到工作區

在深入探討程式碼之前,您必須連線至 Azure ML 工作區。 工作區是 Azure Machine Learning 的最上層資源,其提供一個集中位置來處理您在使用 Azure Machine Learning 時建立的所有成品。

# Handle to the workspace
from azure.ai.ml import MLClient

# Authentication package
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    credential = InteractiveBrowserCredential()

在下一個資料格中,輸入您的訂用帳戶識別碼、資源群組名稱和工作區名稱。 若要尋找您的訂用帳戶識別碼:

  1. 在右上方的 Azure Machine Learning 工作室工具列中,選取您的工作區名稱。
  2. 在底部選取 [在 Azure 入口網站中檢視所有屬性]
  3. 將值從 Azure 入口網站複製到程式碼中。

Screenshot shows how to find values needed for your code.

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

結果將是工作區的處理常式,用來管理其他資源和作業。

重要

建立 MLClient 時不會連線至工作區。 用戶端初始化是消極式的,會等到第一次需要進行呼叫時才執行 (在下列筆記本中,會在資料集註冊期間執行)。

從外部 URL 註冊資料

用於定型的資料通常位於下列其中一個位置:

  • 本機電腦
  • Web
  • 巨量資料儲存體服務 (例如 Azure Blob、Azure Data Lake Storage、SQL)

Azure ML 會使用 Data 物件來註冊可重複使用的資料定義,並在管線內取用資料。 在下一節的範例中,您將取用來自 Web URL 的資料。 您也可以建立其他來源的資料。

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

web_path = "https://archive.ics.uci.edu/ml/machine-learning-databases/00350/default%20of%20credit%20card%20clients.xls"

credit_data = Data(
    name="creditcard_defaults",
    path=web_path,
    type=AssetTypes.URI_FILE,
    description="Dataset for credit card defaults",
    tags={"source_type": "web", "source": "UCI ML Repo"},
    version="1.0.0",
)

此程式碼剛建立了 Data 資產,可供您將在後續小節中定義的管線用作輸入。 此外,您可以將資料集註冊到工作區,使其可在管線間重複使用。

註冊資料集將可讓您:

  • 在未來的管線中重複使用和共用資料集
  • 使用版本來追蹤資料集的修改
  • 使用 Azure ML 設計工具中的資料集,此工具是 Azure ML 用於管線撰寫的 GUI

由於這是您第一次呼叫工作區時,系統可能會要求您進行驗證。 驗證完成後,您會看到資料集註冊完成訊息。

credit_data = ml_client.data.create_or_update(credit_data)
print(
    f"Dataset with name {credit_data.name} was registered to workspace, the dataset version is {credit_data.version}"
)

未來,您可以使用 credit_dataset = ml_client.data.get("<DATA ASSET NAME>", version='<VERSION>') 從工作區擷取相同的資料集。

建立計算資源以執行管線

Azure ML 管線的每個步驟都可以使用不同的計算資源來執行該步驟的特定作業。 這可以是採用 Linux 或 Windows OS 的單一或多節點機器,或 Spark 之類的特定計算網狀架構。

在本節中,您將佈建 Linux 計算叢集。

在本教學課程中,您只需要基本叢集,因此我們將使用具有 2 個 vCPU 核心、7 GB RAM 的 Standard_DS3_v2 模型並建立 Azure ML Compute。

提示

如果您已經有計算叢集,請將程式碼中的「cpu-cluster」取代為您的叢集名稱。 這會防止您建立另一個叢集。

from azure.ai.ml.entities import AmlCompute

cpu_compute_target = "cpu-cluster"

try:
    # let's see if the compute target already exists
    cpu_cluster = ml_client.compute.get(cpu_compute_target)
    print(
        f"You already have a cluster named {cpu_compute_target}, we'll reuse it as is."
    )

except Exception:
    print("Creating a new cpu compute target...")

    # Let's create the Azure ML compute object with the intended parameters
    cpu_cluster = AmlCompute(
        # Name assigned to the compute cluster
        name="cpu-cluster",
        # Azure ML Compute is the on-demand VM service
        type="amlcompute",
        # VM Family
        size="STANDARD_DS3_V2",
        # Minimum running nodes when there is no job running
        min_instances=0,
        # Nodes in cluster
        max_instances=4,
        # How many seconds will the node running after the job termination
        idle_time_before_scale_down=180,
        # Dedicated or LowPriority. The latter is cheaper but there is a chance of job termination
        tier="Dedicated",
    )

    # Now, we pass the object to MLClient's create_or_update method
    cpu_cluster = ml_client.begin_create_or_update(cpu_cluster)

print(
    f"AMLCompute with name {cpu_cluster.name} is created, the compute size is {cpu_cluster.size}"
)

建立管線步驟的作業環境

到目前為止,您已在計算執行個體 (即開發機器) 上建立開發環境。 您也需要管線的每個步驟所使用的環境。 每個步驟都可以有本身的環境,或者您可以對多個步驟使用一些通用的環境。

在此範例中,您將使用 conda yaml 檔案為作業建立 conda 環境。 首先,建立一個用來儲存檔案的目錄。

import os

dependencies_dir = "./dependencies"
os.makedirs(dependencies_dir, exist_ok=True)

現在,在相依性目錄中建立檔案。

%%writefile {dependencies_dir}/conda.yml
name: model-env
channels:
  - conda-forge
dependencies:
  - python=3.8
  - numpy=1.21.2
  - pip=21.2.4
  - scikit-learn=0.24.2
  - scipy=1.7.1
  - pandas>=1.1,<1.2
  - pip:
    - inference-schema[numpy-support]==1.3.0
    - xlrd==2.0.1
    - mlflow== 1.26.1
    - azureml-mlflow==1.42.0

規格包含一些您將在管線中使用的一般套件 (numpy、pip),以及一些 Azure ML 特定套件,(azureml-defaults、azureml-mlflow)。

Azure ML 套件並非執行 Azure ML 作業的必要項目。 不過,新增這些套件可讓您與 Azure ML互動,以記錄計量和註冊模型,全都在 Azure ML 作業內完成。 您將在本教學課程稍後的定型指令碼中加以使用。

使用 yaml 檔案,在您的工作區中建立和註冊此自訂環境:

from azure.ai.ml.entities import Environment

custom_env_name = "aml-scikit-learn"

pipeline_job_env = Environment(
    name=custom_env_name,
    description="Custom environment for Credit Card Defaults pipeline",
    tags={"scikit-learn": "0.24.2"},
    conda_file=os.path.join(dependencies_dir, "conda.yml"),
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest",
    version="1.0",
)
pipeline_job_env = ml_client.environments.create_or_update(pipeline_job_env)

print(
    f"Environment with name {pipeline_job_env.name} is registered to workspace, the environment version is {pipeline_job_env.version}"
)

建置定型管線

現在您已有執行管線所需的所有資產,接下來即可使用 Azure ML Python SDK 第 2 版來建置管線本身。

Azure ML 管線是可重複使用的 ML 工作流程,通常由數個元件組成。 元件的一般使用年限為:

  • 撰寫元件的 yaml 規格,或使用 ComponentMethod 以程式設計方式加以建立。
  • (選擇性) 使用名稱和版本在工作區中註冊元件,使其可重複使用且可共用。
  • 從管線程式碼載入該元件。
  • 使用元件的輸入、輸出和參數來實作管線
  • 提交管線。

建立元件 1:資料準備 (使用程式設計定義)

首先,我們建立第一個元件。 此元件會處理資料的前置處理。 前置處理工作會在 data_prep.py Python 檔案中執行。

首先,建立 data_prep 元件的來源資料夾:

import os

data_prep_src_dir = "./components/data_prep"
os.makedirs(data_prep_src_dir, exist_ok=True)

此指令碼會執行將資料分割成定型和測試資料集的簡單工作。 Azure ML 將資料集掛接為計算的資料夾,因此,我們建立了輔助 select_first_file 函式來存取已掛接的輸入資料夾內的資料檔案。

MLFlow 會在管線執行期間用來記錄參數和計量。

%%writefile {data_prep_src_dir}/data_prep.py
import os
import argparse
import pandas as pd
from sklearn.model_selection import train_test_split
import logging
import mlflow


def main():
    """Main function of the script."""

    # input and output arguments
    parser = argparse.ArgumentParser()
    parser.add_argument("--data", type=str, help="path to input data")
    parser.add_argument("--test_train_ratio", type=float, required=False, default=0.25)
    parser.add_argument("--train_data", type=str, help="path to train data")
    parser.add_argument("--test_data", type=str, help="path to test data")
    args = parser.parse_args()

    # Start Logging
    mlflow.start_run()

    print(" ".join(f"{k}={v}" for k, v in vars(args).items()))

    print("input data:", args.data)

    credit_df = pd.read_excel(args.data, header=1, index_col=0)

    mlflow.log_metric("num_samples", credit_df.shape[0])
    mlflow.log_metric("num_features", credit_df.shape[1] - 1)

    credit_train_df, credit_test_df = train_test_split(
        credit_df,
        test_size=args.test_train_ratio,
    )

    # output paths are mounted as folder, therefore, we are adding a filename to the path
    credit_train_df.to_csv(os.path.join(args.train_data, "data.csv"), index=False)

    credit_test_df.to_csv(os.path.join(args.test_data, "data.csv"), index=False)

    # Stop Logging
    mlflow.end_run()


if __name__ == "__main__":
    main()

現在,您已有可執行所需工作的指令碼,請從中建立 Azure ML 元件。

您將使用可執行命令列動作的一般用途 CommandComponent。 此命令列動作可直接呼叫系統命令或執行指令碼。 輸入/輸出可透過 ${{ ... }} 標記法指定於命令列上。

from azure.ai.ml import command
from azure.ai.ml import Input, Output

data_prep_component = command(
    name="data_prep_credit_defaults",
    display_name="Data preparation for training",
    description="reads a .xl input, split the input to train and test",
    inputs={
        "data": Input(type="uri_folder"),
        "test_train_ratio": Input(type="number"),
    },
    outputs=dict(
        train_data=Output(type="uri_folder", mode="rw_mount"),
        test_data=Output(type="uri_folder", mode="rw_mount"),
    ),
    # The source folder of the component
    code=data_prep_src_dir,
    command="""python data_prep.py \
            --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} \
            --train_data ${{outputs.train_data}} --test_data ${{outputs.test_data}} \
            """,
    environment=f"{pipeline_job_env.name}:{pipeline_job_env.version}",
)

(選擇性地) 在工作區中註冊元件,以供日後重複使用。

建立元件 2:定型 (使用 yaml 定義)

您將建立的第二個元件會取用定型和測試資料、定型樹狀式模型,並傳回輸出模型。 您將使用 Azure ML 記錄功能來記錄和視覺化學習進度。

您使用 CommandComponent 類別建立了第一個元件。 這次,您將使用 yaml 定義來定義第二個元件。 每種方法各有優點。 yaml 定義實際上可與程式碼一起簽入,並提供可讀取的歷程記錄追蹤。 採用內建的類別文件和程式碼完成時,使用 CommandComponent 的程式設計方法會更容易執行。

建立此元件的目錄:

import os

train_src_dir = "./components/train"
os.makedirs(train_src_dir, exist_ok=True)

在此定型指令碼中您會看到,在定型模型後,模型檔案就會儲存並註冊到工作區。 現在,您可以在推斷端點中使用已註冊的模型。

針對此步驟的環境,您將使用其中一個內建 (策展) Azure ML 環境。 標籤 azureml 會指示系統在策展環境中尋找名稱。

首先,建立描述元件的 yaml 檔案:

%%writefile {train_src_dir}/train.yml
# <component>
name: train_credit_defaults_model
display_name: Train Credit Defaults Model
# version: 1 # Not specifying a version will automatically update the version
type: command
inputs:
  train_data: 
    type: uri_folder
  test_data: 
    type: uri_folder
  learning_rate:
    type: number     
  registered_model_name:
    type: string
outputs:
  model:
    type: uri_folder
code: .
environment:
  # for this step, we'll use an AzureML curate environment
  azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:21
command: >-
  python train.py 
  --train_data ${{inputs.train_data}} 
  --test_data ${{inputs.test_data}} 
  --learning_rate ${{inputs.learning_rate}}
  --registered_model_name ${{inputs.registered_model_name}} 
  --model ${{outputs.model}}
# </component>

接著,建立並註冊元件:

# importing the Component Package
from azure.ai.ml import load_component

# Loading the component from the yml file
train_component = load_component(path=os.path.join(train_src_dir, "train.yml"))
# Now we register the component to the workspace
train_component = ml_client.create_or_update(train_component)

# Create (register) the component in your workspace
print(
    f"Component {train_component.name} with Version {train_component.version} is registered"
)

從元件建立管線

現在您已定義並註冊這兩個元件,接下來即可開始實作管線。

在此,您將使用輸入資料分割比率已註冊的模型名稱作為輸入變數。 然後,呼叫元件,並透過其輸入/輸出識別碼加以連接。 每個步驟的輸出都可透過 .outputs 屬性來存取。

load_component() 傳回的 Python 函式,運作方式會和我們將在管線內用來呼叫每個步驟的任何一般 Python 函式相同。

若要撰寫管線的程式碼,您可以使用識別 Azure ML 管線的特定 @dsl.pipeline 裝飾項目。 在裝飾項目中,我們可以指定管線描述和預設資源,例如計算和儲存體。 如同 Python 函式,管線也可以有輸入。 然後,您可以用不同的輸入建立單一管線的多個執行個體。

在此,我們使用輸入資料分割比率已註冊的模型名稱作為輸入變數。 然後,我們呼叫元件,並透過其輸入/輸出識別碼加以連接。 每個步驟的輸出都可透過 .outputs 屬性來存取。

# the dsl decorator tells the sdk that we are defining an Azure ML pipeline
from azure.ai.ml import dsl, Input, Output


@dsl.pipeline(
    compute=cpu_compute_target,
    description="E2E data_perp-train pipeline",
)
def credit_defaults_pipeline(
    pipeline_job_data_input,
    pipeline_job_test_train_ratio,
    pipeline_job_learning_rate,
    pipeline_job_registered_model_name,
):
    # using data_prep_function like a python call with its own inputs
    data_prep_job = data_prep_component(
        data=pipeline_job_data_input,
        test_train_ratio=pipeline_job_test_train_ratio,
    )

    # using train_func like a python call with its own inputs
    train_job = train_component(
        train_data=data_prep_job.outputs.train_data,  # note: using outputs from previous step
        test_data=data_prep_job.outputs.test_data,  # note: using outputs from previous step
        learning_rate=pipeline_job_learning_rate,  # note: using a pipeline input as parameter
        registered_model_name=pipeline_job_registered_model_name,
    )

    # a pipeline returns a dictionary of outputs
    # keys will code for the pipeline output identifier
    return {
        "pipeline_job_train_data": data_prep_job.outputs.train_data,
        "pipeline_job_test_data": data_prep_job.outputs.test_data,
    }

然後,使用管線定義,以及您的資料集、選擇的分割率和您為模型挑選的名稱,將管線具現化。

registered_model_name = "credit_defaults_model"

# Let's instantiate the pipeline with the parameters of our choice
pipeline = credit_defaults_pipeline(
    # pipeline_job_data_input=credit_data,
    pipeline_job_data_input=Input(type="uri_file", path=web_path),
    pipeline_job_test_train_ratio=0.2,
    pipeline_job_learning_rate=0.25,
    pipeline_job_registered_model_name=registered_model_name,
)

提交工作

接著即可提交作業,以在 Azure ML 中執行。 這次,您會對 ml_client.jobs 使用 create_or_update

在此您也會傳入實驗名稱。 實驗是對特定專案執行的所有反覆項目的容器。 所有以相同實驗名稱提交的作業,都會在 Azure ML 工作室中相鄰列出。

完成後,管線會在您的工作區中註冊模型,作為定型的結果。

import webbrowser

# submit the pipeline job
pipeline_job = ml_client.jobs.create_or_update(
    pipeline,
    # Project's name
    experiment_name="e2e_registered_components",
)
# open the pipeline in web browser
webbrowser.open(pipeline_job.services["Studio"].endpoint)

上述資料格的輸出應為 "False"。 您可以使用上述資料格中產生的連結,來追蹤管線的進度。

當您選取個別元件時,您會看到與該元件的結果有關的詳細資訊。 在此階段中需尋找兩個重要部分:

  • Outputs+logs>user_logs>std_log.txt 本節顯示指令碼執行 sdtout。

    Screenshot of std_log.txt.

  • Outputs+logs>Metric 本節顯示不同的記錄計量。 在此範例中, mlflow autologging 自動記錄了定型計量。

    Screenshot shows logged metrics.txt.

將模型部署為線上端點

現在,將您的機器學習模型部署為 Azure 雲端中的 Web 服務。

若要部署機器學習服務,您通常需要:

  • 您要部署的模型資產 (歸檔的、中繼資料)。 您已在定型元件中註冊這些資產。
  • 一些要以服務的形式執行的程式碼。 程式碼會在指定的輸入要求上執行模型。 此輸入指令碼會接收提交至已部署 Web 服務的資料,並將其傳至模型,然後將模型的回應傳回至用戶端。 腳本是您模型特有的。 輸入腳本必須了解模型預期並傳回的資料。 如同本教學課程,使用 MLFlow 模型時,系統會自動為您建立此指令碼

建立新的線上端點

現在,您已有註冊的模型和推斷指令碼,接下來即可建立線上端點。 端點名稱在整個 Azure 區域中必須是唯一的。 在本教學課程中,您將使用 UUID 建立唯一的名稱。

import uuid

# Creating a unique name for the endpoint
online_endpoint_name = "credit-endpoint-" + str(uuid.uuid4())[:8]
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
)

# create an online endpoint
endpoint = ManagedOnlineEndpoint(
    name=online_endpoint_name,
    description="this is an online endpoint",
    auth_mode="key",
    tags={
        "training_dataset": "credit_defaults",
        "model_type": "sklearn.GradientBoostingClassifier",
    },
)

endpoint = ml_client.begin_create_or_update(endpoint)

print(f"Endpint {endpoint.name} provisioning state: {endpoint.provisioning_state}")

建立端點之後,您可依照下列方式加以擷取:

endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)

print(
    f'Endpint "{endpoint.name}" with provisioning state "{endpoint.provisioning_state}" is retrieved'
)

將模型部署至端點

端點建立後,請使用輸入指令碼來部署模型。 每個端點可以有多個部署,且可以使用規則來指定這些部署的流量。 在此,您將建立單一部署,處理 100% 的連入流量。 我們為部署選擇了色彩名稱 (例如藍色綠色紅色部署),此名稱可任選。

您可以在 Azure ML 工作室中查看 [模型] 頁面,以識別已註冊模型的最新版本。 或者,下列程式碼會擷取最新版本號碼讓您使用。

# Let's pick the latest version of the model
latest_model_version = max(
    [int(m.version) for m in ml_client.models.list(name=registered_model_name)]
)

部署最新版的模型。

注意

完成此部署約需要 6 到 8 分鐘的時間。

# picking the model to deploy. Here we use the latest version of our registered model
model = ml_client.models.get(name=registered_model_name, version=latest_model_version)


# create an online deployment.
blue_deployment = ManagedOnlineDeployment(
    name="blue",
    endpoint_name=online_endpoint_name,
    model=model,
    instance_type="Standard_DS3_v2",
    instance_count=1,
)

blue_deployment = ml_client.begin_create_or_update(blue_deployment)

使用範例查詢進行測試

模型現已部署至端點,可用來執行推斷。

在評分指令碼的 run 方法中,依照預期的設計建立範例要求檔案。

deploy_dir = "./deploy"
os.makedirs(deploy_dir, exist_ok=True)
%%writefile {deploy_dir}/sample-request.json
{
  "input_data": {
    "columns": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],
    "index": [0, 1],
    "data": [
            [20000,2,2,1,24,2,2,-1,-1,-2,-2,3913,3102,689,0,0,0,0,689,0,0,0,0],
            [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10, 9, 8]
        ]
  }
}
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
    endpoint_name=online_endpoint_name,
    request_file="./deploy/sample-request.json",
    deployment_name="blue",
)

清除資源

如果您不打算使用端點,請將其刪除以停止使用資源。 刪除端點之前,請確定沒有其他部署在使用端點。

注意

完成此步驟約需要 6 到 8 分鐘的時間。

ml_client.online_endpoints.begin_delete(name=online_endpoint_name)

後續步驟

深入了解 Azure ML 記錄