Nasadit vlastní model na dávkový koncový bod
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_DIRje proměnná prostředí, kterou můžete použít k vyhledání souborů přidružených k modelu. - Pomocí
globalpromě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_batchje 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.