將模型部署至受控線上端點
您可以選擇在不使用 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")