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


Modell üzembe helyezése Azure Kubernetes Service fürtön v1-zel

Fontos

Ez a cikk bemutatja, hogyan helyezhet üzembe egy modellt a parancssori felület és az SDK v1 használatával. A v2-hez ajánlott megközelítésért lásd: Gépi tanulási modell üzembe helyezése és pontozása online végpont használatával.

Megtudhatja, hogyan helyezhet üzembe egy modellt webszolgáltatásként az Azure Machine Learning használatával a Azure Kubernetes Service (AKS) szolgáltatásban. Azure Kubernetes Service kiválóan alkalmas nagy léptékű éles környezetekhez. Használja az Azure Kubernetes szolgáltatást, ha az alábbi képességek közül legalább egyre van szüksége:

  • Gyors válaszidő
  • Az üzembe helyezett szolgáltatás automatikus skálázása
  • Logging
  • Modelladatok gyűjtése
  • Hitelesítés
  • TLS-visszafejtés
  • Hardveres gyorsítási lehetőségek, például GPU- és mezőprogramozható kaputömbök (FPGA)

A Azure Kubernetes Service üzembe helyezésekor a munkaterülethez csatlakoztatott AKS-fürtön kell üzembe helyeznie. Az AKS-fürtök munkaterülethez való csatlakoztatásával kapcsolatos információkért lásd: Azure Kubernetes Service-fürt létrehozása és csatolása.

Fontos

Javasoljuk, hogy a webszolgáltatásban való üzembe helyezés előtt helyi hibakeresést hajtsa be. További információ: Helyi hibakeresés

További információ: Azure Machine Learning – Üzembe helyezés helyi notebookba

Megjegyzés

Az Azure Machine Learning-végpontok (v2) továbbfejlesztett, egyszerűbb üzembe helyezési élményt biztosítanak. A végpontok valós idejű és kötegelt következtetési forgatókönyveket is támogatnak. A végpontok egységes felületet biztosítanak a modelltelepítések számítási típusok közötti meghívásához és kezeléséhez. Lásd: Mik azok az Azure Machine Learning-végpontok?

Előfeltételek

Az üzembehelyezési folyamatok megismerése

A "deployment" szó a Kubernetesben és az Azure Machine Learningben is használatos. Az "üzembe helyezés" különböző jelentéssel bír ebben a két kontextusban. A Kubernetesben az a Deployment egy konkrét entitás, amely egy deklaratív YAML-fájllal van megadva. A Kubernetes Deployment meghatározott életciklussal és konkrét kapcsolattal rendelkezik más Kubernetes-entitásokkal, például Pods és ReplicaSets. A Kubernetesről a Mi az a Kubernetes? című dokumentációból és videókból tudhat meg többet.

Az Azure Machine Learningben az "üzembe helyezés" általánosabb értelemben használatos a projekt erőforrásainak elérhetővé tételéhez és tisztításához. Az Azure Machine Learning által az üzembe helyezés részét képező lépések a következők:

  1. Tömörítse a projektmappában lévő fájlokat, figyelmen kívül hagyva az .amlignore vagy .gitignore fájlokat
  2. A számítási fürt vertikális felskálázása (a Kuberneteshez kapcsolódik)
  3. A dockerfile létrehozása vagy letöltése a számítási csomópontra (a Kuberneteshez kapcsolódik)
    1. A rendszer a következő kivonatot számítja ki:
    2. A rendszer ezt a kivonatot használja kulcsként a munkaterület Azure Container Registry (ACR) keresésében
    3. Ha nem található, egyezést keres a globális ACR-ben
    4. Ha nem található, a rendszer létrehoz egy új rendszerképet (amely gyorsítótárazva lesz, és le lesz küldve a munkaterület ACR-jének)
  4. Tömörített projektfájl letöltése ideiglenes tárhelyre a számítási csomóponton
  5. A projektfájl kibontása
  6. A számítási csomópont végrehajtása python <entry script> <arguments>
  7. Naplók, modellfájlok és a munkaterülethez társított tárfiókba ./outputs írt egyéb fájlok mentése
  8. A számítási erőforrások vertikális leskálázása, beleértve az ideiglenes tárterület eltávolítását (a Kuberneteshez kapcsolódik)

Azure Machine Learning-útválasztó

Az előtérbeli összetevő (azureml-fe), amely a bejövő következtetési kérelmeket az üzembe helyezett szolgáltatásokhoz irányítja, szükség szerint automatikusan méretezhető. Az azureml-fe skálázása az AKS-fürt rendeltetésén és méretén (csomópontok száma) alapul. A fürtcél és a csomópontok az AKS-fürt létrehozásakor vagy csatolásakor vannak konfigurálva. Fürtönként egy azureml-fe szolgáltatás fut, amely több podon is futhat.

Fontos

Ha fejlesztői tesztként konfigurált fürtöt használ, az önskálázó le van tiltva. Még a FastProd-/DenseProd-fürtök esetében is Self-Scaler csak akkor van engedélyezve, ha a telemetriai adatok azt mutatják, hogy szükség van rá.

Megjegyzés

A kérelem hasznos adatainak maximális száma 100 MB.

Az Azureml-fe vertikálisan skálázza felfelé (függőlegesen) a több mag használatát, és horizontálisan kifelé több pod használatát. A vertikális felskálázási döntés meghozatalakor a rendszer a bejövő következtetési kérelmek átirányításához szükséges időt használja. Ha ez az idő meghaladja a küszöbértéket, vertikális felskálázás történik. Ha a bejövő kérések átirányításának időtartama továbbra is meghaladja a küszöbértéket, felskálázás történik.

A le- és leskálázáskor a rendszer processzorhasználatot használ. Ha a cpu-használat küszöbértéke teljesül, az előtér először le lesz skálázva. Ha a CPU-használat a vertikális felskálázási küszöbértékre csökken, egy skálázási művelet történik. A vertikális fel- és kiskálázás csak akkor történik meg, ha elegendő fürterőforrás áll rendelkezésre.

Vertikális fel- vagy leskálázáskor az azureml-fe podok újraindulnak a processzor-/memóriaváltozások alkalmazásához. Az újraindulások nem befolyásolják a következtetési kéréseket.

Az AKS következtetési fürtök kapcsolati követelményeinek ismertetése

Amikor az Azure Machine Learning létrehoz vagy csatol egy AKS-fürtöt, az AKS-fürt az alábbi két hálózati modell egyikével lesz üzembe helyezve:

  • Kubenet-hálózatkezelés – A hálózati erőforrásokat általában az AKS-fürt üzembe helyezésekor hozzák létre és konfigurálják.
  • Azure Container Networking Interface (CNI) hálózatkezelés – Az AKS-fürt egy meglévő virtuális hálózati erőforráshoz és konfigurációhoz csatlakozik.

A Kubenet-hálózatkezeléshez a hálózat megfelelően van létrehozva és konfigurálva az Azure Machine Learning Service-hez. A CNI-hálózatkezeléshez ismernie kell a kapcsolati követelményeket, és biztosítania kell az AKS-következtetés DNS-feloldását és kimenő kapcsolatait. Előfordulhat például, hogy tűzfallal blokkolja a hálózati forgalmat.

Az alábbi ábra az AKS-következtetés kapcsolati követelményeit mutatja be. A fekete nyilak a tényleges kommunikációt, a kék nyilak pedig a tartományneveket jelölik. Előfordulhat, hogy bejegyzéseket kell hozzáadnia ezekhez a gazdagépekhez a tűzfalhoz vagy az egyéni DNS-kiszolgálóhoz.

Az AKS-következtetés csatlakozási követelményei

Az általános AKS-kapcsolati követelményekért lásd: A fürtcsomópontok kimenő forgalmának szabályozása Azure Kubernetes Service.

Az Azure Machine Learning-szolgáltatások tűzfal mögötti eléréséhez lásd: Az azureml elérése tűzfal mögött.

A DNS-feloldási követelmények általános követelményei

A meglévő virtuális hálózaton belüli DNS-feloldás az Ön felügyelete alatt áll. Például tűzfal vagy egyéni DNS-kiszolgáló. A következő gazdagépeknek elérhetőnek kell lenniük:

Állomásnév Mi használja?
<cluster>.hcp.<region>.azmk8s.io AKS API-kiszolgáló
mcr.microsoft.com Microsoft Container Registry (MCR)
<ACR name>.azurecr.io Az Azure Container Registry (ACR)
<account>.table.core.windows.net Azure Storage-fiók (Table Storage)
<account>.blob.core.windows.net Azure Storage-fiók (Blob Storage)
api.azureml.ms Azure Active Directory- (Azure AD-) hitelesítés
ingest-vienna<region>.kusto.windows.net Telemetriai adatok feltöltésére szolgáló Kusto-végpont
<leaf-domain-label + auto-generated suffix>.<region>.cloudapp.azure.com Végpont tartományneve, ha az Azure Machine Learninggel automatikusan hozta létre. Ha egyéni tartománynevet használt, nincs szüksége erre a bejegyzésre.

Kapcsolati követelmények időrendi sorrendben: a fürtlétrehozástól a modell üzembe helyezéséig

Az AKS létrehozása vagy csatolása során az Azure Machine Learning-útválasztó (azureml-fe) üzembe lesz helyezve az AKS-fürtben. Az Azure Machine Learning-útválasztó üzembe helyezéséhez az AKS-csomópontnak képesnek kell lennie a következőre:

  • Az AKS API-kiszolgáló DNS-ének feloldása
  • Az MCR DNS-ének feloldása docker-rendszerképek letöltéséhez az Azure Machine Learning-útválasztóhoz
  • Képek letöltése az MCR-ből, ahol kimenő kapcsolat szükséges

Közvetlenül az azureml-fe üzembe helyezése után megpróbál elindulni, és ehhez a következőket kell elvégeznie:

  • Az AKS API-kiszolgáló DNS-ének feloldása
  • Az AKS API-kiszolgáló lekérdezése más példányok felderítéséhez (ez egy több podos szolgáltatás)
  • Csatlakozás saját példányaihoz

Az azureml-fe elindítása után a következő kapcsolat szükséges a megfelelő működéshez:

  • Csatlakozás az Azure Storage-hoz a dinamikus konfiguráció letöltéséhez
  • Oldja fel Azure AD hitelesítési kiszolgáló DNS-ét, api.azureml.ms és kommunikáljon vele, amikor az üzembe helyezett szolgáltatás Azure AD hitelesítést használ.
  • Az AKS API-kiszolgáló lekérdezése az üzembe helyezett modellek felderítéséhez
  • Kommunikáció az üzembe helyezett modell rendelési azonosítóival

A modell üzembe helyezésekor a sikeres modelltelepítéshez az AKS-csomópontnak képesnek kell lennie a következőre:

  • Az ügyfél ACR-jének DNS-ének feloldása
  • Képek letöltése az ügyfél ACR-éből
  • A modell tárolására használt Azure-blobok DNS-ének feloldása
  • Modellek letöltése Azure BLOB-okból

A modell üzembe helyezése és a szolgáltatás elindítása után az azureml-fe automatikusan felderíti azt az AKS API használatával, és készen áll a kérések átirányítására. Képesnek kell lennie kommunikálni a modell poD-jaival.

Megjegyzés

Ha az üzembe helyezett modellhez bármilyen kapcsolat szükséges (például külső adatbázis vagy más REST-szolgáltatás lekérdezése, BLOB letöltése stb.), akkor engedélyezni kell mind a DNS-feloldást, mind a szolgáltatások kimenő kommunikációját.

Üzembe helyezés az AKS-ben

Modell Azure Kubernetes Service való üzembe helyezéséhez hozzon létre egy üzembehelyezési konfigurációt, amely leírja a szükséges számítási erőforrásokat. Például a magok és a memória száma. Dedukciós konfigurációra is szükség van, amely leírja a modell és a webszolgáltatás üzemeltetéséhez szükséges környezetet. A következtetési konfiguráció létrehozásával kapcsolatos további információkért lásd: Modellek üzembe helyezése és üzembe helyezése.

Megjegyzés

Üzemelő példányonként (tárolónként) legfeljebb 1000 modell helyezhető üzembe.

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

from azureml.core.webservice import AksWebservice, Webservice
from azureml.core.model import Model
from azureml.core.compute import AksCompute

aks_target = AksCompute(ws,"myaks")
# If deploying to a cluster configured for dev/test, ensure that it was created with enough
# cores and memory to handle this deployment configuration. Note that memory is also used by
# things such as dependencies and AML components.
deployment_config = AksWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "myservice", [model], inference_config, deployment_config, aks_target)
service.wait_for_deployment(show_output = True)
print(service.state)
print(service.get_logs())

Az ebben a példában használt osztályokról, metódusokról és paraméterekről az alábbi referenciadokumentumokban talál további információt:

Automatikus skálázás

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

Az Azure Machine Learning-modellek üzembe helyezésének automatikus skálázását kezelő összetevő az azureml-fe, amely egy intelligens kérelem útválasztója. Mivel minden következtetési kérelem végighalad rajta, rendelkezik a szükséges adatokkal az üzembe helyezett modell(ek) automatikus skálázásához.

Fontos

  • Ne engedélyezze a Kubernetes vízszintes pod automatikus skálázását (HPA) a modelltelepítésekhez. Ha így tesz, a két automatikus méretezési összetevő versenyezni fog egymással. Az Azureml-fe az Azure Machine Learning által üzembe helyezett modellek automatikus skálázására lett kialakítva, ahol a HPA-nak egy általános metrika, például a CPU-használat vagy egy egyéni metrikakonfiguráció alapján kell kitalálnia vagy hozzávetőleges modellkihasználtságát.

  • Az Azureml-fe nem skálázza az AKS-fürtök csomópontjainak számát, mert ez váratlan költségnövekedéshez vezethet. Ehelyett a modell replikáinak számát skálázza a fizikai fürt határain belül. Ha skálázni kívánja a fürt csomópontjainak számát, skálázhatja a fürtöt manuálisan, vagy konfigurálhatja az AKS automatikus fürtskálázóját.

Az automatikus skálázás az AKS autoscale_min_replicasautoscale_max_replicas webszolgáltatás beállításával autoscale_target_utilizationszabályozható. Az alábbi példa bemutatja, hogyan engedélyezheti az automatikus skálázást:

aks_config = AksWebservice.deploy_configuration(autoscale_enabled=True, 
                                                autoscale_target_utilization=30,
                                                autoscale_min_replicas=1,
                                                autoscale_max_replicas=4)

A vertikális fel- és leskálázásra vonatkozó döntések az aktuális tárolóreplikák kihasználtságán alapulnak. Az elfoglalt replikák száma (kérés feldolgozása) és az aktuális replikák teljes száma elosztva az aktuális kihasználtság. Ha ez a szám meghaladja autoscale_target_utilizationa értéket, több replika jön létre. Ha alacsonyabb, akkor a replikák csökkennek. Alapértelmezés szerint a cél kihasználtsága 70%.

A replikák hozzáadására vonatkozó döntések lelkesek és gyorsak (körülbelül 1 másodperc). A replikák eltávolításával kapcsolatos döntések konzervatívak (körülbelül 1 perc).

A szükséges replikákat a következő kóddal számíthatja ki:

from math import ceil
# target requests per second
targetRps = 20
# time to process the request (in seconds)
reqTime = 10
# Maximum requests per container
maxReqPerContainer = 1
# target_utilization. 70% in this example
targetUtilization = .7

concurrentRequests = targetRps * reqTime / targetUtilization

# Number of container replicas
replicas = ceil(concurrentRequests / maxReqPerContainer)

A beállításról autoscale_target_utilizationautoscale_max_replicasautoscale_min_replicastovábbi információt az AksWebservice modul referenciájában talál.

Webszolgáltatás-hitelesítés

A Azure Kubernetes Service üzembe helyezésekor a kulcsalapú hitelesítés alapértelmezés szerint engedélyezve van. A jogkivonatalapú hitelesítést is engedélyezheti. A jogkivonat-alapú hitelesítéshez az ügyfeleknek Azure Active Directory-fiókot kell használniuk egy hitelesítési jogkivonat lekéréséhez, amely az üzembe helyezett szolgáltatás felé irányuló kérések végrehajtására szolgál.

A hitelesítés letiltásához állítsa be a paramétert auth_enabled=False az üzembehelyezési konfiguráció létrehozásakor. Az alábbi példa letiltja a hitelesítést az SDK használatával:

deployment_config = AksWebservice.deploy_configuration(cpu_cores=1, memory_gb=1, auth_enabled=False)

Az ügyfélalkalmazásból történő hitelesítéssel kapcsolatos információkért lásd: Webszolgáltatásként üzembe helyezett Azure Machine Learning-modell használata.

Hitelesítés kulcsokkal

Ha a kulcshitelesítés engedélyezve van, a get_keys metódussal lekérhet egy elsődleges és másodlagos hitelesítési kulcsot:

primary, secondary = service.get_keys()
print(primary)

Fontos

Ha újra kell létrehoznia egy kulcsot, használja a service.regen_key

Hitelesítés jogkivonatokkal

A jogkivonat-hitelesítés engedélyezéséhez állítsa be a token_auth_enabled=True paramétert az üzembe helyezés létrehozásakor vagy frissítésekor. Az alábbi példa engedélyezi a jogkivonat-hitelesítést az SDK használatával:

deployment_config = AksWebservice.deploy_configuration(cpu_cores=1, memory_gb=1, token_auth_enabled=True)

Ha a jogkivonat-hitelesítés engedélyezve van, a metódussal lekérheti a get_token JWT-jogkivonatot és a jogkivonat lejárati idejét:

token, refresh_by = service.get_token()
print(token)

Fontos

A jogkivonat ideje után új jogkivonatot kell kérnie refresh_by .

A Microsoft határozottan javasolja, hogy az Azure Machine Learning-munkaterületet ugyanabban a régióban hozza létre, mint a Azure Kubernetes Service-fürtöt. A jogkivonattal való hitelesítéshez a webszolgáltatás hívást kezdeményez arra a régióra, amelyben az Azure Machine Learning-munkaterület létrejön. Ha a munkaterület régiója nem érhető el, akkor sem fog tudni jogkivonatot lekérni a webszolgáltatáshoz, még akkor sem, ha a fürt más régióban található, mint a munkaterület. Ez gyakorlatilag azt eredményezi, hogy a tokenalapú hitelesítés nem érhető el, amíg a munkaterület régiója újra elérhetővé nem válik. Emellett minél nagyobb a távolság a fürt régiója és a munkaterület régiója között, annál tovább tart egy token lekérése.

A jogkivonat lekéréséhez az Azure Machine Learning SDK-t vagy az az ml service get-access-token parancsot kell használnia.

Biztonsági rések vizsgálata

Microsoft Defender for Cloud egységes biztonságkezelést és fejlett veszélyforrások elleni védelmet biztosít a hibrid felhőbeli számítási feladatokban. Engedélyeznie kell a Microsoft Defender for Cloud számára, hogy megvizsgálja az erőforrásokat, és kövesse annak ajánlásait. További információt az Azure Kubernetes Services és a Defender for Cloud integrációja című témakörben talál.

Következő lépések