將模型部署至受控線上端點

已完成

您可以選擇在不使用 MLflow 模型格式的情況下,將模型部署至受控線上端點。 若要部署模型,您必須建立評分指令碼,並定義在推斷時所需的環境。

若要部署模型,您必須先建立端點。 然後才能將模型部署至端點。

將模型部署到端點

要部署模型,您必須具有:

  • 儲存在本機路徑或已註冊模型的模型檔案。
  • 評分指令碼。
  • 執行環境。

當您訓練模型時,可以記錄並儲存模型檔案。

建立評分指令碼

評分指令碼必須包含兩個函式:

  • init():在初始化服務時呼叫。
  • run():在新資料提交至服務時呼叫。

建立或更新部署時會呼叫 init 函式,以從模型登錄載入和快取模型。 每次叫用端點時,都會呼叫 run 函式,以從輸入資料產生預測。 下方的範例 Python 指令碼顯示此模式:

import json
import joblib
import numpy as np
import os

# called when the deployment is created or updated
def init():
    global model
    # get the path to the registered model file and load it
    model_path = os.path.join(os.getenv('AZUREML_MODEL_DIR'), 'model.pkl')
    model = joblib.load(model_path)

# called when a request is received
def run(raw_data):
    # get the input data as a numpy array
    data = np.array(json.loads(raw_data)['data'])
    # get a prediction from the model
    predictions = model.predict(data)
    # return the predictions as any JSON serializable format
    return predictions.tolist()

建立環境

您的部署需要執行環境,才能執行評分指令碼。

您可以使用具 Conda 相依性的 Docker 映像或使用 Dockerfile 建立環境。

若要使用基底 Docker 映像建立環境,您可以在 conda.yml 檔案中定義 Conda 相依性:

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.7
  - scikit-learn
  - pandas
  - numpy
  - matplotlib

然後,若要建立環境,請執行下列程式碼:

from azure.ai.ml.entities import Environment

env = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    conda_file="./src/conda.yml",
    name="deployment-environment",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env)

建立部署

當擁有模型檔案、評分指令碼和環境時,您可以建立部署。

若要將模型部署至端點,您可以使用兩個參數來指定計算設定:

  • instance_type:要使用的虛擬機器 (VM) 大小。 檢閱支援大小的清單
  • instance_count:要使用的執行個體數目。

若要部署模型,請使用 ManagedOnlineDeployment 類別並執行下列命令:

from azure.ai.ml.entities import ManagedOnlineDeployment, CodeConfiguration

model = Model(path="./model",

blue_deployment = ManagedOnlineDeployment(
    name="blue",
    endpoint_name="endpoint-example",
    model=model,
    environment="deployment-environment",
    code_configuration=CodeConfiguration(
        code="./src", scoring_script="score.py"
    ),
    instance_type="Standard_DS2_v2",
    instance_count=1,
)

ml_client.online_deployments.begin_create_or_update(blue_deployment).result()

提示

探索參考文件,用 Python SDK v2 建立受控線上部署

您可以將多個模型部署到一個端點。 若要將流量路由至特定部署,請使用下列程式碼:

# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.begin_create_or_update(endpoint).result()

若要刪除端點和所有相關聯的部署,請執行命令:

ml_client.online_endpoints.begin_delete(name="endpoint-example")