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 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 3a é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ával pathadhatja 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őt path: . A rendszerképet használjuk environment.docker.image . A conda_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:

  1. 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.
  2. 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:1a 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 createa parancsokataz ml model create. Ha többet szeretne megtudni ezekről a parancsokról, futtassa a és az ml environment create -ha 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:latesthaszná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 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/actiona 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ó: --queryAz 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:

  1. Nyissa meg az online/model-1/onlinescoring/score.py fájlt.

  2. Módosítsa a függvény utolsó sorátinit(): After logging.info("Init complete"), add .logging.info("Updated successfully")

  3. Mentse a fájlt.

  4. 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ének instance_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.
  5. Mivel módosította a init() végpont létrehozásakor vagy frissítésekor futó függvényt, az üzenet Updated 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