Gépi tanulási modell üzembe helyezése és pontozása online végpont használatával
A KÖVETKEZŐKRE VONATKOZIK: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 helyezi és teszteli a modellt az Azure-ban. Emellett megtudhatja, hogyan tekintheti meg az üzembehelyezési naplókat, és figyelheti a szolgáltatásiszint-szerződést (SLA). A cikk végére egy skálázható HTTPS-/REST-végponttal fog rendelkezni, 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égpontot különböztetünk meg: felügyelt online végpontokat és Kubernetes online végpontokat. A végpontokkal és a felügyelt online végpontok és a Kubernetes online végpontjai közötti különbségekkel kapcsolatos további információkért lásd: Mik azok az Azure Machine Learning-végpontok?.
A felügyelt online végpontok segítségével azonnal üzembe helyezheti a használatra kész ML-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, védelméről és monitorozásáról, így nem kell foglalkoznia a mögöttes infrastruktúra beállításával és kezelésével.
A dokumentum 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 dokumentumban található, a felügyelt online végponttal kapcsolatos vitafórumba ágyazott megjegyzéseket.
Előfeltételek
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml-bővítmény v2 (aktuális)
A cikkben ismertetett lépések végrehajtása előtt győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:
Az Azure CLI és az
ml
Azure CLI bővítménye. További információ: A parancssori felület (v2) telepítése, beállítása és használata.Fontos
A cikkben szereplő CLI-példák feltételezik, hogy a Bash (vagy kompatibilis) rendszerhéjat használja. Például Linux rendszerből vagy Linux windowsos alrendszerből.
Egy Azure Machine Learning-munkaterület. Ha még nincs ilyenje, a telepítéssel, beállítással és a parancssori felület (v2) használatával hozzon létre egyet.
Az Azure szerepköralapú hozzáférés-vezérlése (Azure RBAC) használatos az Azure Machine Learning műveleteihez való hozzáférés megadására. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókjához hozzá kell rendelni az Azure Machine Learning-munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkört, amely lehetővé teszi
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
. Ha a Studiót használja az online végpontok/üzemelő példányok létrehozásához/kezeléséhez, az erőforráscsoport tulajdonosától további "Microsoft.Resources/deployments/write" engedélyre lesz szüksége. További információ: Azure Machine Learning-munkaterülethez 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, így könnyebben végezhet hibakeresést.
Virtuálisgép-kvóta kiosztása az üzembe helyezéshez
Felügyelt online végpontok esetén az Azure Machine Learning a számítási erőforrások 20%-át fenntartja a frissítések végrehajtásához. Ezért ha adott számú példányt kér egy üzemelő példányban, a hibák elkerülése érdekében rendelkeznie kell egy rendelkezésre álló kvótával ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU
. Ha például egy üzemelő példányban egy Standard_DS3_v2 virtuális gép 10 példányát kéri le (amely 4 maggal rendelkezik), akkor 48 magra (12 instances * 4 cores
) vonatkozó kvótával kell rendelkeznie. A használati adatok megtekintéséről és a kvótanövelések kéréséről a Használati adatok és kvóták megtekintése a Azure Portal című témakörben olvashat.
A rendszer előkészítése
Környezeti változók beállítása
Ha még nem állította be az Alapértelmezett beállításokat az Azure CLI-hez, 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 a következő 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 a példák adattárát (azureml-examples). Ezután futtassa a következő kódot az adattár könyvtárához cli/
való ugráshoz:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Tipp
A használatával --depth 1
csak a legújabb véglegesítést klónozhatja az adattárba, ami csökkenti a művelet végrehajtásához szükséges időt.
Az oktatóanyagban szereplő parancsok a fájlokban deploy-local-endpoint.sh
és deploy-managed-online-endpoint.sh
a cli
könyvtárban találhatók, a YAML konfigurációs fájljai pedig az endpoints/online/managed/sample/
alkönyvtárban találhatók.
Megjegyzés
Az online Kubernetes-végpontok YAML-konfigurációs fájljai az endpoints/online/kubernetes/
alkönyvtárban találhatók.
A végpont meghatározása
Végpont meghatározásához meg kell adnia a következőket:
- Végpont neve: A végpont neve. Az Azure-régióban egyedinek kell lennie. Az elnevezési szabályokkal kapcsolatos további információkért lásd: felügyelt online végpontkorlátok.
- Hitelesítési mód: A végpont hitelesítési módszere. Válasszon a kulcsalapú hitelesítés és az Azure Machine Learning-jogkivonat-alapú hitelesítés közül. A kulcsok nem járnak le, de a jogkivonatok lejárnak. További információ a hitelesítésről: Hitelesítés online végponton.
- Emellett leírást és címkéket is hozzáadhat a végponthoz.
Végpont nevének 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
egy egyedi névre).
Linux esetén futtassa a következő parancsot:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
A végpont konfigurálása
A következő kódrészlet a végpontokat/online/managed/sample/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ó referenciát az alábbi táblázat ismerteti. Az attribútumok megadásának módjáról az online végpont YAML-referenciájában olvashat. A felügyelt végpontokkal kapcsolatos korlátozásokról további információt az Erőforrások kvótáinak kezelése és növelése az Azure Machine Learning használatával című témakörben talál.
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 legutóbbi jogkivonat lekéréséhez használja a az ml online-endpoint get-credentials parancsot. |
Az üzembe helyezés meghatározása
Az üzembe helyezés a modell üzemeltetéséhez szükséges erőforrások készlete, amely elvégzi a tényleges következtetést. Modell üzembe helyezéséhez a következőket kell tennie:
- Modellfájlok (vagy a munkaterületen már regisztrált modell neve és verziója). A példában van egy scikit-learn modellünk, amely regressziót végez.
- Egy pontozási szkript, azaz egy kód, amely végrehajtja a modellt egy adott bemeneti kérelemben. A pontozási szkript fogadja az üzembe helyezett webszolgáltatásnak küldött adatokat, és továbbítja azokat a modellnek. A szkript ezután végrehajtja a modellt, és visszaadja a válaszát az ügyfélnek. A pontozási szkript a modellre jellemző, és tisztában kell lennie azzal, hogy a modell milyen adatokat vár el bemenetként, és kimenetként adja vissza. Ebben a példában egy score.py fájllal rendelkezünk.
- Olyan környezet, amelyben a modell fut. A környezet lehet Egy Docker-rendszerkép Conda-függőségekkel vagy Docker-fájlokkal.
- A példánytípus és a skálázási kapacitás megadására vonatkozó beállítások.
Az alábbi táblázat az üzembe helyezés fő attribútumait ismerteti:
Attribútum | Leírás |
---|---|
Név | Az üzembe helyezés neve. |
Végpont neve | Annak a végpontnak a neve, amely alatt létre szeretné hozni az üzembe helyezést. |
Modellezés | Az üzembe helyezéshez használni kívánt modell. Ez az érték lehet a munkaterület meglévő verziószámozott modelljére vagy egy beágyazott modell specifikációjára való hivatkozás. |
Kód elérési útja | A helyi fejlesztési környezet könyvtárának elérési útja, amely tartalmazza a modell pontozásához szükséges Összes Python-forráskódot. Beágyazott könyvtárakat és csomagokat is használhat. |
Pontozási szkript | A pontozófájl relatív elérési útja a forráskód könyvtárában. Ennek a Python-kódnak rendelkeznie kell egy init() függvénnyel és egy run() függvénnyel. A init() rendszer meghívja a függvényt a modell létrehozása vagy frissítése után (használhatja például a modell gyorsítótárazására a memóriában). A run() függvényt a rendszer a végpont minden hívásánál meghívja, hogy elvégezhesse a tényleges pontozást és előrejelzést. |
Környezet | A modell és a kód üzemeltetésére szolgáló környezet. Ez az érték lehet a munkaterület egy meglévő verziószámozott környezetére való hivatkozás, vagy egy beágyazott környezet specifikációja. |
Példány típusa | Az üzembe helyezéshez használni kívánt virtuálisgép-méret. A támogatott méretek listájáért lásd: Felügyelt online végpontok termékváltozatainak listája. |
Példányok száma | Az üzembe helyezéshez használandó példányok száma. Alapozza az értéket a várt számítási feladatra. A magas rendelkezésre állás érdekében javasoljuk, hogy állítsa az értéket legalább 3 a értékre. A frissítések végrehajtásához további 20%-ot foglalunk le. További információ: Felügyelt online végpontkvóták. |
Megjegyzés
- A modellre és a tárolórendszerképre (a Környezetben meghatározottak szerint) az üzembe helyezés bármikor újra hivatkozhat, amikor az üzembe helyezés mögötti példányok biztonsági javításokon és/vagy egyéb helyreállítási műveleteken mennek keresztül. Ha regisztrált modellt vagy tárolórendszerképet használt Azure Container Registry üzembe helyezéshez, és eltávolította a modellt vagy a tárolórendszerképet, az ezekre az eszközökre támaszkodó üzembe helyezések sikertelenek lehetnek az újrabecsülésekor. Ha eltávolította a modellt vagy a tárolórendszerképet, győződjön meg arról, hogy a függő üzemelő példányok újra létre lettek hozva vagy frissítve lettek alternatív modellel vagy tárolórendszerképpel.
- A környezet által hivatkozott tárolóregisztrációs adatbázis csak akkor lehet privát, ha a végponti identitás rendelkezik az Azure Active Directory-hitelesítéssel és az Azure RBAC-vel való hozzáféréshez szükséges engedéllyel. Ugyanezen okból a Azure Container Registry kívüli privát Docker-regisztrációs adatbázisok nem támogatottak.
Üzembe helyezés konfigurálása
Az alábbi kódrészlet a végpontokat/online/managed/sample/blue-deployment.yml fájlt mutatja be, 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-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Megjegyzés
A blue-deployment.yml fájlban a következő üzembehelyezési attribútumokat értünk el:
model
– Ebben a példában a modelltulajdonságokat a következő használatávalpath
adhatja meg: . A rendszer automatikusan feltölti és regisztrálja a modellfájlokat egy automatikusan létrehozott névvel.environment
– Ebben a példában beágyazott definíciókkal rendelkezünk, amelyek tartalmazzák a következőtpath
: . A rendszerképet használjukenvironment.docker.image
. Aconda_file
függőségek a rendszerkép tetején lesznek telepítve.
Az üzembe helyezés során a rendszer feltölti a helyi fájlokat, például a pontozási modell Python-forrását a fejlesztési környezetből.
A YAML-sémával kapcsolatos további információkért lásd az online végpont YAML-referenciáját.
Megjegyzés
Kubernetes használata felügyelt 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 a Azure Machine Learning stúdió használatával.
- Használja a YAML végpontot a Kubernetes célként való megcélzásához a felügyelt YAML-végpont helyett. Szerkesztenie kell a YAML-et, hogy az értékét
target
a regisztrált számítási cél nevére módosítsa. Ezt a deployment.yaml fájlt használhatja, amely további tulajdonságokkal rendelkezik a Kubernetes üzembe helyezéséhez.
A cikkben használt összes parancs (kivéve az opcionális SLA-monitorozást és az Azure Log Analytics-integrációt) használható felügyelt végpontokkal vagy Kubernetes-végpontokkal.
Modell és környezet külön regisztrálása
Ebben a példában a (fájlok feltöltésének path
helyét) beágyazottként adhatja meg. A parancssori felület automatikusan feltölti a fájlokat, és regisztrálja a modellt és a környezetet. Az éles környezetben ajánlott eljárásként regisztrálnia kell a modellt és a környezetet, és külön kell megadnia a regisztrált nevet és verziót a YAML-ben. Használja az űrlapot vagy environment: azureml:my-env:1
a következőtmodel: azureml:my-model:1
: .
Regisztrációhoz kinyerheti a YAML-definíciókat model
a és environment
a fájlból külön YAML-fájlokba, és használhatja a és az ml environment create
a parancsokataz ml model create
. Ha többet szeretne megtudni ezekről a parancsokról, futtassa a és az ml environment create -h
a parancsotaz ml model create -h
.
A modell eszközként való regisztrálásával kapcsolatos további információkért lásd : A modell regisztrálása eszközként a Machine Learningben a parancssori felület használatával. További információ a környezetek létrehozásáról: Azure Machine Learning-környezetek kezelése a CLI & SDK-val (v2).
Különböző CPU- és GPU-példánytípusok és -rendszerképek használata
A blue-deployment.yml fájl előző definíciója egy általános célú típuspéldányt Standard_DS3_v2
és egy nem GPU-alapú Docker-lemezképet mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
használ. GPU-számítás esetén válassza ki a GPU számítási típus termékváltozatát és a GPU Docker-rendszerképet.
A támogatott általános célú és GPU-példánytípusokért lásd: Felügyelt online végpontok által támogatott virtuálisgép-termékváltozatok. Az Azure Machine Learning CPU- és GPU-alaprendszerképeinek listáját az Azure Machine Learning alaprendszerképei című témakörben találja.
Megjegyzés
Ha a Kubernetes-t a felügyelt végpontok helyett számítási célként szeretné használni, olvassa el a Kubernetes számítási cél bemutatása című témakört.
Több modell használata üzemelő példányban
Jelenleg üzembe helyezésenként csak egy modellt adhat meg az üzembehelyezési definícióban, ha az Azure CLI-t, a Python SDK-t vagy bármely más ügyféleszközt használja.
Ha egy üzemelő példányban egynél több modellt szeretne használni, regisztráljon egy modellmappát, amely az összes modellt fájlként vagy alkönyvtárként tartalmazza. A pontozószkriptben használja az AZUREML_MODEL_DIR
környezeti változót a modellgyökérmappa útvonalának lekéréséhez. A mögöttes könyvtárstruktúra megmarad. Ha több modellt szeretne üzembe helyezni egy üzemelő példányban, olvassa el a Több modell üzembe helyezése egy üzembe helyezésre (CLI-példa) és Több modell üzembe helyezése egy üzembe helyezésre (SDK-példa) című témakört.
Tipp
Ha több mint 1500 fájlt szeretne regisztrálni, érdemes lehet .tar.gz formátumban tömöríteni a fájlokat vagy alkönyvtárakat a modell regisztrálásakor. A modellek használatához a pontozási szkriptből törölheti a fájlokat vagy alkönyvtárakat az init() függvényben. Másik lehetőségként a modell regisztrálásakor állítsa a tulajdonságot a értékreTrue
, amely lehetővé teszi az azureml.unpack
automatikus kicsomagolást. Mindkét esetben az inicializálási fázisban egyszer történik a feloldás.
A pontozási szkript ismertetése
Tipp
Az online végpontok pontozási szkriptjének formátuma megegyezik a CLI előző verziójában és a Python SDK-ban használt formátummal.
Ahogy korábban említettük, a megadott code_configuration.scoring_script
pontozási szkriptnek egy függvénysel init()
és egy függvénnyel kell rendelkeznie run()
.
Ez a példa a score.py fájlt használja: score.py
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 a tároló inicializálása vagy elindításakor lesz meghívva. 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 ebben a példában is).
A run()
függvény a végpont minden hívásához meghívható, és elvégzi a tényleges pontozást és előrejelzést. Ebben a példában adatokat nyerünk ki egy JSON-bemenetből, meghívjuk a scikit-learn modell metódusát predict()
, majd visszaadjuk az eredményt.
Helyi végpontok használatával történő helyi üzembe helyezés és hibakeresés
Javasoljuk, hogy az Azure-ban való üzembe helyezés előtt ellenőrizze és hibakereséssel tesztelje a végpontot helyileg. Az Azure CLI és a Python SDK támogatja a helyi végpontokat és üzembe helyezéseket, míg a Azure Machine Learning stúdió és az ARM-sablon 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, hibaelhárítást végezhet a Docker Engine-ben.
Tipp
Az Azure Machine Learning következtetési HTTP-kiszolgáló Python-csomagjával helyileg, Docker Engine nélkül is hibakeresést végezhet a pontozási szkriptben. A következtetési kiszolgálóval végzett hibakeresés segít a pontozási szkript hibakeresésében, mielőtt üzembe helyezené a helyi végpontokon, hogy a hibakeresést az üzembehelyezési tároló konfigurációi ne befolyásolják.
A helyi végpontok a következő korlátozásokkal rendelkeznek:
- Nem támogatják a forgalmi szabályokat, a hitelesítést és a mintavételi beállításokat.
- Végpontonként csak egy üzembe helyezést támogatnak.
- Csak a helyi modellfájlokat támogatják. Ha tesztelni szeretné a regisztrált modelleket, először töltse le őket a PARANCSSOR vagy az SDK használatával, majd használja
path
az üzembehelyezési definícióban a szülőmappára való hivatkozáshoz.
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 helyi hibakeresése a Visual Studio Code-ban.
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, és közvetlenül létrehozhatja az üzembe helyezést (következő lépés), 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
Most hozzon létre egy üzembe helyezést a végpont alatt.blue
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
A --local
jelző arra utasítja a parancssori felületet, hogy helyezze üzembe a végpontot a Docker-környezetben.
Tipp
A végpontok helyi teszteléséhez és hibakereséséhez használja a Visual Studio Code-ot. További információ: Online végpontok helyi hibakeresése a Visual Studio Code-ban.
A helyi üzembe helyezés sikerességének ellenőrzése
Ellenőrizze az állapotot annak ellenőrzéséhez, hogy a modell hiba nélkül lett-e üzembe helyezve:
az ml online-endpoint show -n $ENDPOINT_NAME --local
A kimenetnek az alábbi JSON-hoz hasonlónak kell lennie. A provisioning_state
a következő: Succeeded
.
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
A következő táblázat a lehetséges értékeket tartalmazza:provisioning_state
Állam | Leírás |
---|---|
Létrehozás | Az erőforrás létrehozása folyamatban van. |
Frissítés | Az erőforrás frissítése folyamatban van. |
Törlés | Az erőforrás törlése folyamatban van. |
Sikeres | A létrehozási/frissítési művelet sikeres volt. |
Sikertelen | A létrehozási/frissítési/törlési művelet nem sikerült. |
A helyi végpont meghívása az adatok pontozásához a modell használatával
Hívja meg a végpontot a modell pontozásához a kényelem parancs használatával invoke
, és adja át a JSON-fájlban tárolt lekérdezési paramétereket:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Ha REST-ügyfelet (például curl) szeretne használni, rendelkeznie kell a pontozási URI-vel. A pontozási URI lekéréséhez futtassa a parancsot az ml online-endpoint show --local -n $ENDPOINT_NAME
. A visszaadott adatok között keresse meg az scoring_uri
attribútumot. A curl-alapú mintaparancsok a jelen dokumentum későbbi részében érhetők el.
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
Az online végpont üzembe helyezése az Azure-ban
Ezután helyezze üzembe az online végpontot az Azure-ban.
Üzembe helyezés az Azure-ban
A végpont felhőben való létrehozásához futtassa a következő kódot:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
A végpont alatt elnevezett blue
üzemelő példány létrehozásához futtassa a következő kódot:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Az üzembe helyezés 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 üzemelő példányok gyorsabban befejezik a feldolgozást.
Tipp
- Ha nem szeretné letiltani a CLI-konzolt, hozzáadhatja a jelzőt
--no-wait
a parancshoz. Ez azonban leállítja az üzembe helyezés állapotának interaktív megjelenítését.
Fontos
A --all-traffic
fenti az ml online-deployment create
jelző a végpont forgalmának 100%-át lefoglalja az újonnan létrehozott kék üzembe helyezéshez. Bár ez fejlesztési és tesztelési célokra hasznos, éles környezetben érdemes lehet egy explicit paranccsal megnyitni az új üzembe helyezés felé irányuló forgalmat. Például: az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
.
Tipp
- A hibák elhárításához használja az online végpontok üzembe helyezésének hibaelhárítását .
A végpont állapotának ellenőrzése
A show
parancs a végpont és az üzembe helyezés adatait provisioning_state
tartalmazza:
az ml online-endpoint show -n $ENDPOINT_NAME
A munkaterület összes végpontját táblázatos formátumban listázhatja a list
következő paranccsal:
az ml online-endpoint list --output table
Az online üzembe helyezés állapotának ellenőrzése
Ellenőrizze a naplókban, hogy a modell hiba nélkül lett-e üzembe helyezve.
Egy tároló naplókimenetének megtekintéséhez használja a következő CLI-parancsot:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Alapértelmezés szerint a naplókat a rendszer a következtetési kiszolgáló tárolójából kéri le. A storage initializer tároló 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 az 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álhatja a invoke
parancsot vagy egy tetszőleges REST-ügyfelet:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Az alábbi példa bemutatja, hogyan szerezheti be a végponton való hitelesítéshez használt kulcsot:
Tipp
Szabályozhatja, hogy mely Azure Active Directory-rendszerbiztonsági tagok kaphatják meg a hitelesítési kulcsot, ha hozzárendeli őket egy egyéni szerepkörhöz, amely lehetővé teszi Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
a és Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
a használatát. További információ: Azure Machine Learning-munkaterülethez való hozzáférés kezelése.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Ezután használja a curl-t az adatok pontozásához.
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
Figyelje meg, hogy a és get-credentials
a parancsokkal szerezzük show
be a hitelesítési hitelesítő adatokat. Figyelje meg azt is, hogy a --query
jelzővel az attribútumokat csak arra szűrjük, amire szükségünk van. További információ: --query
Az Azure CLI-parancs kimenetének lekérdezése.
A hívási naplók megtekintéséhez futtassa újra a parancsot get-logs
.
A jogkivonatok használatával történő hitelesítéssel kapcsolatos információkért lásd: Hitelesítés online végpontokon.
(Nem kötelező) Az üzemelő példány frissítése
Ha frissíteni szeretné a kódot, a modellt vagy a környezetet, frissítse a YAML-fájlt, majd futtassa a az ml online-endpoint update
parancsot.
Megjegyzés
Ha egyetlen update
parancsban 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, akkor a skálázási művelet lesz végrehajtva először, majd a többi frissítés lesz alkalmazva. Célszerű ezeket a műveleteket külön-külön végrehajtani éles környezetben.
A működés update
megértése:
Nyissa meg az online/model-1/onlinescoring/score.py fájlt.
Módosítsa a függvény utolsó sorát
init()
: Afterlogging.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.yml
Megjegyzés
A YAML használatával történő frissítés deklaratív. Ez azt jelzi, hogy a YAML változásai megjelennek a mögöttes Azure-Resource Manager-erőforrásokban (végpontokban és üzemelő példányokban). A deklaratív megközelítés megkönnyíti a GitOps használatát: A végpontok és üzemelő példányok (sőt
instance_count
) minden módosítása a YAML-en megy keresztül.Tipp
- Általános frissítési paramétereket, például a paramétert használhatja a
--set
CLI-paranccsalupdate
, amellyel felülbírálhatja a YAML attribútumait, vagy beállíthatja az adott attribútumokat anélkül, hogy átadta őket a YAML-fájlba. Az önálló attribútumok használata--set
különösen hasznos fejlesztési és tesztelési forgatókönyvekben. Az első üzembe helyezés értékénekinstance_count
vertikális felskálázásához például használhatja a jelzőt--set instance_count=2
. Mivel azonban a YAML nem frissül, ez a technika nem teszi lehetővé a GitOps használatát. - A YAML-fájl megadása NEM kötelező. Ha például egy adott üzemelő példány különböző egyidejűségi beállítását szeretné tesztelni, próbálkozzon a következővel
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 megtartja az összes meglévő konfigurációt, de csak a megadott paramétereket frissíti.
- Általános frissítési paramétereket, például a paramétert használhatja a
Mivel módosította a
init()
végpont létrehozásakor vagy frissítésekor futó függvényt, az üzenetUpdated successfully
a naplókban lesz. Kérje le a naplókat a következő futtatásával:az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
A update
parancs helyi üzemelő példányokkal is működik. Használja ugyanazt az ml online-deployment update
a parancsot a --local
jelölővel.
Megjegyzés
Az üzemelő példány előző frissítése egy példa a működés közbeni központi frissítésre.
- Felügyelt online végpont esetén az üzembe helyezés az új konfigurációra frissül, egyszerre 20%-os csomópontokkal. Ez azt jelzi, hogy ha az üzemelő példány 10 csomóponttal rendelkezik, 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 érdemes megfontolni a kék-zöld üzembe helyezést, amely biztonságosabb alternatívát kínál a webszolgáltatások frissítéséhez.
(Nem kötelező) Automatikus skálázás konfigurálása
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ó révén. Az automatikus skálázás konfigurálásához lásd: Online végpontok automatikus skálázása.
(Nem kötelező) SLA monitorozása az Azure Monitor használatával
Ha meg szeretné tekinteni a metrikákat, és riasztásokat szeretne beállítani az SLA alapján, hajtsa végre az online végpontok monitorozása című cikkben leírt 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 biztosítja 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. További információ a naplózás használatáról: Online végpontok monitorozása.
A végpont és az üzembe helyezés törlése
Ha nem használja az üzemelő példányt, törölje a következő kód futtatásával (ez törli a végpontot és az összes mögöttes üzemelő példányt):
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Következő lépések
- Biztonságos bevezetés online végpontokhoz
- Modellek üzembe helyezése REST használatával
- Felügyelt online végpontok automatikus skálázása
- Felügyelt online végpontok monitorozása
- Azure-erőforrások elérése egy felügyelt identitással rendelkező online végpontról
- Online végpontok üzembe helyezésének hibaelhárítása
- Hálózatelkülönítés engedélyezése felügyelt online végpontokkal
- Az Azure Machine Learning által felügyelt online végpont költségeinek megtekintése
- Az erőforráskvóták kezelése és növelése az Azure Machine Learninggel
- Kötegelt végpontok használata kötegelt pontozáshoz