Ebből a cikkből megtudhatja, hogyan helyezhet üzembe egy gépi tanulási modell új verzióját éles környezetben anélkül, hogy az fennakadást okoz. Egy kék-zöld üzembehelyezési stratégiát (más néven biztonságos bevezetési stratégiát) fog használni a webszolgáltatás új verziójának éles környezetben való bevezetéséhez. Ez a stratégia lehetővé teszi, hogy a webszolgáltatás új verzióját a felhasználók vagy kérések egy kis részhalmazára gördíthesse, mielőtt teljesen üzembe tenné.
Ez a cikk feltételezi, hogy online végpontokat, vagyis online (valós idejű) következtetéshez használt végpontokat használ. Kétféle online végpontot különböztetünk meg: felügyelt online végpontokat és Kubernetes online végpontokat. A végpontokról és a felügyelt online végpontok és az online Kubernetes-végpontok közötti különbségekről további információt az Azure Machine Tanulás végpontjai című témakörben talál.
A cikk fő példája felügyelt online végpontokat használ az üzembe helyezéshez. Ha inkább a Kubernetes-végpontokat szeretné használni, tekintse meg a dokumentum azon megjegyzéseit, amelyek a felügyelt online végponttal kapcsolatos vitafórumba vannak ágyazva.
Ebben a cikkben a következőt fogja elsajátítani:
Online végpont definiálása "kék" nevű üzembe helyezéssel a modell 1. verziójának kiszolgálásához
A kék üzembe helyezés skálázása, hogy több kérést kezeljen
Telepítse a modell 2. verzióját (az úgynevezett "zöld" üzemelő példányt) a végpontra, de az üzembe helyezést élő forgalom nélkül küldje el
A zöld üzembe helyezés tesztelése elszigetelten
Az élő forgalom százalékos arányának tükrözése a zöld környezetbe annak ellenőrzéséhez
Az élő forgalom kis százalékának elküldése a zöld üzembe helyezésre
Az összes élő forgalom elküldése a zöld üzembe helyezésre
A most még nem használt 1- ös verziós kék üzembe helyezés törlése
A jelen cikkben szereplő CLI-példák feltételezik, hogy a Bash (vagy kompatibilis) rendszerhéjat használja. Például linuxos rendszerből vagy Linuxos Windows-alrendszer.
Az Azure-beli szerepköralapú hozzáférés-vezérlések (Azure RBAC) az Azure Machine Tanulás műveleteihez való hozzáférést biztosítják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókjához hozzá kell rendelni az Azure Machine Tanulás munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkört, amely lehetővé tesziMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/*. További információ: Azure Machine-Tanulás-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 egyszerűbb hibakeresést végezni.
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:
Egy Azure Machine Learning-munkaterület. Ha nincs ilyenje, a gyorsútmutató lépéseit követve hozzon létre egyet a munkaterület erőforrásainak létrehozása című cikkben.
A Python SDK v2 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:
Az Azure-beli szerepköralapú hozzáférés-vezérlések (Azure RBAC) az Azure Machine Tanulás műveleteihez való hozzáférést biztosítják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókjához hozzá kell rendelni az Azure Machine Tanulás munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkört, amely lehetővé tesziMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/*. További információ: Azure Machine-Tanulás-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 egyszerűbb hibakeresést végezni.
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:
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 Tanulás ingyenes vagy fizetős verzióját.
Egy Azure Machine Tanulás munkaterületet és egy számítási példányt. Ha nem rendelkezik ezekkel, a gyorsútmutató lépéseit követve hozza létre a munkaterület erőforrásait ismertető cikket.
Az Azure-beli szerepköralapú hozzáférés-vezérlések (Azure RBAC) az Azure Machine Tanulás műveleteihez való hozzáférést biztosítják. A cikkben ismertetett lépések végrehajtásához a felhasználói fiókjához hozzá kell rendelni az Azure Machine Tanulás munkaterület tulajdonosi vagy közreműködői szerepkörét, vagy egy egyéni szerepkört, amely lehetővé tesziMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/*. További információ: Azure Machine-Tanulás-munkaterülethez való hozzáférés kezelése.
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>
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Tipp.
Csak a legújabb véglegesítés klónozására használható --depth 1 az adattárban. Ez csökkenti a művelet befejezésének idejét.
Az oktatóanyagban szereplő parancsok a deploy-safe-rollout-online-endpoints.sh könyvtár fájljában cli találhatók, a YAML konfigurációs fájljai pedig az endpoints/online/managed/sample/ alkönyvtárban találhatók.
Feljegyzés
Az online Kubernetes-végpontok YAML-konfigurációs fájljai az endpoints/online/kubernetes/ alkönyvtárban 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 a példák adattárát (azureml-examples). Ezután lépjen a azureml-examples/sdk/python/endpoints/online/managed könyvtárba:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Tipp.
Csak a legújabb véglegesítés klónozására használható --depth 1 az adattárban. Ez csökkenti a művelet befejezésének idejét.
A cikkben szereplő információk az online-endpoints-safe-rollout.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 Tanulás-munkaterületre
A munkaterület az Azure Machine Tanulás legfelső szintű erőforrása, amely központosított helyet biztosít az Azure Machine Tanulás használatakor létrehozott összes összetevő használatához. Ebben a szakaszban ahhoz a munkaterülethez csatlakozunk, ahol üzembe helyezési feladatokat fog végrehajtani. A folytatáshoz nyissa meg a jegyzetfüzetet online-endpoints-safe-rollout.ipynb .
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égpontját használja, importálja az és KubernetesOnlineDeployment az osztályt KubernetesOnlineEndpoint a azure.ai.ml.entities tárból.
Konfigurálja a munkaterület részleteit, és szerezze be a munkaterülethez a leírót:
A munkaterülethez való csatlakozáshoz azonosító paraméterekre van szükség – egy előfizetésre, egy erőforráscsoportra és a munkaterület nevére. Ezeket a MLClient részleteket a forrásból azure.ai.ml fogjuk lekérni a szükséges Azure Machine Tanulás munkaterületre. Ez a példa az alapértelmezett Azure-hitelesítést használja.
# enter details of your AML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_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 a példák adattárát (azureml-examples), majd váltson a 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
Tipp.
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éhez szükséges idő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, letöltheti a helyi gépére.
Nyissa meg a <> lap Kód gombját, majd válassza a Zip letöltése lehetőséget a Helyi lapon.
Keresse meg az első modell model-1modellmappájának /cli/endpoints/online/model-1/model és pontozási szkriptjének /cli/endpoints/online/model-1/onlinescoring/score.py helyét.
Keresse meg a modellmappát /cli/endpoints/online/model-2/model és a pontozási szkriptet /cli/endpoints/online/model-2/onlinescoring/score.py egy második modellhez model-2.
A végpont és az üzembe helyezés meghatározása
Az online végpontok online (valós idejű) következtetéshez használatosak. Az online végpontok olyan központi telepítéseket tartalmaznak, amelyek készen állnak arra, hogy adatokat fogadjanak az ügyfelektől, és valós időben küldjenek vissza válaszokat.
Végpont definiálása
Az alábbi táblázat felsorolja a végpontok definiálásakor megadható kulcsattribútumokat.
Attribútum
Ismertetés
Név
Szükséges. A végpont neve. Egyedinek kell lennie az Azure-régióban. Az elnevezési szabályokkal kapcsolatos további információkért tekintse meg a végpontkorlátokat.
Hitelesítési módszer
A végpont hitelesítési módszere. Válasszon a kulcsalapú hitelesítés key és az Azure Machine Tanulás tokenalapú hitelesítés aml_tokenközül. A kulcsok nem járnak le, de a jogkivonatok lejárnak. A hitelesítéssel kapcsolatos további információkért lásd : Hitelesítés online végponton.
Leírás
A végpont leírása.
Címkék
A végpont címkéinek szótára.
Adatforgalom
A forgalom központi telepítések közötti átirányításának szabályai. A forgalmat kulcs-érték párok szótáraként jelöli, ahol a kulcs az üzembe helyezés nevét, az érték pedig az üzembe helyezés felé történő forgalom százalékos arányát jelöli. A forgalmat csak akkor állíthatja be, ha a végponton lévő központi telepítéseket létrehozták. Az online végpont forgalmát az üzembe helyezések létrehozása után is frissítheti. A tükrözött forgalom használatáról további információt az élő forgalom kis százalékának lefoglalása az új üzembe helyezéshez című témakörben talál.
Az üzembe helyezés a tényleges következtetést okozó modell üzemeltetéséhez szükséges erőforrások készlete. Az alábbi táblázat az üzembe helyezés definiálásakor megadható főbb attribútumokat ismerteti.
Attribútum
Ismertetés
Név
Szükséges. Az üzembe helyezés neve.
Végpont neve
Szükséges. Az üzembe helyezés létrehozásához szükséges végpont neve.
Modell
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. A példában van egy scikit-learn modellünk, amely regressziót végez.
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
Python-kód, amely egy adott bemeneti kérésen hajtja végre a modellt. Ez az érték lehet a forráskód könyvtárában található pontozófájl relatív elérési útja. A pontozó szkript fogadja az üzembe helyezett webszolgáltatásnak küldött adatokat, és átadja azokat a modellnek. A szkript ezután végrehajtja a modellt, és visszaadja válaszát az ügyfélnek. A pontozási szkript a modellre jellemző, és ismernie kell azokat az adatokat, amelyeket a modell bemenetként vár el, és kimenetként ad vissza. Ebben a példában egy score.py fájl található. Ennek a Python-kódnak egy függvénysel init() és egy függvénnyel kell rendelkeznie run() . A init() függvény a modell létrehozása vagy frissítése után lesz meghívva (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 meghívásánál meghívja, hogy elvégezhesse a tényleges pontozást és előrejelzést.
Környezet
Szükséges. A modellt és a kódot üzemeltető 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, Egy Dockerfile vagy egy regisztrált környezet.
Példány típusa
Szükséges. 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.
Példányok száma
Szükséges. 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 be az értéket legalább 3. A frissítések végrehajtásához további 20%-ot foglalunk le. További információkért tekintse meg az online végpontok korlátait.
Először állítsa be a végpont nevét, majd konfigurálja. Ebben a cikkben a végpontok/online/felügyelt/minta/endpoint.yml fájl használatával konfigurálja a végpontot. Az alábbi kódrészlet a fájl tartalmát jeleníti meg:
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 online végpontokhoz kapcsolódó korlátokról az online végpontokra vonatkozó korlátokat ismertető cikkben 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-Tanulás jogkivonatalapú hitelesítéshez használhatóaml_token. A legújabb jogkivonat lekéréséhez használja a az ml online-endpoint get-credentials parancsot.
Online végpont létrehozása:
A végpont nevének beállítása:
Unix esetén futtassa ezt a parancsot (cserélje le YOUR_ENDPOINT_NAME egyedi névre):
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Fontos
A végpontneveknek egyedinek kell lenniük egy Azure-régióban. Az Azure-régióban westus2 például csak egy végpont lehet a névvel my-endpoint.
Hozza létre a végpontot a felhőben:
Futtassa a következő kódot a végpont konfigurálásához a endpoint.yml fájl használatával:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
A "kék" üzembe helyezés létrehozása
Ebben a cikkben a végpontok/online/felügyelt/minta/blue-deployment.yml fájl használatával konfigurálja az üzembe helyezés legfontosabb szempontjait. Az alábbi kódrészlet a fájl tartalmát jeleníti meg:
A végponthoz elnevezett blue központi telepítés létrehozásához futtassa a következő parancsot a blue-deployment.yml fájl konfigurálásához
az ml online-deployment create --name blue --endpoint-name $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Fontos
A --all-traffic jelölő a az ml online-deployment create végpont forgalmának 100%-át lefoglalja az újonnan létrehozott kék üzembe helyezéshez.
A fájlban blue-deployment.yaml meg kell adnia a path beágyazott fájlt (ahonnan fájlokat tölthet fel). 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 model: azureml:my-model:1 vagy environment: azureml:my-env:1a .
A regisztrációhoz kinyerheti a YAML-definíciókat model és environment külön YAML-fájlokba, és használhatja a parancsokat az ml model create és az ml environment createa . Ha többet szeretne megtudni ezekről a parancsokról, futtassa és az ml environment create -h.az ml model create -h
Felügyelt online végpont létrehozásához használja az osztályt ManagedOnlineEndpoint . Ez az osztály lehetővé teszi, hogy a felhasználók konfigurálják a végpont legfontosabb szempontjait.
A végpont konfigurálása:
# Creating a unique endpoint name with current datetime to avoid conflicts
import random
online_endpoint_name = "endpt-moe-" + str(random.randint(0, 10000))
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
tags={"foo": "bar"},
)
Feljegyzés
Kubernetes online végpont létrehozásához használja az osztályt KubernetesOnlineEndpoint .
Ha központi telepítést szeretne létrehozni a felügyelt online végponthoz, használja az osztályt ManagedOnlineDeployment . Ez az osztály lehetővé teszi, hogy a felhasználók konfigurálják az üzembe helyezés legfontosabb szempontjait.
Az alábbi táblázat a következő attribútumokat deploymentismerteti:
Ebben a példában a path beágyazott fájlokat adhatja meg (ahonnan fájlokat tölthet fel). Az SDK 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 kódokban.
Amikor felügyelt online végpontot hoz létre az Azure Machine Tanulás Studióban, meg kell határoznia a végpont kezdeti üzembe helyezését. Mielőtt meghatározhat egy üzembe helyezést, regisztrált modellel kell rendelkeznie a munkaterületen. Először regisztráljuk az üzembe helyezéshez használni kívánt modellt.
Modell regisztrálása
A modellregisztráció egy logikai entitás a munkaterületen. Ez az entitás 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álnia kell a modellt és a környezetet. A végpont és az üzembe helyezés ebben a cikkben való létrehozásakor feltételezzük, hogy regisztrálta a modellt tartalmazó modellmappát .
A példamodell regisztrálásához kövesse az alábbi lépéseket:
A bal oldali navigációs sávon 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.
A mappafeltöltés befejezése után válassza a Tovább gombot.
Adjon meg egy rövid nevet a modellnek. A cikkben szereplő lépések feltételezik, hogy a modell neve model-1.
Válassza a Tovább lehetőséget, majd a Regisztráció lehetőséget a regisztráció befejezéséhez.
Ismételje meg az előző lépéseket, hogy regisztráljon \azureml-examples\cli\endpoints\online\model-2\model egy model-2 mappát a korábban klónozott vagy letöltött adattár helyi másolatában.
A regisztrált modellek használatával kapcsolatos további információkért lásd: Regisztráció és modellek használata.
Felügyelt online végpont és "kék" üzembe helyezés létrehozása
Az Azure Machine Tanulás Studió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 regisztrálása szakaszban korábban regisztrált modell model-1 üzembe helyezéséhez:
A bal oldali navigációs sávon válassza a Modellek lapot.
A neve melletti kör ellenőrzésével jelölje ki a modell nevét model-1 .
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 végpontnevet.
Az alapértelmezett beállítások megtartása: A számítási típus és a hitelesítési típus kulcsalapú hitelesítésének kezelése.
Válassza a Tovább lehetőséget, amíg el nem ér az "Üzembe helyezés" oldalra. Itt hajtsa végre a következő feladatokat:
Nevezze el az üzembe helyezést "kéknek".
Jelölje be az Alkalmazás engedélyezése Elemzések diagnosztika és adatgyűjtés jelölőnégyzetet, hogy a végpont tevékenységeinek gráfjait később is megtekinthesse a studióban.
A Tovább gombra kattintva lépjen a "Környezet" lapra. Itt hajtsa végre a következő lépéseket:
A "Pontozási fájl és függőségek kiválasztása" mezőben tallózással jelölje ki a \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py korábban klónozott vagy letöltött adattárban lévő fájlt.
Kezdjen el gépelni sklearn a környezetek listája feletti keresőmezőbe, és válassza ki az AzureML-sklearn-0.24 válogatott környezetet.
A Tovább gombra kattintva lépjen a "Számítás" lapra. Itt tartsa meg a virtuális gép alapértelmezett "Standard_DS3_v2" beállítását, és módosítsa a példányok számát 1-re.
Válassza a Tovább lehetőséget a kék üzembe helyezés alapértelmezett forgalomfoglalásának (100%) elfogadásához.
Tekintse át az üzembehelyezési beállításokat, és válassza a Létrehozás gombot.
Másik lehetőségként létrehozhat egy felügyelt online végpontot a stúdió Végpontok lapján.
A bal oldali navigációs sávon válassza a Végpontok lapot.
Válassza a +Létrehozás lehetőséget.
Ez a művelet megnyit egy ablakot 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 az előző 5–11. lépésben leírtak szerint, és fogadja el az alapértelmezett értékeket, amíg a rendszer nem kéri az üzembe helyezés létrehozását .
Meglévő üzembe helyezés megerősítése
A meglévő üzembe helyezés megerősítésének egyik módja, ha meghívja a végpontot, hogy egy adott bemeneti kéréshez pontszámot adjon a modellnek. Amikor a parancssori felületen vagy a Python SDK-on keresztül hívja meg a végpontot, megadhatja a bejövő forgalmat fogadó üzembe helyezés nevét.
Feljegyzés
A parancssori felülettel vagy a Python SDK-val ellentétben az Azure Machine Tanulás Studio megköveteli, hogy egy üzembe helyezést adjon meg egy végpont meghívásakor.
Végpont meghívása üzembehelyezési névvel
Ha a végpontot a forgalmat fogadó központi telepítés nevével hívja meg, az Azure Machine Tanulás a végpont forgalmát közvetlenül a megadott üzembe helyezéshez irányítja, és visszaadja a kimenetét. Használhatja a --deployment-name CLI v2deployment_name vagy az SDK v2 beállítását az üzembe helyezés megadásához.
Végpont meghívása üzembe helyezés megadása nélkül
Ha a végpontot a forgalmat fogadó üzembe helyezés megadása nélkül hívja meg, az Azure Machine Tanulás a végpont bejövő forgalmát a végponton lévő üzembe helyezés(ek) felé irányítja a forgalomvezérlési beállítások alapján.
A forgalomszabályozási beállítások a bejövő forgalom meghatározott százalékos arányát rendelik hozzá a végpont minden egyes üzemelő példányához. Ha például a forgalmi szabályok azt határozzák meg, hogy a végpont egy adott üzemelő példánya az idő 40%-ában fogadja a bejövő forgalmat, az Azure Machine Tanulás a végpont forgalmának 40%-át átirányítja az adott üzembe helyezésre.
MLClient A korábban létrehozottak használatával lekérünk egy leírót a végponthoz. A végpont a következő paraméterekkel hívható meg a invoke paranccsal:
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
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Felügyelt online végpontok megtekintése
Az összes felügyelt online végpontot megtekintheti a Végpontok lapon. Lépjen a végpont Részletek lapjára, és keresse meg a kritikus információkat, például a végpont URI-ját, állapotát, tesztelési eszközeit, tevékenységfigyelőit, üzembehelyezési naplóit és mintahasználati kódját:
A bal oldali navigációs sávon válassza a Végpontok lehetőséget. Itt láthatja a munkaterület összes végpontjának listáját.
(Nem kötelező) Hozzon létre egy szűrőt a számítástí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 végpont tesztelése mintaadatokkal
A felügyelt online üzemelő példány teszteléséhez használja a végpont részletes lapjának Teszt lapját. Adja meg a mintabemenetet, és tekintse meg az eredményeket.
Válassza a Teszt fület a végpont részletes lapján. A kék üzembe helyezés már ki van jelölve a legördülő menüben.
Az üzembe helyezésben leírt üzembe helyezésben és egy gépi tanulási modell online végponttal való pontozásában a instance_count telepítési yaml-fájl értékét 1 kell beállítania. A következő paranccsal skálázhatja fel a skálázást update :
az ml online-deployment update --name blue --endpoint-name $ENDPOINT_NAME --set instance_count=2
Feljegyzés
Figyelje meg, hogy a fenti parancsban az üzembehelyezési konfiguráció felülbírálásához használjuk --set . Másik lehetőségként frissítheti a yaml-fájlt, és bemenetként továbbíthatja azt a update parancsnak a --file bemenet használatával.
MLClient A korábban létrehozottak használatával lekérjük az üzembe helyezéshez szükséges leírót. Az üzembe helyezés méretezhető a instance_count.
# Get the details for online endpoint
endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)
# existing traffic details
print(endpoint.traffic)
# Get the scoring URI
print(endpoint.scoring_uri)
A példányok számának módosításával az alábbi utasításokat követve skálázhatja felfelé vagy lefelé az üzembe helyezést:
A végpont részletei lapon. Keresse meg a kék üzembe helyezés kártyáját.
Válassza a szerkesztés ikont a kék üzembehelyezési kártya fejlécében.
Módosítsa a példányok számát 2-re.
Válassza a Frissítés lehetőséget.
Új modell üzembe helyezése, de még nem küldhető forgalom
Hozzon létre egy új, a következő nevű üzembe helyezést green:
az ml online-deployment create --name green --endpoint-name $ENDPOINT_NAME -f endpoints/online/managed/sample/green-deployment.yml
Mivel nem osztottunk ki explicit módon forgalmat green, nincs hozzá hozzárendelt forgalom. Ezt a parancs használatával ellenőrizheti:
az ml online-endpoint show -n $ENDPOINT_NAME --query traffic
Az új üzembe helyezés tesztelése
Bár green a forgalom 0%-a van lefoglalva, közvetlenül a név megadásával --deployment hívhatja meg:
az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment-name green --request-file endpoints/online/model-2/sample-request.json
Ha REST-ügyfél használatával szeretné közvetlenül meghívni az üzembe helyezést anélkül, hogy áthaladna a forgalmi szabályokon, állítsa be a következő HTTP-fejlécet: azureml-model-deployment: <deployment-name>. Az alábbi kódrészlet curl közvetlenül meghívja az üzembe helyezést. A kódrészletnek Unix/WSL-környezetekben kell működnie:
# get the scoring uri
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
# use curl to invoke the endpoint
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --header "azureml-model-deployment: green" --data @endpoints/online/model-2/sample-request.json
Hozzon létre egy új üzembe helyezést a felügyelt online végponthoz, és nevezze el az üzembe helyezést green:
# use MLClient to create green deployment
ml_client.online_deployments.begin_create_or_update(green_deployment).result()
Feljegyzés
Ha egy Kubernetes online végponthoz hoz létre üzembe helyezést, használja az KubernetesOnlineDeployment osztályt, és adjon meg egy Kubernetes-példánytípust a Kubernetes-fürtben.
Az új üzembe helyezés tesztelése
Bár green a forgalom 0%-a van lefoglalva, továbbra is meghívhatja a végpontot és az üzembe helyezést a json-fájllal .
Hozzon létre egy új üzembe helyezést a felügyelt online végponthoz való hozzáadáshoz, és nevezze el az üzembe helyezést green.
A Végpont részletei lapon
Válassza a +Telepítés hozzáadása gombot a végpont "Részletek" lapján.
Válassza a Modell üzembe helyezése lehetőséget.
A Tovább gombra kattintva lépjen a "Modell" lapra, és válassza ki a model-2 modellt.
A Tovább gombra kattintva lépjen az "Üzembe helyezés" lapra, és hajtsa végre a következő feladatokat:
Nevezze el az üzembe helyezést "zöldnek".
Az Application Insights diagnosztikának és adatgyűjtésének engedélyezése.
A Tovább gombra kattintva lépjen a "Környezet" lapra. Itt hajtsa végre a következő lépéseket:
A "Pontozási fájl és függőségek kiválasztása" mezőben tallózással jelölje ki a \azureml-examples\cli\endpoints\online\model-2\onlinescoring\score.py korábban klónozott vagy letöltött adattárban lévő fájlt.
Kezdjen el gépelni sklearn a környezetek listája feletti keresőmezőbe, és válassza ki az AzureML-sklearn-0.24 válogatott környezetet.
A Tovább gombra kattintva lépjen a "Számítás" lapra. Itt tartsa meg a virtuális gép alapértelmezett "Standard_DS3_v2" beállítását, és módosítsa a példányok számát 1-re.
A Tovább gombra kattintva lépjen a "Forgalom" lapra. Itt tartsa meg az üzemelő példányok alapértelmezett forgalomfoglalását (100%-os forgalom "kékre" és 0%-os forgalom "zöld" értékre).
Válassza a Tovább lehetőséget az üzembehelyezési beállítások áttekintéséhez.
Válassza a Létrehozás lehetőséget az üzembe helyezés létrehozásához.
Másik lehetőségként a Modellek lapon is hozzáadhat egy üzembe helyezést:
A bal oldali navigációs sávon válassza a Modellek lapot.
Válasszon ki egy modellt a modell neve melletti kör ellenőrzésével.
Válassza a Valós idejű végpont üzembe helyezése>lehetőséget.
Válassza ki a meglévő felügyelt online végponton való üzembe helyezést.
A zöld üzembe helyezés létrehozásának befejezéséhez kövesse az előző 3–9. lépést.
Feljegyzés
Amikor új üzembe helyezést ad hozzá egy végponthoz, a "Forgalom" lapon módosíthatja az üzembe helyezések közötti forgalomegyensúlyt. Ezen a ponton azonban meg kell őriznie az alapértelmezett forgalomfoglalást az üzemelő példányok számára (100%-os forgalom "kékre" és 0%-os forgalom "zöld" értékre).
Az új üzembe helyezés tesztelése
Bár green a forgalom 0%-a van lefoglalva, továbbra is meghívhatja a végpontot és az üzembe helyezést. A felügyelt online üzemelő példány teszteléséhez használja a végpont részletes lapjának Teszt lapját. Adja meg a mintabemenetet, és tekintse meg az eredményeket.
Válassza a Teszt fület a végpont részletes lapján.
Válassza ki a zöld üzembe helyezést a legördülő menüből.
Az üzemelő példány tesztelése tükrözött forgalommal
Az üzembe helyezés tesztelése green után tükrözheti (vagy másolhatja) az élő forgalom egy százalékát. A forgalomtükrözés (más néven árnyékolás) nem módosítja az ügyfeleknek visszaadott eredményeket – a kérések továbbra is 100%-ban áramlanak az blue üzembe helyezésre. A rendszer a forgalom tükrözött százalékát másolja és küldi el az green üzembe helyezéshez, hogy metrikákat és naplózásokat gyűjtsön anélkül, hogy az hatással lenne az ügyfelekre. A tükrözés akkor hasznos, ha az ügyfelek befolyásolása nélkül szeretne ellenőrizni egy új üzembe helyezést. A tükrözéssel például ellenőrizheti, hogy a késés elfogadható korlátokon belül van-e, vagy ellenőrizheti, hogy nincsenek-e HTTP-hibák. Az új üzembe helyezés forgalomtükrözéssel/árnyékolással történő tesztelését árnyéktesztelésnek is nevezik. A tükrözött forgalmat fogadó üzemelő példányt (ebben az esetben az green üzembe helyezést) árnyéktelepítésnek is nevezhetjük.
A tükrözés a következő korlátozásokkal rendelkezik:
A tükrözés a PARANCSSOR (v2) (2.4.0-s vagy újabb verzió) és a Python SDK (v2) (1.0.0-s vagy újabb verzió) esetében támogatott. Ha a parancssori felület/SDK egy régebbi verzióját használja egy végpont frissítéséhez, a tükrözött forgalom beállítása elveszik.
A tükrözés jelenleg nem támogatott a Kubernetes online végpontjai esetében.
A forgalom csak egy végponton belüli üzembe helyezésre tükrözhető.
A tükrözhető forgalom maximális aránya 50%. Ez a korlát csökkenti a végpont sávszélesség-kvótájára gyakorolt hatást (alapértelmezett 5 MBPS) – a végpont sávszélessége szabályozva lesz, ha túllépi a lefoglalt kvótát. A sávszélesség-szabályozás monitorozásáról további információt a felügyelt online végpontok monitorozása című témakörben talál.
Figyelje meg a következő viselkedéseket is:
Az üzembe helyezés konfigurálható úgy, hogy csak élő vagy tükrözött forgalmat fogadjon, nem mindkettőt.
Végpont meghívásakor megadhatja bármelyik központi telepítés nevét – akár árnyéktelepítést is –, hogy visszaadja az előrejelzést.
Amikor meghív egy, a bejövő forgalmat fogadó üzembe helyezés nevével rendelkező végpontot, az Azure Machine Tanulás nem fogja tükrözni a forgalmat az árnyéktelepítésre. Az Azure Machine Tanulás tükrözi az árnyéktelepítésre érkező forgalmat a végpontnak küldött forgalomból, ha nem ad meg üzembe helyezést.
Most állítsuk be a zöld üzembe helyezést úgy, hogy a tükrözött forgalom 10%-át kapja meg. Az ügyfelek továbbra is csak a kék üzembe helyezéstől kapnak előrejelzéseket.
Az alábbi parancs az üzembe helyezés felé green menő forgalom 10%-át tükrözi:
az ml online-endpoint update --name $ENDPOINT_NAME --mirror-traffic "green=10"
A tükrözött forgalmat úgy tesztelheti, hogy többször invoktálja a végpontot anélkül, hogy üzembe helyezést kellene megadnia a bejövő forgalom fogadásához:
for i in {1..20} ; do
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
done
Az üzembe helyezés naplóinak megtekintésével ellenőrizheti, hogy a forgalom adott százaléka az üzembe helyezésre green lett-e küldve:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
A tesztelés után nullára állíthatja a tükrözési forgalmat a tükrözés letiltásához:
az ml online-endpoint update --name $ENDPOINT_NAME --mirror-traffic "green=0"
Az alábbi parancs az üzembe helyezés felé green menő forgalom 10%-át tükrözi:
A tükrözött forgalmat úgy tesztelheti, hogy többször invoktálja a végpontot anélkül, hogy üzembe helyezést kellene megadnia a bejövő forgalom fogadásához:
# You can test mirror traffic by invoking the endpoint several times
for i in range(20):
ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
request_file="../model-1/sample-request.json",
)
Az üzembe helyezés naplóinak megtekintésével ellenőrizheti, hogy a forgalom adott százaléka az üzembe helyezésre green lett-e küldve:
Az üzembe helyezési forgalom green 10%-ának tükrözése:
A végpont részletei lapon válassza a Forgalom frissítése lehetőséget.
Húzza a gombot a tükrözött forgalom engedélyezéséhez.
Válassza ki a zöld üzembe helyezést az "Üzembe helyezés neve" legördülő menüben.
Tartsa meg az alapértelmezett 10%-os forgalomfoglalást.
Válassza a Frissítés lehetőséget.
A végpont részleteinek lapján mostantól az üzembe helyezés 10%-os tükrözött forgalomlefoglalása green látható.
A tükrözött forgalom teszteléséhez tekintse meg az Azure CLI- vagy Python-lapokat a végpont többszöri meghívásához. Győződjön meg arról, hogy a forgalom adott százaléka az green üzembe helyezéshez lett küldve, ha megtekinti az üzembe helyezés naplóit. Az üzembehelyezési naplókat a végpont Üzembehelyezési naplók lapján érheti el. Metrikák és naplók használatával is figyelheti a tükrözött forgalom teljesítményét. További információ: Online végpontok figyelése.
A tesztelés után letilthatja a tükrözést:
A végpont részletei lapon válassza a Forgalom frissítése lehetőséget.
A tükrözött forgalom letiltásához húzza ismét a tükrözött forgalom engedélyezése gombot.
Válassza a Frissítés lehetőséget.
Az élő forgalom kis százalékának lefoglalása az új üzembe helyezéshez
Miután tesztelte az üzembe helyezést green , foglaljon le egy kis hányadot a forgalomból:
A végpont részletei lapon válassza a Forgalom frissítése lehetőséget.
Állítsa be az üzembehelyezési forgalmat úgy, hogy 10%-ot a zöld üzembe helyezésre, 90%-ot pedig a kék üzembe helyezésre allokál.
Válassza a Frissítés lehetőséget.
Tipp.
A teljes forgalom százalékos értékének 0%-ra (a forgalom letiltásához) vagy 100%-ra (a forgalom engedélyezéséhez) kell lennie.
Most az green üzemelő példány az összes élő forgalom 10%-át kapja meg. Az ügyfelek előrejelzést kapnak mind az üzemelő példányoktól, mind az bluegreen üzemelő példányoktó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.
A végpont részletei lapon válassza a Forgalom frissítése lehetőséget.
Állítsa be az üzembehelyezési forgalmat úgy, hogy 100%-ot a zöld üzembe helyezésre, 0%-ot pedig a kék üzembe helyezésre allokál.
Válassza a Frissítés lehetőséget.
A régi üzembe helyezés eltávolítása
Az alábbi lépésekkel törölhet egy egyéni üzembe helyezést egy felügyelt online végpontról. Az egyéni üzembe helyezés törlése hatással van a felügyelt online végpont többi központi telepítésére:
Nem törölhet olyan üzemelő példányt, amely számára élő forgalom van lefoglalva. Az üzemelő példány törlése előtt először 0%-ra kell állítania az üzemelő példány forgalomlefoglalását.
A végpont részletei lapon keresse meg a kék üzembe helyezést.
Válassza a törlés ikont az üzembe helyezés neve mellett.