Nasazení modelu do spravovaného online koncového bodu

Dokončeno

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:

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")