Egyéni modell üzembe helyezése kötegelt végponton
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.