Nasazení modelu do spravovaného online koncového bodu
Model můžete nasadit do spravovaného online koncového bodu bez použití formátu modelu MLflow. Pokud chcete nasadit model, budete muset vytvořit bodovací skript a definovat prostředí potřebné při odvozování.
Pokud chcete nasadit model, musíte mít vytvořený koncový bod. Pak můžete model nasadit do koncového bodu.
Nasazení modelu do koncového bodu
Pokud chcete nasadit model, musíte mít:
- Soubory modelu uložené na místní cestě nebo v registrovaném modelu
- Bodovací skript.
- Spouštěcí prostředí.
Soubory modelu lze protokolovat a ukládat při trénování modelu.
Vytvoření hodnoticího skriptu
Bodovací skript musí obsahovat dvě funkce:
-
init()
: Volá se při inicializaci služby. -
run()
: Volá se při odesílání nových dat do služby.
Funkce inicializační se volá při vytvoření nebo aktualizaci nasazení pro načtení a uložení modelu do mezipaměti z registru modelu. Funkce spuštění se volá při každém vyvolání koncového bodu, aby se vygenerovaly předpovědi ze vstupních dat. Následující ukázkový skript Pythonu ukazuje tento vzor:
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()
Vytvoření prostředí
Vaše nasazení vyžaduje spouštěcí prostředí, ve kterém se má spustit bodovací skript.
Můžete vytvořit prostředí pomocí image Dockeru se závislostmi Conda, nebo pomocí Dockerfile.
Pokud chcete vytvořit prostředí pomocí základní image Dockeru, můžete definovat závislosti Conda v souboru conda.yml
:
name: basic-env-cpu
channels:
- conda-forge
dependencies:
- python=3.7
- scikit-learn
- pandas
- numpy
- matplotlib
Pak vytvořte prostředí spuštěním následujícího kódu:
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)
Vytvořte nasazení
Pokud máte soubory modelu, bodovací skript a prostředí, můžete vytvořit nasazení.
Pokud chcete nasadit model do koncového bodu, můžete zadat výpočetní konfiguraci se dvěma parametry:
-
instance_type
: Velikost virtuálního počítače, která se má použít. Zkontrolujte seznam podporovaných velikostí. -
instance_count
: Počet použitých instancí.
K nasazení modelu použijte třídu ManagedOnlineDeployment
a spusťte následující příkaz:
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()
Spropitné
Projděte si referenční dokumentaci k pro vytvoření spravovaného online nasazení pomocí sady Python SDK v2.
Do koncového bodu můžete nasadit více modelů. Pokud chcete směrovat provoz do konkrétního nasazení, použijte následující kód:
# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.begin_create_or_update(endpoint).result()
Pokud chcete odstranit koncový bod a všechna přidružená nasazení, spusťte příkaz:
ml_client.online_endpoints.begin_delete(name="endpoint-example")