Megosztás a következőn keresztül:


Modell üzembe helyezése online végpontként

A KÖVETKEZŐKRE VONATKOZIK: Python SDK azure-ai-ml v2 (aktuális)

Megtudhatja, hogyan helyezhet üzembe egy modellt egy online végponton az Azure Machine Learning Python SDK 2-s verzióját használva.

Ebben az oktatóanyagban egy olyan modellt helyez üzembe és használ, amely előrejelzi annak valószínűségét, hogy egy ügyfél alapértelmezés szerint hitelkártyás fizetést használ.

A lépések a következők:

  • Modell regisztrálása
  • Végpont és első üzembe helyezés létrehozása
  • Próbaüzem üzembe helyezése
  • Tesztadatok manuális küldése az üzembe helyezéshez
  • Az üzembe helyezés részleteinek lekérése
  • Második üzembe helyezés létrehozása
  • A második üzembe helyezés manuális méretezése
  • Az éles forgalom mindkét üzemelő példány közötti lefoglalásának frissítése
  • A második üzembe helyezés részleteinek lekérése
  • Az új üzembe helyezés bevezetése és az első törlése

Ez a videó bemutatja, hogyan kezdheti meg az Azure Machine Learning Studiót, hogy követni tudja az oktatóanyag lépéseit. A videó bemutatja, hogyan hozhat létre jegyzetfüzetet, hozhat létre számítási példányt, és klónozhatja a jegyzetfüzetet. A lépéseket a következő szakaszokban is ismertetjük.

Előfeltételek

  1. Az Azure Machine Learning használatához munkaterületre van szüksége. Ha nem rendelkezik ilyen erőforrással, végezze el a munkaterület létrehozásához szükséges erőforrások létrehozását, és tudjon meg többet a használatáról.

  2. Jelentkezzen be a stúdióba , és válassza ki a munkaterületet, ha még nincs megnyitva.

  3. Jegyzetfüzet megnyitása vagy létrehozása a munkaterületen:

    • Ha kódot szeretne másolni és beilleszteni a cellákba, hozzon létre egy új jegyzetfüzetet.
    • Vagy nyisson meg oktatóanyagokat/get-started-notebooks/deploy-model.ipynb-t a stúdió Minták szakaszából. Ezután válassza a Klónozás lehetőséget a jegyzetfüzet fájlokhoz való hozzáadásához. A mintajegyzetfüzetek megkereséséhez lásd : Learn from sample notebooks.
  4. Tekintse meg a virtuálisgép-kvótát, és győződjön meg arról, hogy elegendő kvóta áll rendelkezésre az online üzembe helyezés létrehozásához. Ebben az oktatóanyagban legalább 8 magra STANDARD_DS3_v2 és 12 magra STANDARD_F4s_v2van szüksége. A virtuális gép kvótahasználatának megtekintéséhez és a kvótanövelések kéréséhez tekintse meg az erőforráskvóták kezelését.

A kernel beállítása és megnyitása a Visual Studio Code-ban (VS Code)

  1. A megnyitott jegyzetfüzet fölötti felső sávon hozzon létre egy számítási példányt, ha még nem rendelkezik ilyenrel.

    Képernyőkép a számítási példányok létrehozásáról.

  2. Ha a számítási példány le van állítva, válassza a Számítás indítása lehetőséget, és várja meg, amíg fut.

    Képernyőkép egy leállított számítási példány indításáról.

  3. Várjon, amíg a számítási példány fut. Ezután győződjön meg arról, hogy a jobb felső sarokban található kernel az Python 3.10 - SDK v2. Ha nem, válassza ki a kernelt a legördülő listából.

    Képernyőkép a kernel beállításáról.

    Ha nem látja ezt a kernelt, ellenőrizze, hogy fut-e a számítási példány. Ha igen, válassza a jegyzetfüzet jobb felső sarkában található Frissítés gombot.

  4. Ha megjelenik egy szalagcím, amely azt jelzi, hogy hitelesíteni kell, válassza a Hitelesítés lehetőséget.

  5. A jegyzetfüzetet itt futtathatja, vagy megnyithatja a VS Code-ban egy teljes integrált fejlesztési környezethez (IDE) az Azure Machine Learning-erőforrások segítségével. Válassza a Megnyitás a VS Code-ban lehetőséget, majd válassza a webes vagy asztali lehetőséget. Ha így indul el, a VS Code a számítási példányhoz, a kernelhez és a munkaterület fájlrendszeréhez lesz csatolva.

    Képernyőkép a jegyzetfüzet VS Code-ban való megnyitásáról.

Fontos

Az oktatóanyag többi része az oktatóanyag-jegyzetfüzet celláit tartalmazza. Másolja és illessze be őket az új jegyzetfüzetbe, vagy váltson most a jegyzetfüzetre, ha klónozta.

Feljegyzés

  • A kiszolgáló nélküli Spark Compute alapértelmezés szerint nem Python 3.10 - SDK v2 lett telepítve. Javasoljuk, hogy a felhasználók hozzon létre egy számítási példányt, és válassza ki az oktatóanyag folytatása előtt.

Leíró létrehozása munkaterületre

Mielőtt belemerül a kódba, szüksége van egy módszerre a munkaterületre való hivatkozáshoz. Hozzon létre ml_client egy leírót a munkaterületen, és használja az ml_client erőforrások és feladatok kezelését.

A következő cellába írja be az előfizetés azonosítóját, az erőforráscsoport nevét és a munkaterület nevét. Az alábbi értékek megkeresése:

  1. A jobb felső Azure Machine Learning Studio eszköztáron válassza ki a munkaterület nevét.
  2. Másolja a munkaterület, az erőforráscsoport és az előfizetés azonosítójának értékét a kódba.
  3. Ki kell másolnia egy értéket, be kell zárnia a területet, és be kell illesztenie, majd vissza kell térnie a következőhöz.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

# authenticate
credential = DefaultAzureCredential()

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

Feljegyzés

A létrehozás MLClient nem fog csatlakozni a munkaterülethez. Az ügyfél inicializálása lusta, és az első alkalommal várakozik, amikor hívást kell kezdeményeznie (ez a következő kódcellában történik).

Regisztrálja a modellt

Ha már elvégezte a korábbi betanítási oktatóanyagot, a modell betanítását, regisztrált egy MLflow-modellt a betanítási szkript részeként, és továbbléphet a következő szakaszra.

Ha nem végezte el a betanítási oktatóanyagot, regisztrálnia kell a modellt. Ajánlott a modell regisztrálása az üzembe helyezés előtt.

Az alábbi kód megadja a path beágyazott fájlokat (ahonnan fájlokat tölthet fel). Ha klónozta az oktatóanyagok mappát, futtassa a következő kódot is. Ellenkező esetben töltse le a modell fájljait és metaadatait a credit_defaults_model mappából. Mentse a letöltött fájlokat a számítógép credit_defaults_model mappájának helyi verziójába, és frissítse az alábbi kód elérési útját a letöltött fájlok helyére.

Az SDK automatikusan feltölti a fájlokat, és regisztrálja a modellt.

A modell eszközként való regisztrálásával kapcsolatos további információkért lásd : A modell eszközként való regisztrálása a Machine Learningben az SDK használatával.

# Import the necessary libraries
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

# Provide the model details, including the
# path to the model files, if you've stored them locally.
mlflow_model = Model(
    path="./deploy/credit_defaults_model/",
    type=AssetTypes.MLFLOW_MODEL,
    name="credit_defaults_model",
    description="MLflow Model created from local files.",
)

# Register the model
ml_client.models.create_or_update(mlflow_model)

Ellenőrizze, hogy a modell regisztrálva van-e

Az Azure Machine Learning Studióban ellenőrizheti a Modellek lapot a regisztrált modell legújabb verziójának azonosításához.

Képernyőkép a regisztrált modellről a studióban.

Másik lehetőségként az alábbi kód lekéri a használni kívánt legújabb verziószámot.

registered_model_name = "credit_defaults_model"

# Let's pick the latest version of the model
latest_model_version = max(
    [int(m.version) for m in ml_client.models.list(name=registered_model_name)]
)

print(latest_model_version)

Most, hogy már rendelkezik regisztrált modellel, létrehozhat egy végpontot és egy üzembe helyezést. A következő szakaszban röviden bemutatunk néhány fontos részletet ezekről a témakörökről.

Végpontok és üzemelő példányok

Miután betanított egy gépi tanulási modellt, üzembe kell helyeznie, hogy mások is használhassák a következtetéshez. Ebből a célból az Azure Machine Learning lehetővé teszi végpontok létrehozását és üzembe helyezésük hozzáadását.

A végpont ebben a kontextusban egy HTTPS-elérési út, amely felületet biztosít az ügyfeleknek, hogy kéréseket (bemeneti adatokat) küldjenek egy betanított modellnek, és megkapják a modellből származó következtetési (pontozási) eredményeket. A végpontok a következőket biztosítják:

  • Hitelesítés "kulcs vagy jogkivonat" alapú hitelesítéssel
  • TLS(SSL) leállítása
  • Stabil pontozási URI (endpoint-name.region.inference.ml.azure.com)

Az üzembe helyezés a tényleges következtetést okozó modell üzemeltetéséhez szükséges erőforrások készlete.

Egyetlen végpont több üzembe helyezést is tartalmazhat. A végpontok és az üzemelő példányok független Azure Resource Manager-erőforrások, amelyek megjelennek az Azure Portalon.

Az Azure Machine Learning lehetővé teszi online végpontok implementálását az ügyféladatok valós idejű következtetéséhez, valamint kötegelt végpontokat a nagy mennyiségű adatra való következtetéshez egy adott időszakban.

Ebben az oktatóanyagban végigvezeti a felügyelt online végpont implementálásának lépésein. A felügyelt online végpontok skálázható, teljes körűen felügyelt módon működnek együtt nagy teljesítményű CPU- és GPU-gépeket az Azure-ban, így nem kell a mögöttes üzembehelyezési infrastruktúra beállításával és felügyeletével foglalkoznia.

Online végpont létrehozása

Most, hogy rendelkezik egy regisztrált modellel, ideje létrehoznia az online végpontot. A végpont nevének egyedinek kell lennie a teljes Azure-régióban. Ebben az oktatóanyagban egy univerzálisan egyedi azonosító UUIDhasználatával hoz létre egyedi nevet. A végpontok elnevezési szabályaival kapcsolatos további információkért tekintse meg a végpontkorlátokat.

import uuid

# Create a unique name for the endpoint
online_endpoint_name = "credit-endpoint-" + str(uuid.uuid4())[:8]

Először határozza meg a végpontot az ManagedOnlineEndpoint osztály használatával.

Tipp.

  • auth_mode : Kulcsalapú hitelesítéshez használható key . Azure Machine Learning-jogkivonat-alapú hitelesítéshez használható aml_token . Az A key nem jár le, de aml_token lejár. 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.

  • Tetszés szerint leírást és címkéket is hozzáadhat a végponthoz.

from azure.ai.ml.entities import ManagedOnlineEndpoint

# define an online endpoint
endpoint = ManagedOnlineEndpoint(
    name=online_endpoint_name,
    description="this is an online endpoint",
    auth_mode="key",
    tags={
        "training_dataset": "credit_defaults",
    },
)

MLClient A korábban létrehozott parancs használatával hozza létre a végpontot a munkaterületen. 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.

Feljegyzés

A végpontlétrehozás várhatóan körülbelül 2 percet vesz igénybe.

# create the online endpoint
# expect the endpoint to take approximately 2 minutes.

endpoint = ml_client.online_endpoints.begin_create_or_update(endpoint).result()

A végpont létrehozása után az alábbiak szerint kérdezheti le:

endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)

print(
    f'Endpoint "{endpoint.name}" with provisioning state "{endpoint.provisioning_state}" is retrieved'
)

Az online üzemelő példányok ismertetése

Az üzembe helyezés fő szempontjai a következők:

  • name - Az üzembe helyezés neve.
  • endpoint_name – Az üzembe helyezést tartalmazó végpont neve.
  • model - Az üzembe helyezéshez használni kívánt modell. Ez az érték lehet a munkaterület egy meglévő verziójú modelljére való hivatkozás, vagy egy beágyazott modell specifikációja.
  • environment - Az üzembe helyezéshez (vagy a modell futtatásához) használandó környezet. Ez az érték hivatkozhat a munkaterület meglévő verziójú környezetére, vagy egy beágyazott környezeti specifikációra. A környezet lehet Egy Docker-rendszerkép Conda-függőségekkel vagy Docker-fájlokkal.
  • code_configuration - a forráskód és a pontozási szkript konfigurációja.
    • path– A modell pontozásához a forráskód könyvtárának elérési útja.
    • scoring_script – A forráskód könyvtárában található pontozófájl relatív elérési útja. Ez a szkript egy adott bemeneti kérésen hajtja végre a modellt. Egy pontozási szkriptre példa: A pontozási szkript ismertetése az "ML-modell üzembe helyezése online végponttal" című cikkben.
  • instance_type – Az üzembe helyezéshez használandó virtuálisgép-méret. A támogatott méretek listáját a Felügyelt online végpontok termékváltozata című témakörben találja.
  • instance_count – Az üzembe helyezéshez használandó példányok száma.

Üzembe helyezés MLflow-modell használatával

Az Azure Machine Learning támogatja az MLflow használatával létrehozott és naplózott modellek kód nélküli üzembe helyezését. Ez azt jelenti, hogy a modell üzembe helyezése során nem kell pontozószkriptet vagy környezetet megadnia, mivel az MLflow-modellek betanításakor a rendszer automatikusan létrehozza a pontozási szkriptet és a környezetet. Ha azonban egyéni modellt használ, az üzembe helyezés során meg kell adnia a környezetet és a pontozási szkriptet.

Fontos

Ha általában pontozószkriptekkel és egyéni környezetekkel telepít modelleket, és ugyanazt a funkciót szeretné elérni az MLflow-modellek használatával, javasoljuk, hogy olvassa el az MLflow-modellek üzembe helyezésére vonatkozó irányelveket.

A modell üzembe helyezése a végponton

Először hozzon létre egyetlen üzembe helyezést, amely a bejövő forgalom 100%-át kezeli. Válasszon egy tetszőleges színnevet (kék) az üzembe helyezéshez. A végpont üzembe helyezésének létrehozásához használja az osztályt ManagedOnlineDeployment .

Feljegyzés

Nincs szükség környezet vagy pontozási szkript megadására, mivel az üzembe helyezendő modell egy MLflow-modell.

from azure.ai.ml.entities import ManagedOnlineDeployment

# Choose the latest version of the registered model for deployment
model = ml_client.models.get(name=registered_model_name, version=latest_model_version)

# define an online deployment
# if you run into an out of quota error, change the instance_type to a comparable VM that is available.\
# Learn more on https://azure.microsoft.com/en-us/pricing/details/machine-learning/.
blue_deployment = ManagedOnlineDeployment(
    name="blue",
    endpoint_name=online_endpoint_name,
    model=model,
    instance_type="Standard_DS3_v2",
    instance_count=1,
)

MLClient A korábban létrehozottak használatával most hozza létre az üzembe helyezé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.

# create the online deployment
blue_deployment = ml_client.online_deployments.begin_create_or_update(
    blue_deployment
).result()

# blue deployment takes 100% traffic
# expect the deployment to take approximately 8 to 10 minutes.
endpoint.traffic = {"blue": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint).result()

A végpont állapotának ellenőrzése

A végpont állapotának ellenőrzéséhez ellenőrizze, hogy a modell hiba nélkül lett-e üzembe helyezve:

# return an object that contains metadata for the endpoint
endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)

# print a selection of the endpoint's metadata
print(
    f"Name: {endpoint.name}\nStatus: {endpoint.provisioning_state}\nDescription: {endpoint.description}"
)
# existing traffic details
print(endpoint.traffic)

# Get the scoring URI
print(endpoint.scoring_uri)

A végpont tesztelése mintaadatokkal

Most, hogy a modell üzembe lett helyezve a végponton, következtetést futtathat vele. Először hozzon létre egy mintakérelemfájlt, amely a pontozási szkriptben található futtatási módszerben várt tervet követi.

import os

# Create a directory to store the sample request file.
deploy_dir = "./deploy"
os.makedirs(deploy_dir, exist_ok=True)

Most hozza létre a fájlt az üzembe helyezési könyvtárban. Az alábbi kódcella az IPython magic használatával írja be a fájlt az imént létrehozott könyvtárba.

%%writefile {deploy_dir}/sample-request.json
{
  "input_data": {
    "columns": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],
    "index": [0, 1],
    "data": [
            [20000,2,2,1,24,2,2,-1,-1,-2,-2,3913,3102,689,0,0,0,0,689,0,0,0,0],
            [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10, 9, 8]
            ]
                }
}

MLClient A korábban létrehozottak használatával lekérhet egy leírót a végponthoz. A végpontot a invoke következő paraméterekkel rendelkező paranccsal hívhatja meg:

  • endpoint_name - A végpont neve
  • request_file - Kérelemadatokkal rendelkező fájl
  • deployment_name – A végponton tesztelni kívánt adott üzembe helyezés neve

Tesztelje a kék üzembe helyezést a mintaadatokkal.

# test the blue deployment with the sample data
ml_client.online_endpoints.invoke(
    endpoint_name=online_endpoint_name,
    deployment_name="blue",
    request_file="./deploy/sample-request.json",
)

Az üzembe helyezés naplóinak lekérése

Ellenőrizze a naplókat, hogy sikerült-e meghívni a végpontot/üzembe helyezést. Ha hibákba ütközik, tekintse meg az online végpontok üzembe helyezésének hibaelhárítását.

logs = ml_client.online_deployments.get_logs(
    name="blue", endpoint_name=online_endpoint_name, lines=50
)
print(logs)

Második üzembe helyezés létrehozása

A modell üzembe helyezése második, úgynevezett greenüzembe helyezésként. A gyakorlatban több üzembe helyezést is létrehozhat, és összehasonlíthatja azok teljesítményét. Ezek az üzemelő példányok használhatják ugyanannak a modellnek egy másik verzióját, egy másik modellt vagy egy hatékonyabb számítási példányt.

Ebben a példában ugyanazt a modellverziót helyezi üzembe egy hatékonyabb számítási példány használatával, amely esetleg javíthatja a teljesítményt.

# pick the model to deploy. Here you use the latest version of the registered model
model = ml_client.models.get(name=registered_model_name, version=latest_model_version)

# define an online deployment using a more powerful instance type
# if you run into an out of quota error, change the instance_type to a comparable VM that is available.\
# Learn more on https://azure.microsoft.com/en-us/pricing/details/machine-learning/.
green_deployment = ManagedOnlineDeployment(
    name="green",
    endpoint_name=online_endpoint_name,
    model=model,
    instance_type="Standard_F4s_v2",
    instance_count=1,
)

# create the online deployment
# expect the deployment to take approximately 8 to 10 minutes
green_deployment = ml_client.online_deployments.begin_create_or_update(
    green_deployment
).result()

Az üzembe helyezés méretezése a nagyobb forgalom kezeléséhez

MLClient A korábban létrehozottak használatával lekérheti az green üzembe helyezéshez szükséges leírót. Ezután skálázhatja a skálázást a instance_countskálázás növelésével vagy csökkentésével.

Az alábbi kódban manuálisan növelheti a virtuálisgép-példányt. Az online végpontok automatikus méretezése azonban lehetséges. 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.

# update definition of the deployment
green_deployment.instance_count = 2

# update the deployment
# expect the deployment to take approximately 8 to 10 minutes
ml_client.online_deployments.begin_create_or_update(green_deployment).result()

Forgalomfoglalás frissítése az üzemelő példányokhoz

Az éles forgalom felosztható az üzemelő példányok között. Érdemes lehet először mintaadatokkal tesztelni az green üzembe helyezést, ahogyan az blue üzembe helyezéshez is tette. Miután tesztelte a zöld üzembe helyezést, a forgalom kis százalékát lefoglalhatja.

endpoint.traffic = {"blue": 80, "green": 20}
ml_client.online_endpoints.begin_create_or_update(endpoint).result()

A forgalomlefoglalás tesztelése a végpont többszöri meghívásával:

# You can invoke the endpoint several times
for i in range(30):
    ml_client.online_endpoints.invoke(
        endpoint_name=online_endpoint_name,
        request_file="./deploy/sample-request.json",
    )

Az üzembe helyezés naplóinak megjelenítése annak green ellenőrzéséhez, hogy voltak-e bejövő kérések, és a modell pontszáma sikeresen megtörtént.

logs = ml_client.online_deployments.get_logs(
    name="green", endpoint_name=online_endpoint_name, lines=50
)
print(logs)

Metrikák megtekintése az Azure Monitor használatával

Az online végpontok és üzemelő példányok különböző metrikáit (kérelemszámok, kérelmek késése, hálózati bájtok, CPU/GPU/Lemez/Memória kihasználtsága stb.) a végpont Részletek lapján található hivatkozások követésével tekintheti meg. Ezen hivatkozások bármelyikét követve a végpont vagy az üzembe helyezés pontos metrikáinak lapjára léphet az Azure Portalon.

Képernyőkép a végpont részleteinek oldalán található hivatkozásokról az online végpont és az üzembe helyezési metrikák megtekintéséhez.

Ha megnyitja az online végpont metrikáit, beállíthatja a lapot, hogy az olyan metrikákat láthassa, mint például az átlagos kérelemkéséssés az alábbi ábrán látható módon.

Képernyőkép az online végpont metrikáiról az Azure Portalon.

Az online végpontmetrikák megtekintéséről további információt az online végpontok monitorozása című témakörben talál.

Az összes forgalom elküldése az új üzembe helyezésre

Miután teljes mértékben elégedett az green üzembe helyezéssel, váltson rá az összes forgalomra.

endpoint.traffic = {"blue": 0, "green": 100}
ml_client.begin_create_or_update(endpoint).result()

A régi üzembe helyezés törlése

Távolítsa el a régi (kék) üzembe helyezést:

ml_client.online_deployments.begin_delete(
    name="blue", endpoint_name=online_endpoint_name
).result()

Az erőforrások eltávolítása

Ha az oktatóanyag elvégzése után nem használja a végpontot és az üzembe helyezést, törölje őket.

Feljegyzés

A teljes törlés várhatóan körülbelül 20 percet vesz igénybe.

ml_client.online_endpoints.begin_delete(name=online_endpoint_name).result()

Minden törlése

Ezekkel a lépésekkel törölheti az Azure Machine Learning-munkaterületet és az összes számítási erőforrást.

Fontos

A létrehozott erőforrások előfeltételként használhatók más Azure Machine Learning-oktatóanyagokhoz és útmutatókhoz.

Ha nem tervezi használni a létrehozott erőforrások egyikét sem, törölje őket, hogy ne járjon költséggel:

  1. Az Azure Portal keresőmezőjében adja meg az erőforráscsoportokat , és válassza ki az eredmények közül.

  2. A listából válassza ki a létrehozott erőforráscsoportot.

  3. Az Áttekintés lapon válassza az Erőforráscsoport törlése lehetőséget.

    Képernyőkép egy erőforráscsoport azure portalon való törlésére vonatkozó kijelölésekről.

  4. Adja meg az erőforráscsoport nevét. Ezután válassza a Törlés elemet.

Következő lépés