Egyéni modell üzembe helyezése kötegelt végponton

Befejeződött

Ha az MLflow-modell formátuma nélkül szeretne üzembe helyezni egy modellt egy kötegvégponton, létre kell hoznia a pontozási szkriptet és a környezetet.

A modell üzembe helyezéséhez már létre kell hoznia egy végpontot. Ezután üzembe helyezheti a modellt a végponton.

A pontozási szkript létrehozása

A pontozási szkript egy fájl, amely beolvassa az új adatokat, betölti a modellt, és végrehajtja a pontozást.

A pontozási szkriptnek két függvényt kell tartalmaznia:

  • init(): A folyamat elején egyszer hívja meg, ezért használjon bármilyen költséges vagy gyakori előkészítéshez, például a modell betöltéséhez.
  • run(): Az egyes mini kötegek meghívása a pontozás végrehajtásához.

A run() metódusnak pandas DataFrame-et vagy tömböt/listát kell visszaadnia.

A pontozási szkriptek a következőképpen nézhetnek ki:

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

A példaszkriptből néhány dolgot fel kell jegyezni:

  • AZUREML_MODEL_DIR egy környezeti változó, amellyel megkeresheti a modellhez társított fájlokat.
  • Változóval global elérhetővé teheti az új adatok pontozásához szükséges összes objektumot, például a betöltött modellt.
  • A méretet az mini_batch üzembe helyezési konfiguráció határozza meg. Ha a mini köteg fájljai túl nagyok a feldolgozáshoz, a fájlokat kisebb fájlokra kell felosztania.
  • Alapértelmezés szerint az előrejelzések egyetlen fájlba lesznek írva.

Tipp.

További információ a kötegtelepítések pontozási szkriptjeinek készítéséről.

Környezet létrehozása

Az üzembe helyezéshez végrehajtási környezet szükséges, amelyben futtatni kell a pontozási szkriptet. A kód által igényelt függőségeket bele kell foglalni a környezetbe.

Létrehozhat egy környezetet Egy Docker-rendszerképpel Conda-függőségekkel vagy Docker-fájllal.

A kódtárat azureml-core is hozzá kell adnia, mivel a kötegtelepítések működéséhez szükséges.

Ha egy alapSzintű Docker-rendszerkép használatával szeretne környezetet létrehozni, definiálhatja a Conda-függőségeket egy conda.yaml fájlban:

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

Ezután a környezet létrehozásához futtassa a következő kódot:

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)

Az üzembe helyezés konfigurálása és létrehozása

Végül konfigurálhatja és létrehozhatja az üzembe helyezést az BatchDeployment osztálysal.

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)

Tipp.

A referenciadokumentációban kötegtelepítést hozhat létre a Python SDK 2-vel.