ÉRVÉNYES:
Azure CLI ml-bővítmény v2 (aktuális)
Python SDK azure-ai-ml v2 (aktuális)
Ebből a cikkből megtudhatja, hogyan helyezheti üzembe a modellt egy online végponton valós idejű következtetés céljából. Először üzembe kell helyeznie egy modellt a helyi gépen a hibák hibakereséséhez. Ezután üzembe helyezheti és tesztelheti a modellt az Azure-ban, megtekintheti az üzembehelyezési naplókat, és figyelheti a szolgáltatásiszint-szerződést (SLA). A cikk végére egy méretezhető HTTPS/REST-végponttal rendelkezik, amelyet valós idejű következtetéshez használhat.
Az online végpontok valós idejű következtetéshez használt végpontok. Kétféle online végpont létezik: felügyelt online végpontok és Kubernetes online végpontok. A különbségekkel kapcsolatos további információkért lásd: Felügyelt online végpontok és Kubernetes online végpontok.
A felügyelt online végpontok segítségével azonnal üzembe helyezheti a használatra kész gépi tanulási modelleket. A felügyelt online végpontok skálázható, teljes mértékben felügyelt módon működnek együtt a nagy teljesítményű processzorral és GPU-val rendelkező Azure-beli gépekkel. A felügyelt online végpontok gondoskodnak a modellek kiszolgálásáról, skálázásáról, biztonságáról és monitorozásáról. Ez a segítség megszabadít a mögöttes infrastruktúra beállításának és kezelésének többletterhelésétől.
A cikk fő példája felügyelt online végpontokat használ az üzembe helyezéshez. Ha inkább a Kubernetes-t szeretné használni, tekintse meg a dokumentum azon jegyzeteit, amelyek beágyazottak a felügyelt online végponttal kapcsolatos vitafórumba.
Előfeltételek
A KÖVETKEZŐRE VONATKOZIK:
Azure CLI ml-bővítmény v2 (aktuális)
Az Azure-beli szerepköralapú hozzáférés-vezérlés (Azure RBAC) az Azure Machine Learning műveleteihez való hozzáférés engedélyezésére szolgál. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókhoz hozzá kell rendelni az Azure Machine Learning-munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkörnek engedélyeznie Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
kell. Ha az Azure Machine Learning Studiót használja online végpontok vagy üzemelő példányok létrehozásához és kezeléséhez, az erőforráscsoport tulajdonosának további engedélyére Microsoft.Resources/deployments/write
van szüksége. További információ: Az Azure Machine Learning-munkaterületekhez való hozzáférés kezelése.
(Nem kötelező) A helyi telepítéshez telepítenie kell a Docker Engine-t a helyi számítógépre.
Erősen ajánljuk ezt a lehetőséget, ami megkönnyíti a hibák hibakeresését.
A KÖVETKEZŐKRE VONATKOZIK:
Python SDK azure-ai-ml v2 (aktuális)
Egy Azure Machine Learning-munkaterület. A munkaterület létrehozásának lépéseit a munkaterület létrehozása című témakörben találja.
Az Azure Machine Learning SDK Python v2 számára. Az SDK telepítéséhez használja a következő parancsot:
pip install azure-ai-ml azure-identity
Ha frissíteni szeretné az SDK meglévő telepítését a legújabb verzióra, használja a következő parancsot:
pip install --upgrade azure-ai-ml azure-identity
További információ: Azure Machine Learning Package ügyfélkódtár Pythonhoz.
Az Azure RBAC-t az Azure Machine Learning műveleteihez való hozzáférésre használják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókhoz hozzá kell rendelni az Azure Machine Learning-munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkörnek engedélyeznie Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
kell. További információ: Az Azure Machine Learning-munkaterületekhez való hozzáférés kezelése.
(Nem kötelező) A helyi telepítéshez telepítenie kell a Docker Engine-t a helyi számítógépre.
Erősen ajánljuk ezt a lehetőséget, ami megkönnyíti a hibák hibakeresését.
A cikk lépéseinek végrehajtása előtt győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:
- Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki az Azure Machine Learning ingyenes vagy fizetős verzióját.
- Egy Azure Machine Learning-munkaterület és egy számítási példány. Ha nem rendelkezik ezekkel az erőforrásokkal, olvassa el az Első lépésekhez szükséges erőforrások létrehozása című témakört.
- Az Azure RBAC-t az Azure Machine Learning műveleteihez való hozzáférésre használják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókhoz hozzá kell rendelni az Azure Machine Learning-munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkörnek engedélyeznie
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
kell. További információ: Azure Machine Learning-munkaterülethez való hozzáférés kezelése.
Ezekben a lépésekben az Azure CLI és a gépi tanulás cli-bővítménye használható, de nem ezek a fő hangsúly. A sablonok az Azure-ba való továbbítására és a sablontelepítések állapotának ellenőrzésére szolgálnak.
- Az Azure RBAC-t az Azure Machine Learning műveleteihez való hozzáférésre használják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókhoz hozzá kell rendelni az Azure Machine Learning-munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkörnek engedélyeznie
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
kell. További információ: Azure Machine Learning-munkaterülethez való hozzáférés kezelése.
Győződjön meg arról, hogy elegendő virtuálisgép-kvóta van lefoglalva az üzembe helyezéshez. Az Azure Machine Learning 20% számítási erőforrást lefoglal az ön erőforrásaiból, hogy bizonyos virtuális gép verziók frissítését elvégezze. Ha például 10 példányt kér egy üzembe helyezéshez, a virtuálisgép-verzió minden egyes magjára vonatkozóan 12-es kvótával kell rendelkeznie. Ha nem veszi figyelembe a további számítási erőforrásokat, az hibát eredményez. Egyes virtuálisgép-verziók mentesülnek a többletkvóta-foglalás alól. A kvótakiosztással kapcsolatos további információkért tekintse meg a virtuális gépek központi telepítésre vonatkozó kvótafoglalását.
Azt is megteheti, hogy korlátozott ideig az Azure Machine Learning megosztott kvótakészletéből származó kvótát használja. Az Azure Machine Learning egy megosztott kvótakészletet biztosít, amelyből a különböző régiók felhasználói a rendelkezésre állástól függően korlátozott ideig férhetnek hozzá a kvótához.
Ha a studiót a Llama-2, a Phi, a Nemotron, a Mistral, a Dolly és a Deci-Deci-DeciLM modellek üzembe helyezésére használja a modellkatalógusból egy felügyelt online végpontra, az Azure Machine Learning lehetővé teszi a megosztott kvótakészlet rövid ideig való elérését, hogy elvégezhesse a tesztelést. A megosztott kvótakészletről további információt az Azure Machine Learning megosztott kvótája című témakörben talál.
A rendszer előkészítése
Környezeti változók beállítása
Ha még nem állította be az Azure CLI alapértelmezett beállításait, mentse az alapértelmezett beállításokat. Az előfizetés, a munkaterület és az erőforráscsoport értékeinek többszöri átadásának elkerülése érdekében futtassa ezt a kódot:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
A példák adattárának klónozása
A cikk követéséhez először klónozza az azureml-examples adattárat, majd váltson az adattár azureml-examples/cli könyvtárára:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli
Csak a legújabb véglegesítés klónozására használható --depth 1
az adattárban, ami csökkenti a művelet befejezésének idejét.
Az oktatóanyagban szereplő parancsok az cli könyvtárban lévő deploy-local-endpoint.sh és deploy-managed-online-endpoint.sh fájlokban találhatók. A YAML-konfigurációs fájlok a végpontokban/online/felügyelt/minta/ alkönyvtárban találhatók.
Feljegyzés
Az online Kubernetes-végpontok YAML-konfigurációs fájljai a végpontok/online/kubernetes/ alkönyvtárakban találhatók.
A példák adattárának klónozása
A betanítási példák futtatásához először klónozza az azureml-examples adattárat, majd váltson az azureml-examples/sdk/python/endpoints/online/managed directoryra:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Csak a legújabb véglegesítés klónozására használható --depth 1
az adattárban, ami csökkenti a művelet befejezésének idejét.
A cikkben szereplő információk az online-endpoints-simple-deployment.ipynb jegyzetfüzeten alapulnak. Ugyanazt a tartalmat tartalmazza, mint ez a cikk, bár a kódok sorrendje kissé eltérő.
Csatlakozás az Azure Machine Learning-munkaterülethez
A munkaterület az Azure Machine Learning legfelső szintű erőforrása. Központi helyet biztosít az Azure Machine Learning használatakor létrehozott összes összetevővel való munkához. Ebben a szakaszban ahhoz a munkaterülethez csatlakozik, amelyben üzembe helyezési feladatokat hajt végre. A folytatáshoz nyissa meg az online-endpoints-simple-deployment.ipynb jegyzetfüzetet.
Importálja a szükséges kódtárakat:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Feljegyzés
Ha a Kubernetes online végpontot használja, importálja a KubernetesOnlineEndpoint
és KubernetesOnlineDeployment
osztályokat a azure.ai.ml.entities
könyvtárból.
Konfigurálja a munkaterület adatait, és szerezze be a munkaterület leíróit.
A munkaterülethez való csatlakozáshoz az alábbi azonosító paraméterekre van szüksége: előfizetésre, erőforráscsoportra és munkaterület nevére. Használhatja ezeket a részleteket MLClient
azure.ai.ml
a szükséges Azure Machine Learning-munkaterület eléréséhez. Ez a példa az alapértelmezett Azure-hitelesítést használja.
# enter details of your Azure Machine Learning workspace
subscription_id = "<subscription ID>"
resource_group = "<resource group>"
workspace = "<workspace name>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Ha telepítve van a Git a helyi gépen, az utasításokat követve klónozhatja a példák adattárát. Ellenkező esetben kövesse az utasításokat, hogy fájlokat töltsön le a példák adattárából.
A példák adattárának klónozása
A cikk követéséhez először klónozza az azureml-examples adattárat, majd váltson az azureml-examples/cli/endpoints/online/model-1 könyvtárra.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Csak a legújabb véglegesítés klónozására használható --depth 1
az adattárban, ami csökkenti a művelet befejezésének idejét.
Fájlok letöltése a példák adattárából
Ha klónozta a példák adattárát, a helyi gép már rendelkezik a példához tartozó fájlok másolatával, és továbbléphet a következő szakaszra. Ha nem klónozta az adattárat, töltse le a helyi gépére.
- Nyissa meg a példák adattárát (azureml-examples).
- Nyissa meg a <> lap Kód gombját, majd a Helyi lapon válassza a Zip letöltése lehetőséget.
- Keresse meg a /cli/endpoints/online/model-1/model mappát és a /cli/endpoints/online/model-1/onlinescoring/score.py fájlt.
Környezeti változók beállítása
Állítsa be a következő környezeti változókat, hogy a cikkben szereplő példákban használhassa őket. Cserélje le az értékeket az Azure-előfizetés azonosítóra, a munkaterületet tartalmazó Azure-régióra, a munkaterületet tartalmazó erőforráscsoportra és a munkaterület nevére:
export SUBSCRIPTION_ID="<subscription ID>"
export LOCATION="<your region>"
export RESOURCE_GROUP="<resource group>"
export WORKSPACE="<workspace name>"
Néhány példasablon esetében fájlokat kell feltöltenie az Azure Blob Storage-ba a munkaterülethez. Az alábbi lépések lekérdezik a munkaterületet, és ezeket az információkat a példákban használt környezeti változókban tárolják:
Hozzáférési jogkivonat lekérése:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
Állítsa be a REST API-verziót:
API_VERSION="2022-05-01"
A tárolási adatok lekérése:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
A példák adattárának klónozása
A cikk követéséhez először klónozza az azureml-examples adattárat, majd váltson az azureml-examples könyvtárra:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Csak a legújabb véglegesítés klónozására használható --depth 1
az adattárban, ami csökkenti a művelet befejezésének idejét.
A végpont definiálása
Online végpont definiálásához adja meg a végpont nevét és a hitelesítési módot. A felügyelt online végpontokról további információt az Online végpontok című témakörben talál.
Végpontnév beállítása
A végpont nevének beállításához futtassa a következő parancsot. Cserélje le <YOUR_ENDPOINT_NAME>
az Azure-régióban egyedi névre. Az elnevezési szabályokkal kapcsolatos további információkért lásd: Végpontkorlátok.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Az alábbi kódrészlet a végpontokat/online/felügyelt/minta/endpoint.yml fájlt jeleníti meg:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
A végpont YAML-formátumára vonatkozó hivatkozást az alábbi táblázat ismerteti. Az attribútumok megadásának módjáról az online végpont YAML-hivatkozásában olvashat. A felügyelt végpontokkal kapcsolatos korlátozásokról az Azure Machine Learning online végpontjai és a kötegelt végpontok című témakörben olvashat.
Kulcs |
Leírás |
$schema |
(Nem kötelező) A YAML-séma. A YAML-fájlban elérhető összes lehetőség megtekintéséhez a sémát az előző kódrészletben tekintheti meg egy böngészőben. |
name |
A végpont neve. |
auth_mode |
Kulcsalapú hitelesítéshez használható key . Azure Machine Learning-jogkivonat-alapú hitelesítéshez használható aml_token . A Microsoft Entra tokenalapú hitelesítéshez (előzetes verzió) használható aad_token . A hitelesítésről további információt az ügyfelek hitelesítése az online végpontok esetében című témakörben talál. |
Először adja meg az online végpont nevét, majd konfigurálja a végpontot.
Cserélje le <YOUR_ENDPOINT_NAME>
az Azure-régióban egyedi névre, vagy használja a példametódust egy véletlenszerű név definiálásához. Mindenképpen törölje a nem használt metódust. Az elnevezési szabályokkal kapcsolatos további információkért lásd: Végpontkorlátok.
# method 1: define an endpoint name
endpoint_name = "<YOUR_ENDPOINT_NAME>"
# method 2: example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Az előző kód kulcsalapú hitelesítéshez használható key
. Az Azure Machine Learning tokenalapú hitelesítésének használatához használja a következőt aml_token
: . A Microsoft Entra tokenalapú hitelesítés (előzetes verzió) használatához használja a következőt aad_token
: . A hitelesítésről további információt az ügyfelek hitelesítése az online végpontok esetében című témakörben talál.
Amikor a stúdióból hajt végre telepítést az Azure-ba, létre kell hoznia egy végpontot és egy ütemezést hozzá. Ekkor a rendszer kéri, hogy adja meg a végpont és az üzembe helyezés nevét.
Végpontnév beállítása
A végpont nevének beállításához futtassa a következő parancsot egy véletlenszerű név létrehozásához. Egyedinek kell lennie az Azure-régióban. Az elnevezési szabályokkal kapcsolatos további információkért lásd: Végpontkorlátok.
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
A végpont és az üzembe helyezés meghatározásához ez a cikk az Azure Resource Manager-sablonokat (ARM-sablonokat) online-endpoint.json és online-endpoint-deployment.jsonhasználja. Az online végpontok és üzembe helyezés definiálásához használt sablonokat az Üzembe helyezés az Azure-ban című szakaszban találja.
Az üzembe helyezés definiálása
Az üzembe helyezés a tényleges következtetést okozó modell üzemeltetéséhez szükséges erőforrások készlete. Ebben a példában egy scikit-learn
olyan modellt telepít, amely regressziót végez, és egy score.py nevű értékelő szkriptet használ a modell futtatásához egy adott bemeneti kérelem esetén.
Az üzembe helyezés fő attribútumairól az online központi telepítések című témakörben olvashat.
Az üzembe helyezési konfiguráció az üzembe helyezni kívánt modell helyét használja.
Az alábbi kódrészlet a végpontokat/online/felügyelt/minta/blue-deployment.yml fájlt jeleníti meg, az üzembe helyezés konfigurálásához szükséges összes bemenettel:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yaml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
A blue-deployment.yml fájl a következő üzembehelyezési attribútumokat adja meg:
-
model
: Megadja a modell beágyazott tulajdonságait a path
paraméterrel (ahonnan fájlokat tölthet fel). A parancssori felület automatikusan feltölti a modellfájlokat, és automatikusan létrehozott névvel regisztrálja a modellt.
-
environment
: Beágyazott definíciókat használ, amelyek tartalmazzák a fájlok feltöltésének helyét. A parancssori felület automatikusan feltölti a conda.yaml fájlt, és regisztrálja a környezetet. Később a környezet létrehozásához az üzembe helyezés az image
alaprendszerkép paraméterét használja. Ebben a példában ez mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
. A conda_file
függőségek az alaprendszerkép tetején vannak telepítve.
-
code_configuration
: Feltölti a helyi fájlokat, például a pontozási modell Python-forrását a fejlesztési környezetből az üzembe helyezés során.
A YAML-sémával kapcsolatos további információkért tekintse meg a YAML online végpontjának hivatkozását.
Feljegyzés
Kubernetes-végpontok használata felügyelt online végpontok helyett számítási célként:
- Hozza létre és csatolja a Kubernetes-fürtöt számítási célként az Azure Machine Learning-munkaterülethez az Azure Machine Learning Studióval.
- A YAML végpont használatával a kuberneteket célozza meg a felügyelt YAML-végpont helyett. A YAML-et úgy kell szerkesztenie, hogy az értékét
compute
a regisztrált számítási cél nevére módosítsa. Ezt a deployment.yaml parancsot használhatja, amely más, a Kubernetes-üzemelő példányokra vonatkozó tulajdonságokkal rendelkezik.
A cikkben felügyelt online végpontokhoz használt összes parancs a Kubernetes-végpontokra is vonatkozik, kivéve az alábbi képességeket, amelyek nem vonatkoznak a Kubernetes-végpontokra:
Az üzembe helyezés konfigurálásához használja a következő kódot:
model = Model(path="../model-1/model/sklearn_regression_model.pkl")
env = Environment(
conda_file="../model-1/environment/conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
-
Model
: Megadja a modell beágyazott tulajdonságait a path
paraméterrel (ahonnan fájlokat tölthet fel). Az SDK automatikusan feltölti a modellfájlokat, és automatikusan létrehozott névvel regisztrálja a modellt.
-
Environment
: Beágyazott definíciókat használ, amelyek tartalmazzák a fájlok feltöltésének helyét. Az SDK automatikusan feltölti a conda.yaml fájlt, és regisztrálja a környezetet. Később a környezet létrehozásához az üzembe helyezés az image
alaprendszerkép paraméterét használja. Ebben a példában ez mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
. A conda_file
függőségek az alaprendszerkép tetején vannak telepítve.
-
CodeConfiguration
: Feltölti a helyi fájlokat, például a pontozási modell Python-forrását a fejlesztési környezetből az üzembe helyezés során.
Az online üzembe helyezés definíciójáról további információt az OnlineDeployment osztályban talál.
Azure-ban történő üzembe helyezéskor létrehoz egy végpontot, és ehhez csatolja az üzembe helyezést. Ekkor a rendszer kéri, hogy adja meg a végpont és az üzembe helyezés nevét.
A pontozási szkript ismertetése
Az online végpontok pontozási szkriptjének formátuma megegyezik a PARANCSSOR előző verziójában és a Python SDK-ban használt formátummal.
A megadott code_configuration.scoring_script
pontozási szkriptnek egy függvénysel init()
és egy függvénnyel kell rendelkeznie run()
.
A pontozó szkriptnek egy függvénysel init()
és egy függvénnyel kell rendelkeznie run()
.
A pontozó szkriptnek egy függvénysel init()
és egy függvénnyel kell rendelkeznie run()
.
A pontozó szkriptnek egy függvénysel init()
és egy függvénnyel kell rendelkeznie run()
. Ez a cikk a score.py fájlt használja.
Amikor sablont használ az üzembe helyezéshez, először fel kell töltenie a pontozófájlt a Blob Storage-ba, majd regisztrálnia kell azt:
A következő kód az Azure CLI-paranccsal az storage blob upload-batch
tölti fel a pontozófájlt:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
A következő kód sablonnal regisztrálja a kódot:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
Ez a példa a korábban klónozott vagy letöltött adattárból származó score.py fájlt használja:
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
A init()
függvény meghívása a tároló inicializálása vagy elindításakor történik. Az inicializálás általában röviddel az üzembe helyezés létrehozása vagy frissítése után történik. A init
függvény a globális inicializálási műveletek logikájának írási helye, például a modell gyorsítótárazása a memóriában (ahogy az ebben a score.py fájlban látható).
A run()
függvény minden alkalommal meghívódik, amikor a végpontot meghívják. Elvégzi a tényleges pontozást és előrejelzést. Ebben a score.py fájlban a run()
függvény adatokat nyer ki egy JSON-bemenetből, meghívja a scikit-learn modell metódusát predict()
, majd visszaadja az előrejelzési eredményt.
Helyi végpont használatával történő helyi üzembe helyezés és hibakeresés
Javasoljuk, hogy az Azure-ban való üzembe helyezés előtt tesztelje a végpont helyi futtatását a kód és a konfiguráció ellenőrzéséhez és hibakereséséhez. Az Azure CLI és a Python SDK támogatja a helyi végpontokat és üzembe helyezéseket, de az Azure Machine Learning Studio és az ARM-sablonok nem.
A helyi üzembe helyezéshez a Docker Engine-t telepíteni és futtatni kell. A Docker Engine általában a számítógép indításakor indul el. Ha nem, a Docker Engine hibaelhárítását is elvégezheti.
Az Azure Machine Learning-következtetés HTTP-kiszolgálói Python-csomagjával helyileg, Docker Engine nélkül is hibakeresést végezhet a pontozószkriptben. A következtetési kiszolgálóval végzett hibakeresés lehetővé teszi a pontozási szkript hibakeresését, mielőtt üzembe helyezné a lokális végpontokhoz, hogy az üzembe helyezési tároló konfigurációi ne befolyásolják a hibakeresést.
További információ az online végpontok helyi hibakereséséről az Azure-ban való üzembe helyezés előtt: Online végpontok hibakeresése.
A modell helyi üzembe helyezése
Először hozzon létre egy végpontot. Helyi végpont esetén kihagyhatja ezt a lépést. Az üzembe helyezést közvetlenül (a következő lépésben) is létrehozhatja, amely létrehozza a szükséges metaadatokat. A modellek helyi üzembe helyezése fejlesztési és tesztelési célokra hasznos.
az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
ml_client.online_endpoints.begin_create_or_update(endpoint, local=True)
A stúdió nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
A sablon nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
Most hozzon létre egy üzembe helyezést blue
a végpont alatt.
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
A --local
jelző a parancssori felületre irányítja a végpont Docker-környezetben való üzembe helyezését.
ml_client.online_deployments.begin_create_or_update(
deployment=blue_deployment, local=True
)
A local=True
jelző arra utasítja az SDK-t, hogy helyezze üzembe a végpontot a Docker-környezetben.
A stúdió nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
A sablon nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
Ellenőrizze, hogy a helyi üzembe helyezés sikeres volt-e
Ellenőrizze az üzembe helyezés állapotát, hogy a modell hiba nélkül lett-e üzembe helyezve:
az ml online-endpoint show -n $ENDPOINT_NAME --local
A kimenetnek a következő JSON-hoz hasonlóan kell megjelennie. A provisioning_state
paraméter a következő Succeeded
: .
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
ml_client.online_endpoints.get(name=endpoint_name, local=True)
A metódus entitástManagedOnlineEndpoint
vissza. A provisioning_state
paraméter a következő Succeeded
: .
ManagedOnlineEndpoint({'public_network_access': None, 'provisioning_state': 'Succeeded', 'scoring_uri': 'http://localhost:49158/score', 'swagger_uri': None, 'name': 'endpt-10061534497697', 'description': 'this is a sample endpoint', 'tags': {}, 'properties': {}, 'id': None, 'Resource__source_path': None, 'base_path': '/path/to/your/working/directory', 'creation_context': None, 'serialize': <msrest.serialization.Serializer object at 0x7ffb781bccd0>, 'auth_mode': 'key', 'location': 'local', 'identity': None, 'traffic': {}, 'mirror_traffic': {}, 'kind': None})
A stúdió nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
A sablon nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
Az alábbi táblázat a következő lehetséges értékeket provisioning_state
tartalmazza:
Érték |
Leírás |
Creating |
Az erőforrás létrehozása folyamatban van. |
Updating |
Az erőforrás frissítése folyamatban van. |
Deleting |
Az erőforrás törlése folyamatban van. |
Succeeded |
A létrehozási vagy frissítési művelet sikeres volt. |
Failed |
A létrehozási, frissítési vagy törlési művelet nem sikerült. |
A helyi végpont meghívása adatok pontozásához a modell használatával
A végpont meghívása a modell pontozásához a parancs használatával és a invoke
JSON-fájlban tárolt lekérdezési paraméterek átadásával:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Ha REST-ügyfelet szeretne használni (például curl), akkor rendelkeznie kell a pontozási URI-val. A pontozási URI lekéréséhez futtassa a következőt az ml online-endpoint show --local -n $ENDPOINT_NAME
: . A visszaadott adatok között keresse meg az scoring_uri
attribútumot.
Hívja meg a végpontot a modell pontozásához a invoke
parancs használatával, és adja át a JSON-fájlban tárolt lekérdezési paramétereket.
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
request_file="../model-1/sample-request.json",
local=True,
)
Ha REST-ügyfelet szeretne használni (például curl), akkor rendelkeznie kell a pontozási URI-val. A pontozási URI lekéréséhez futtassa a következő kódot. A visszaadott adatok között keresse meg az scoring_uri
attribútumot.
endpoint = ml_client.online_endpoints.get(endpoint_name, local=True)
scoring_uri = endpoint.scoring_uri
A stúdió nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
A sablon nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
Tekintse át a naplókat a meghívási művelet kimenetének megtekintéséhez
A példában score.py fájlban a run()
metódus naplózza a kimenetet a konzolon.
Ezt a kimenetet a get-logs
következő paranccsal tekintheti meg:
az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME
Ezt a kimenetet a get_logs
következő módszerrel tekintheti meg:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, local=True, lines=50
)
A stúdió nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
A sablon nem támogatja a helyi végpontokat. A végpont helyi tesztelésének lépéseiért tekintse meg az Azure CLI vagy a Python lapokat.
Az online végpont üzembe helyezése az Azure-ban
Ezután helyezze üzembe az online végpontot az Azure-ban. Az éles környezetben ajánlott eljárásként javasoljuk, hogy regisztrálja az üzembe helyezés során használt modellt és környezetet.
Modell és környezet regisztrálása
Javasoljuk, hogy az Azure-ban való üzembe helyezés előtt regisztrálja a modellt és a környezetet, hogy az üzembe helyezés során meg tudja adni a regisztrált nevüket és verzióikat. Az eszközök regisztrálása után újra felhasználhatja őket anélkül, hogy minden üzembe helyezéskor fel kellene töltenie őket. Ez a gyakorlat növeli a reprodukálhatóságot és a nyomon követhetőséget.
Az Azure-ban történő üzembe helyezéstől eltérően a helyi üzembe helyezés nem támogatja a regisztrált modellek és környezetek használatát. Ehelyett a helyi üzembe helyezés helyi modellfájlokat használ, és csak helyi fájlokat tartalmazó környezeteket használ.
Az Azure-ba való üzembe helyezéshez használhat helyi vagy regisztrált eszközöket (modelleket és környezeteket). A cikk jelen szakaszában az Azure-ba történő üzembe helyezés regisztrált eszközöket használ, de ehelyett lehetősége van helyi eszközök használatára. Példa egy olyan üzembehelyezési konfigurációra, amely feltölti a helyi üzembe helyezéshez használandó helyi fájlokat, tekintse meg az üzembe helyezés konfigurálása című témakört.
A modell és a környezet regisztrálásához használja az űrlapot model: azureml:my-model:1
vagy environment: azureml:my-env:1
a .
A regisztrációhoz kinyerheti a YAML-definíciókat model
és environment
külön YAML-fájlokba a végpontok/online/felügyelt/minták mappába, és használja a az ml model create
és az ml environment create
parancsokat. Ha többet szeretne megtudni ezekről a parancsokról, futtassa és az ml model create -h
.az ml environment create -h
Hozzon létre egy YAML-definíciót a modellhez. Nevezze el a fájlt model.yml:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: my-model
path: ../../model-1/model/
A modell regisztrálása:
az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
Hozzon létre egy YAML-definíciót a környezethez. Nevezze el a fájlt environment.yml:
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: my-env
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
conda_file: ../../model-1/environment/conda.yaml
A környezet regisztrálása:
az ml environment create -n my-env -v 1 -f endpoints/online/managed/sample/environment.yml
A modell eszközként való regisztrálásával kapcsolatos további információkért lásd: Modell regisztrálása az Azure CLI vagy a Python SDK használatával. További információ a környezet létrehozásáról: Egyéni környezet létrehozása.
Modell regisztrálása:
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
A környezet regisztrálása:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Ha tudni szeretné, hogyan regisztrálhatja a modellt objektumként, hogy meg tudja adni a regisztrált nevét és verzióját az üzembe helyezés során, olvassa el a modell regisztrálása az Azure CLI vagy a Python SDK használatával című témakört.
További információ a környezet létrehozásáról: Egyéni környezet létrehozása.
Regisztrálja a modellt
A modellregisztráció egy logikai entitás a munkaterületen, amely egyetlen modellfájlt vagy több fájlból álló könyvtárat tartalmazhat. Az éles környezetben ajánlott eljárásként regisztrálja a modellt és a környezetet. Mielőtt létrehozza a végpontot és az üzembe helyezést ebben a cikkben, regisztrálja a modellt tartalmazó modellmappát .
A példamodell regisztrálásához kövesse az alábbi lépéseket:
Nyissa meg az Azure Machine Learning Studiót.
A bal oldali panelen válassza a Modellek lapot.
Válassza a Regisztráció, majd a Helyi fájlok lehetőséget.
Válassza a Modelltípus nem megadott típusát.
Válassza a Tallózás lehetőséget, majd a Tallózás mappát.
Válassza ki a \azureml-examples\cli\endpoints\online\model-1\model mappát a korábban klónozott vagy letöltött adattár helyi másolatából. Amikor a rendszer kéri, válassza a Feltöltés lehetőséget, és várja meg, amíg a feltöltés befejeződik.
Válassza a Következőlehetőséget.
Adjon meg egy barátságos nevet a modellnek. A cikkben szereplő lépések feltételezik, hogy a modell neve model-1
.
Kattintson a Tovább gombra, majd a Regisztráció gombra a regisztráció befejezéséhez.
A regisztrált modellek használatáról további információt a Regisztrált modellek kezelése című témakörben talál.
A környezet létrehozása és regisztrálása
A bal oldali panelen válassza a Környezetek lapot.
Válassza az Egyéni környezetek lapot, majd a Létrehozás lehetőséget.
A Beállítások lapon adjon meg egy nevet, például a környezethez tartozó my-env nevet.
A Környezeti forrás kiválasztása pontnál válassza a Meglévő Docker-rendszerkép használatát választható Conda-forrással lehetőséget.
A Tovább gombra kattintva lépjen a Testreszabás lapra .
Másolja ki a \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml fájl tartalmát a korábban klónozott vagy letöltött adattárból.
Illessze be a tartalmat a szövegmezőbe.
Válassza a Tovább lehetőséget, amíg el nem ér a Létrehozás lapra, majd válassza a Létrehozás lehetőséget.
Ha többet szeretne tudni arról, hogyan hozhat létre környezetet a stúdióban, olvassa el a Környezet létrehozása című témakört.
Ha sablonnal szeretné regisztrálni a modellt, először fel kell töltenie a modellfájlt a Blob Storage-ba. Az alábbi példa a az storage blob upload-batch
parancs használatával tölt fel egy fájlt a munkaterület alapértelmezett tárolójához:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
A fájl feltöltése után a sablon használatával hozzon létre egy modellregisztrációt. A következő példában a modelUri
paraméter a modell elérési útját tartalmazza:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
A környezet része egy conda-fájl, amely meghatározza a modell üzemeltetéséhez szükséges modellfüggőségeket. Az alábbi példa bemutatja, hogyan olvashatja be a conda-fájl tartalmát környezeti változókba:
CONDA_FILE=$(cat cli/endpoints/online/model-1/environment/conda.yaml)
Az alábbi példa bemutatja, hogyan használhatja a sablont a környezet regisztrálásához. Az előző lépésben szereplő conda-fájl tartalmát a condaFile
paraméter használatával adjuk át a sablonnak.
ENV_VERSION=$RANDOM
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/environment-version.json \
--parameters \
workspaceName=$WORKSPACE \
environmentAssetName=sklearn-env \
environmentAssetVersion=$ENV_VERSION \
dockerImage=mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1 \
condaFile="$CONDA_FILE"
Fontos
Amikor egyéni környezetet határoz meg az üzembe helyezéshez, győződjön meg arról, hogy a azureml-inference-server-http
csomag szerepel a conda fájlban. Ez a csomag elengedhetetlen ahhoz, hogy a következtetési kiszolgáló megfelelően működjön. Ha nem ismeri, hogyan hozhatja létre saját egyéni környezetét, használja az egyik válogatott környezetünket, például minimal-py-inference
(az egyéni modellekhez, amelyek nem használják mlflow
) vagy mlflow-py-inference
(azokhoz a modellekhez, amelyek használják mlflow
). Ezeket a válogatott környezeteket az Azure Machine Learning Studio példányának Környezetek lapján találja.
Az üzembe helyezési konfiguráció a telepíteni kívánt regisztrált modellt és a regisztrált környezetet használja.
Használja a regisztrált eszközöket (modellt és környezetet) az üzembehelyezési definícióban. Az alábbi példa a végpontokat/online/felügyelt/minta/blue-deployment-with-registered-assets.yml fájlt mutatja be, amely tartalmazza az üzembe helyezés konfigurálásához szükséges minden bemenetet.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1
Az üzembe helyezés konfigurálásához használja a regisztrált modellt és környezetet:
model = "azureml:my-model:1"
env = "azureml:my-env:1"
blue_deployment_with_registered_assets = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
Amikor a stúdióból üzembe helyez, létrehoz egy végpontot és hozzá egy üzembe helyezést. Ekkor a rendszer kéri, hogy adja meg a végpont és az üzembe helyezés nevét.
Különböző PROCESSZOR- és GPU-példánytípusok és -rendszerképek használata
Az üzembehelyezési definícióban megadhatja a cpu- vagy GPU-példánytípusokat és -lemezképeket a helyi üzembe helyezéshez és az Azure-ba való üzembe helyezéshez.
A blue-deployment-with-registered-assets.yml fájl üzembehelyezési definíciója egy általános célú típuspéldányt Standard_DS3_v2
és a nem GPU-alapú Docker-lemezképet mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
használt. GPU-számításhoz válasszon GPU-számítási típusverziót és GPU Docker-rendszerképet.
A támogatott általános célú és GPU-példánytípusokról lásd a felügyelt online végpontok termékváltozatainak listáját. Az Azure Machine Learning CPU- és GPU-alaprendszerképeinek listáját az Azure Machine Learning alaprendszerképei között találja.
Az üzembe helyezési konfigurációban megadhatja a CPU- vagy GPU-példánytípusokat és -lemezképeket a helyi üzembe helyezéshez és az Azure-ba való üzembe helyezéshez.
Korábban konfigurált egy általános célú típusú Standard_DS3_v2
példányt és egy nem GPU-alapú Docker-lemezképet mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
használó üzembe helyezést. GPU-számításhoz válasszon GPU-számítási típusverziót és GPU Docker-rendszerképet.
A támogatott általános célú és GPU-példánytípusokról lásd a felügyelt online végpontok termékváltozatainak listáját. Az Azure Machine Learning CPU- és GPU-alaprendszerképeinek listáját az Azure Machine Learning alaprendszerképei között találja.
A környezet előző regisztrációja egy nem GPU-alapú Docker-rendszerképet mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04
határoz meg úgy, hogy a paraméter használatával átadja az értéket a dockerImage
sablonnak. GPU-számítás esetén adjon meg egy értéket a GPU Docker-rendszerképhez a sablonhoz (használja a dockerImage
paramétert), és adja meg a GPU számítási típusának verzióját a online-endpoint-deployment.json
sablonnak (használja a paramétert skuName
).
A támogatott általános célú és GPU-példánytípusokról lásd a felügyelt online végpontok termékváltozatainak listáját. Az Azure Machine Learning CPU- és GPU-alaprendszerképeinek listáját az Azure Machine Learning alaprendszerképei között találja.
Ezután helyezze üzembe az online végpontot az Azure-ban.
Üzembe helyezés az Azure-ban
Hozza létre a végpontot az Azure-felhőben:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Hozza létre a blue
nevű üzembe helyezést az végpontnál:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
Az üzembe helyezés létrehozása akár 15 percet is igénybe vehet attól függően, hogy az alapul szolgáló környezet vagy rendszerkép első létrehozása folyamatban van-e. Az ugyanazt a környezetet használó későbbi üzembe helyezéseket gyorsabban dolgozza fel a rendszer.
Ha nem szeretné letiltani a CLI-konzolt, hozzáadhatja a jelölőt --no-wait
a parancshoz. Ez a beállítás azonban leállítja az üzembe helyezés állapotának interaktív megjelenítését.
Az --all-traffic
üzembe helyezés létrehozásához használt kód az ml online-deployment create
jelölője a végpont forgalmának 100%-át az újonnan létrehozott kék üzembe helyezéshez rendeli. Ennek a jelzőnek a használata fejlesztési és tesztelési célokra hasznos, de éles környezetben előfordulhat, hogy egy explicit parancson keresztül szeretné átirányítani a forgalmat az új üzembe helyezéshez. Használja például a az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
.
Hozza létre a végpontot:
A korábban definiált endpoint
paraméter és a korábban létrehozott MLClient
paraméter használatával most már létrehozhatja a munkaterületen lévő végpontot. Ez a parancs elindítja a végpont létrehozását, és egy megerősítést kérő választ ad vissza, amíg a végpont létrehozása folytatódik.
ml_client.online_endpoints.begin_create_or_update(endpoint)
Hozza létre az üzembe helyezést:
A korábban definiált blue_deployment_with_registered_assets
paraméter és a korábban létrehozott MLClient
paraméter használatával most már létrehozhatja a telepítést a munkaterületen. Ez a parancs elindítja az üzembe helyezés létrehozását, és egy megerősítést kérő választ ad vissza, amíg a telepítés létrehozása folytatódik.
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Ha nem szeretné letiltani a Python-konzolt, hozzáadhatja a jelölőt no_wait=True
a paraméterekhez. Ez a beállítás azonban leállítja az üzembe helyezés állapotának interaktív megjelenítését.
# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint)
Felügyelt online végpont és üzembe helyezés létrehozása
A stúdióval közvetlenül a böngészőben hozhat létre felügyelt online végpontot. Amikor felügyelt online végpontot hoz létre a studióban, meg kell határoznia egy kezdeti üzembe helyezést. Üres felügyelt online végpont nem hozható létre.
A felügyelt online végpontok stúdióban való létrehozásának egyik módja a Modellek lap. Ez a módszer egy egyszerű módszert is kínál modell hozzáadására egy meglévő felügyelt online üzembe helyezéshez. A modell és a környezetmodel-1
regisztrált modell üzembe helyezéséhez:
Nyissa meg az Azure Machine Learning Studiót.
A bal oldali panelen válassza a Modellek lapot.
Válassza ki a model-1 nevű modellt.
Válassza a Valós idejű végpont üzembe helyezése>lehetőséget.
Ez a művelet megnyit egy ablakot, ahol megadhatja a végpont részleteit.
Adjon meg egy egyedi végpontnevet az Azure-régióban. Az elnevezési szabályokkal kapcsolatos további információkért lásd: Végpontkorlátok.
Az alapértelmezett beállítás megtartása: a számítási típushoz felügyelt .
Tartsa meg az alapértelmezett beállítást: kulcsalapú hitelesítés a hitelesítési típushoz. A hitelesítésről további információt az ügyfelek hitelesítése az online végpontok esetében című témakörben talál.
Válassza a Tovább lehetőséget, amíg el nem ér az Üzembe helyezés lapra. Kapcsolja be az Application Insights diagnosztikáját az Engedélyezett állapotba, így később megtekintheti a végpont tevékenységeinek grafikonjait a stúdióban, és elemezheti a metrikákat és naplókat az Application Insights használatával.
A Tovább gombra kattintva lépjen a Kód + környezet lapra. Válasszon a következő lehetőségek közül:
-
Válasszon ki egy pontozó szkriptet az inferenciához: Tallózással és a korábban klónozott vagy letöltött adattárból válassza ki a \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py fájlt.
-
Környezeti szakasz kiválasztása: Válassza ki az egyéni környezeteket , majd válassza ki a korábban létrehozott saját-env:1 környezetet.
Válassza a Tovább lehetőséget, és fogadja el az alapértelmezett beállításokat, amíg a rendszer nem kéri az üzembe helyezés létrehozására.
Tekintse át az üzembehelyezési beállításokat, és válassza a Létrehozás lehetőséget.
Másik lehetőségként létrehozhat egy felügyelt online végpontot a stúdió Végpontok lapján.
Nyissa meg az Azure Machine Learning Studiót.
A bal oldali panelen válassza a Végpontok lapot.
Válassza a +Létrehozás lehetőséget.
Ez a művelet megnyit egy ablakot a modell kiválasztásához, valamint a végpont és az üzembe helyezés részleteinek megadásához. Adja meg a végpont és az üzembe helyezés beállításait a korábban leírtak szerint, majd válassza a Létrehozás lehetőséget az üzembe helyezés létrehozásához.
A sablon használatával hozzon létre egy online végpontot:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint.json \
--parameters \
workspaceName=$WORKSPACE \
onlineEndpointName=$ENDPOINT_NAME \
identityType=SystemAssigned \
authMode=AMLToken \
location=$LOCATION
A végpont létrehozása után helyezze üzembe a modellt a végponton:
resourceScope="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices"
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint-deployment.json \
--parameters \
workspaceName=$WORKSPACE \
location=$LOCATION \
onlineEndpointName=$ENDPOINT_NAME \
onlineDeploymentName=blue \
codeId="$resourceScope/workspaces/$WORKSPACE/codes/score-sklearn/versions/1" \
scoringScript=score.py \
environmentId="$resourceScope/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION" \
model="$resourceScope/workspaces/$WORKSPACE/models/sklearn/versions/1" \
endpointComputeType=Managed \
skuName=Standard_F2s_v2 \
skuCapacity=1
Az üzembe helyezés hibáinak hibakereséséhez tekintse meg az online végpontok üzembe helyezésének hibaelhárítását.
Az online végpont állapotának ellenőrzése
show
A parancs használatával megjelenítheti a végpont és az provisioning_state
üzembe helyezés adatait:
az ml online-endpoint show -n $ENDPOINT_NAME
A parancs használatával táblázatos formátumban listázhatja a munkaterület összes végpontjait list
:
az ml online-endpoint list --output table
Ellenőrizze a végpont állapotát, hogy a modell hiba nélkül lett-e üzembe helyezve:
ml_client.online_endpoints.get(name=endpoint_name)
A munkaterület összes végpontjának táblázatos felsorolása a list
következő módszerrel:
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
A metódus entitások listáját (iterátorát ManagedOnlineEndpoint
) adja vissza.
További információt további paraméterek megadásával kaphat. Adja ki például a végpontok listáját, például egy táblát:
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Felügyelt online végpontok megtekintése
Az összes felügyelt online végpontot megtekintheti a Végpontok lapon. A végpont Részletek lapján megtalálhatja a kritikus információkat, például a végpont URI-ját, az állapotot, a tesztelési eszközöket, a tevékenységfigyelőket, az üzembehelyezési naplókat és a mintahasználati kódot.
A bal oldali panelen válassza a Végpontok lehetőséget a munkaterület összes végpontjának listájának megtekintéséhez.
(Nem kötelező) Hozzon létre egy szűrőt a számítási típuson , hogy csak a felügyelt számítási típusok jelenjenek meg.
Válassza ki a végpont nevét a végpont Részletek lapjának megtekintéséhez.
A sablonok hasznosak az erőforrások üzembe helyezéséhez, de nem használhatók erőforrások listázására, megjelenítésére vagy meghívására. A műveletek végrehajtásához használja az Azure CLI-t, a Python SDK-t vagy a studiót. Az alábbi kód az Azure CLI-t használja.
show
A parancs használatával megjelenítheti a végpont és az provisioning_state
üzembe helyezés paraméterének adatait:
az ml online-endpoint show -n $ENDPOINT_NAME
A parancs használatával táblázatos formátumban listázhatja a munkaterület összes végpontjait list
:
az ml online-endpoint list --output table
Az online üzembe helyezés állapotának ellenőrzése
Ellenőrizze a naplókat, hogy a modell hiba nélkül lett-e üzembe helyezve.
A tároló naplókimenetének megtekintéséhez használja a következő PARANCSSOR-parancsot:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Alapértelmezés szerint a rendszer lekérte a naplókat a következtetési kiszolgáló tárolójából. A tároló inicializáló tárolójának naplóinak megtekintéséhez adja hozzá a jelzőt --container storage-initializer
. Az üzembehelyezési naplókkal kapcsolatos további információkért lásd : Tárolónaplók lekérése.
A naplókimenetet a get_logs
következő módszerrel tekintheti meg:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
Alapértelmezés szerint a rendszer lekérte a naplókat a következtetési kiszolgáló tárolójából. A tároló inicializáló tárolójának naplóinak megtekintéséhez adja hozzá a container_type="storage-initializer"
lehetőséget. Az üzembehelyezési naplókkal kapcsolatos további információkért lásd : Tárolónaplók lekérése.
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50, container_type="storage-initializer"
)
A naplókimenet megtekintéséhez válassza a Naplók lapot a végpont oldalán. Ha több telepítés van a végponton, válassza ki a legördülő listából azt a telepítést, amelynek a naplóját meg szeretné tekinteni.
Alapértelmezés szerint a rendszer lekérte a naplókat a következtetési kiszolgálóról. A tároló inicializáló tárolójának naplóinak megtekintéséhez használja az Azure CLI-t vagy a Python SDK-t (a részletekért tekintse meg az egyes lapokat). A tároló inicializáló tárolójának naplói információt nyújtanak arról, hogy a kód- és modelladatok sikeresen le lettek-e töltve a tárolóba. Az üzembehelyezési naplókkal kapcsolatos további információkért lásd : Tárolónaplók lekérése.
A sablonok hasznosak az erőforrások üzembe helyezéséhez, de nem használhatók erőforrások listázására, megjelenítésére vagy meghívására. A műveletek végrehajtásához használja az Azure CLI-t, a Python SDK-t vagy a studiót. Az alábbi kód az Azure CLI-t használja.
A tároló naplókimenetének megtekintéséhez használja a következő PARANCSSOR-parancsot:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Alapértelmezés szerint a rendszer lekérte a naplókat a következtetési kiszolgáló tárolójából. A tároló inicializáló tárolójának naplóinak megtekintéséhez adja hozzá a jelzőt --container storage-initializer
. Az üzembehelyezési naplókkal kapcsolatos további információkért lásd : Tárolónaplók lekérése.
A végpont meghívása adatok pontozásához a modell használatával
A végpont meghívásához és néhány adat pontozásához használja az invoke
Ön által választott parancsot vagy REST-ügyfelet:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
A végponton való hitelesítéshez használt kulcs lekérése:
Szabályozhatja, hogy mely Microsoft Entra biztonsági tagok szerezhetik be a hitelesítési kulcsot, ha hozzárendeli őket egy egyéni szerepkörhöz, amely lehetővé teszi és Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
lehetővé tesziMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
. A munkaterületek engedélyezésének kezelésével kapcsolatos további információkért tekintse meg az Azure Machine Learning-munkaterületekhez való hozzáférés kezelését ismertető témakört.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
A curl használatával pontozza az adatokat.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Figyeljen arra, hogy show
és get-credentials
parancsokat használ a hitelesítési hitelesítő adatok lekéréséhez. Figyeljen arra is, hogy a --query
zászlóval csak a szükséges attribútumokat szűrje. A jelzővel kapcsolatos további információkért tekintse meg az --query
Azure CLI-parancskimenet lekérdezését.
A meghívási naplók megtekintéséhez futtassa get-logs
újra.
A korábban létrehozott MLClient
paraméter használatával leírót kap a végponthoz. Ezután meghívhatja a végpontot a invoke
következő paraméterekkel rendelkező paranccsal:
-
endpoint_name
: A végpont neve.
-
request_file
: Fájl kérelemadatokkal.
-
deployment_name
: A végponton tesztelni kívánt üzembe helyezés neve.
Küldjön egy mintakérést egy JSON-fájl használatával.
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
A végpont részleteinek oldalán található Teszt lapon ellenőrizheti a felügyelt online telepítést. Adja meg a mintabemenetet, és tekintse meg az eredményeket.
Válassza a Teszt lapot a végpont részletes lapján.
A legördülő listában válassza ki a tesztelni kívánt üzembe helyezést.
Adja meg a mintabemenetet.
Válassza ki a Teszt lehetőséget.
A sablonok hasznosak az erőforrások üzembe helyezéséhez, de nem használhatók erőforrások listázására, megjelenítésére vagy meghívására. A műveletek végrehajtásához használja az Azure CLI-t, a Python SDK-t vagy a studiót. Az alábbi kód az Azure CLI-t használja.
A végpont meghívásához és néhány adat pontozásához használja az invoke
Ön által választott parancsot vagy REST-ügyfelet:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
(Nem kötelező) Az üzembe helyezés frissítése
Ha frissíteni szeretné a kódot, a modellt vagy a környezetet, frissítse a YAML-fájlt. Ezután futtassa a az ml online-endpoint update
parancsot.
Ha egyetlen update
parancsban frissíti a példányok számát (az üzembe helyezés skálázásához) más modellbeállításokkal (például kód, modell vagy környezet) együtt, először a skálázási műveletet hajtja végre. A többi frissítés a következő lépésben lesz alkalmazva. Célszerű ezeket a műveleteket éles környezetben külön végrehajtani.
A működés ismertetése update
:
Nyissa meg a fájlt online/model-1/onlinescoring/score.py.
Módosítsa a függvény utolsó sorát init()
: After logging.info("Init complete")
, add logging.info("Updated successfully")
.
Mentse a fájlt.
Futtassa ezt a parancsot:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
A YAML használatával történő frissítés deklaratív. Ez azt jelzi, hogy a YAML változásai az alapul szolgáló Resource Manager-erőforrásokban (végpontokban és üzemelő példányokban) jelennek meg. A deklaratív megközelítés megkönnyíti a GitOps használatát: módosítása a YAML-ben megy keresztül.
Általános frissítési paramétereket, például a paramétert használhatja a --set
CLI update
paranccsal a YAML-attribútumok felülbírálására, vagy adott attribútumok beállítására anélkül, hogy átadta volna őket a YAML-fájlban. Az önálló attribútumok használata --set
különösen hasznos fejlesztési és tesztelési forgatókönyvekben. Például az első üzembe helyezés értékének instance_count
felskálázásához használhatja a jelölőt --set instance_count=2
. Mivel azonban a YAML nem frissül, ez a technika nem segíti elő a GitOpst.
A YAML-fájl megadása nem kötelező. Ha például különböző egyidejűségi beállításokat szeretne tesztelni egy adott üzembe helyezéshez, kipróbálhatja a következőt az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4
: . Ez a megközelítés megtartja az összes meglévő konfigurációt, de csak a megadott paramétereket frissíti.
Mivel módosította a init()
végpont létrehozásakor vagy frissítésekor futó függvényt, az üzenet Updated successfully
megjelenik a naplókban. A naplók lekérése a következő futtatásával:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
A update
parancs helyi központi telepítésekkel is működik. Használja ugyanazt az ml online-deployment update
a parancsot a --local
jelölővel.
Ha frissíteni szeretné a kódot, a modellt vagy a környezetet, frissítse a konfigurációt, majd futtassa a MLClient
"metódust online_deployments.begin_create_or_update
az üzembe helyezés létrehozásához vagy frissítéséhez."
Ha egyetlen begin_create_or_update
módszerrel frissíti a példányszámot (az üzembe helyezés skálázásához) más modellbeállításokkal (például kód, modell vagy környezet) együtt, először a skálázási műveletet hajtja végre. Ezután a többi frissítés lesz alkalmazva. Célszerű ezeket a műveleteket éles környezetben külön végrehajtani.
A működés ismertetése begin_create_or_update
:
Nyissa meg a fájlt online/model-1/onlinescoring/score.py.
Módosítsa a függvény utolsó sorát init()
: After logging.info("Init complete")
, add logging.info("Updated successfully")
.
Mentse a fájlt.
Futtassa a metódust:
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
Mivel módosította a init()
végpont létrehozásakor vagy frissítésekor futó függvényt, az üzenet Updated successfully
megjelenik a naplókban. A naplók lekérése a következő futtatásával:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
A begin_create_or_update
módszer helyi üzembe helyezésekkel is működik. Használja ugyanazt a metódust a local=True
jelölővel.
Jelenleg csak a példányszám frissítésére van lehetősége a telepítéseknél. A példányok számának módosításával az alábbi utasításokat követve skálázhatja fel vagy le az egyes üzemelő példányokat:
- Nyissa meg a végpont Részletek lapját, és keresse meg a frissíteni kívánt központi telepítés kártyáját.
- Válassza a szerkesztés ikont (ceruza ikon) az üzembe helyezés neve mellett.
- Frissítse az üzembe helyezéshez társított példányok számát. Válasszon az alapértelmezett vagy a célkihasználtság között az üzembe helyezési skála típusa esetén.
- Ha az Alapértelmezett lehetőséget választja, megadhatja a példányszám numerikus értékét is.
- Ha a Célkihasználtság lehetőséget választja, megadhatja a paraméterekhez használandó értékeket az üzembe helyezés automatikus skálázása során.
- A Frissítés gombra kattintva befejezheti az üzembe helyezés példányszámának frissítését.
Jelenleg nincs lehetőség az üzembe helyezés ARM-sablonnal történő frissítésére.
Feljegyzés
Az ebben a szakaszban található központi telepítés frissítése példa egy helyben üzemelő frissítésre.
- Felügyelt online végpont esetén az üzembe helyezés az új konfigurációra frissül, egyszerre 20% csomóponttal. Ez azt jelzi, hogy ha az üzembe helyezés 10 csomópontból áll, akkor egyszerre 2 csomópont frissül.
- Kubernetes online végpont esetén a rendszer iteratív módon létrehoz egy új üzembehelyezési példányt az új konfigurációval, és törli a régit.
- Éles használat esetén fontolja meg a kék-zöld üzembe helyezést, amely biztonságosabb alternatívát kínál egy webszolgáltatás frissítéséhez.
Az automatikus skálázás automatikusan a megfelelő mennyiségű erőforrást futtatja az alkalmazásra háruló terhelés kezeléséhez. A felügyelt online végpontok támogatják az automatikus skálázást az Azure Monitor automatikus skálázási funkciójával való integrációval. Az automatikus skálázás konfigurálásához tekintse meg az online végpontok automatikus skálázását.
(Nem kötelező) SLA monitorozása az Azure Monitor használatával
A metrikák megtekintéséhez és a riasztások SLA-n alapuló beállításához kövesse az online végpontok monitorozásával kapcsolatos lépéseket.
(Nem kötelező) Integrálás a Log Analyticsszel
A get-logs
parancssori felület parancsa vagy az get_logs
SDK metódusa csak az utolsó néhány száz naplósort adja meg egy automatikusan kiválasztott példányból. A Log Analytics azonban lehetővé teszi a naplók tartós tárolását és elemzését. A naplózás használatáról további információt a Naplók használata című témakörben talál.
A végpont és az üzembe helyezés törlése
A végpont és annak összes mögöttes központi telepítése az alábbi paranccsal törölhető:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
A végpont és annak összes mögöttes központi telepítése az alábbi paranccsal törölhető:
ml_client.online_endpoints.begin_delete(name=endpoint_name)
Ha nem használja a végpontot és az üzembe helyezést, törölje őket. A végpont törlésével az összes mögöttes üzembe helyezést is törli.
- Nyissa meg az Azure Machine Learning Studiót.
- A bal oldali panelen válassza a Végpontok lapot.
- Válasszon ki egy végpontot.
- Válassza a Törlés lehetőséget.
Egy felügyelt online végpontot közvetlenül is törölhet a Végpont részletei lapon található Törlés ikonra kattintva.
A végpont és annak összes mögöttes központi telepítése az alábbi paranccsal törölhető:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Kapcsolódó tartalom