Nasadit vlastní model na dávkový koncový bod

Dokončeno

Pokud chcete model nasadit do dávkového koncového bodu bez použití formátu modelu MLflow, musíte připravit skript pro vyhodnocování a prostředí.

Pokud chcete nasadit model, musíte už vytvořit koncový bod. Pak můžete model nasadit do koncového bodu.

Vytvoření hodnoticího skriptu

Bodovací skript je soubor, který čte nová data, načte model a provádí bodování.

Bodovací skript musí obsahovat dvě funkce:

  • init(): Volá se jednou na začátku procesu, takže se používá pro jakoukoli nákladnou nebo běžnou přípravu, jako je načtení modelu.
  • run(): Je voláno pro každou mini sérii k provedení hodnocení.

Metoda run() by měla vrátit datový rámec pandas nebo pole nebo seznam.

Bodovací skript může vypadat takto:

import os
import mlflow
import pandas as pd


def init():
    global model

    # get the path to the registered model file and load it
    model_path = os.path.join(os.environ["AZUREML_MODEL_DIR"], "model")
    model = mlflow.pyfunc.load(model_path)


def run(mini_batch):
    print(f"run method start: {__file__}, run({len(mini_batch)} files)")
    resultList = []

    for file_path in mini_batch:
        data = pd.read_csv(file_path)
        pred = model.predict(data)

        df = pd.DataFrame(pred, columns=["predictions"])
        df["file"] = os.path.basename(file_path)
        resultList.extend(df.values)

    return resultList

Z ukázkového skriptu je potřeba si poznamenat několik věcí:

  • AZUREML_MODEL_DIR je proměnná prostředí, kterou můžete použít k vyhledání souborů přidružených k modelu.
  • Pomocí global proměnné zpřístupníte všechny prostředky potřebné k určení skóre nových dat, jako je načtený model.
  • Velikost mini_batch je definována v konfiguraci nasazení. Pokud jsou soubory v mini dávce příliš velké na zpracování, musíte je rozdělit na menší soubory.
  • Ve výchozím nastavení se předpovědi zapisují do jednoho souboru.

Spropitné

Přečtěte si další informace o tom, jak vytvářet hodnoticí skripty pro dávková nasazení.

Vytvoření prostředí

Vaše nasazení vyžaduje spouštěcí prostředí, ve kterém se má spustit bodovací skript. Všechny závislosti, které váš kód vyžaduje, by se měly zahrnout do prostředí.

Můžete vytvořit prostředí pomocí obrazu Docker s Conda závislostmi nebo pomocí Dockerfile.

Budete také muset přidat knihovnu azureml-core, protože je potřeba, aby dávkové nasazení fungovalo.

Pokud chcete vytvořit prostředí pomocí základní image Dockeru, můžete definovat závislosti Conda v souboru conda.yaml:

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.8
  - pandas
  - pip
  - pip:
      - azureml-core
      - mlflow

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-env.yml",
    name="deployment-environment",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env)

Konfigurujte a vytvořte nasazení

Nakonec můžete nakonfigurovat a vytvořit nasazení pomocí třídy BatchDeployment.

from azure.ai.ml.entities import BatchDeployment, BatchRetrySettings
from azure.ai.ml.constants import BatchDeploymentOutputAction

deployment = BatchDeployment(
    name="forecast-mlflow",
    description="A sales forecaster",
    endpoint_name=endpoint.name,
    model=model,
    compute="aml-cluster",
    code_path="./code",
    scoring_script="score.py",
    environment=env,
    instance_count=2,
    max_concurrency_per_instance=2,
    mini_batch_size=2,
    output_action=BatchDeploymentOutputAction.APPEND_ROW,
    output_file_name="predictions.csv",
    retry_settings=BatchRetrySettings(max_retries=3, timeout=300),
    logging_level="info",
)
ml_client.batch_deployments.begin_create_or_update(deployment)

Spropitné

Projděte si referenční dokumentaci k vytvoření dávkového nasazení pomocí sady Python SDK v2.