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
Egy Azure Machine Learning-munkaterület. További információ: Azure Machine Learning-munkaterület létrehozása.
A munkaterületen regisztrált gépi tanulási modell. Ha nem rendelkezik regisztrált modellel, tekintse meg a modellek üzembe helyezésének módját és helyét ismertető cikket.
Az Azure CLI-bővítmény (v1) a Machine Learning szolgáltatáshoz, az Azure Machine Learning Python SDK-hoz vagy az Azure Machine Learning Visual Studio Code-bővítményhez.
Fontos
A cikkben szereplő Azure CLI-parancsok némelyike az Azure Machine Learning bővítményét
azure-cli-ml
vagy v1-et használja. A v1-bővítmény támogatása 2025. szeptember 30-án megszűnik. Addig a dátumig telepítheti és használhatja a v1 bővítményt.Javasoljuk, hogy 2025. szeptember 30. előtt váltsa át a
ml
( vagy v2) bővítményt. A v2-es bővítménnyel kapcsolatos további információkért lásd: Azure ML CLI-bővítmény és Python SDK v2.A jelen cikkben szereplő Python-kódrészletek feltételezik, hogy a következő változók vannak beállítva:
ws
– Állítsa be a munkaterületre.model
- Állítsa be a regisztrált modellre.inference_config
– Állítsa a modell következtetési konfigurációjára.
A változók beállításával kapcsolatos további információkért lásd: Modellek üzembe helyezése és üzembe helyezése.
A jelen cikkben szereplő CLI-kódrészletek feltételezik, hogy létrehozott egy
inferenceconfig.json
dokumentumot. A dokumentum létrehozásával kapcsolatos további információkért lásd a modellek üzembe helyezésének módját és helyét.A munkaterülethez csatlakoztatott Azure Kubernetes Service fürt. További információ: Azure Kubernetes Service-fürt létrehozása és csatolása.
- Ha gpu-csomópontokon vagy FPGA-csomópontokon (vagy bármely adott termékváltozaton) szeretne modelleket üzembe helyezni, akkor létre kell hoznia egy fürtöt az adott termékváltozattal. A meglévő fürtökben nem lehet másodlagos csomópontkészletet létrehozni, és modelleket üzembe helyezni a másodlagos csomópontkészletben.
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:
- Tömörítse a projektmappában lévő fájlokat, figyelmen kívül hagyva az .amlignore vagy .gitignore fájlokat
- A számítási fürt vertikális felskálázása (a Kuberneteshez kapcsolódik)
- A dockerfile létrehozása vagy letöltése a számítási csomópontra (a Kuberneteshez kapcsolódik)
- A rendszer a következő kivonatot számítja ki:
- Az alaprendszerkép
- Egyéni docker-lépések (lásd : Modell üzembe helyezése egyéni Docker-alaprendszerkép használatával)
- A CONDA-definíció YAML-jének (lásd: Használati szoftverkörnyezetek létrehozása & az Azure Machine Learningben)
- A rendszer ezt a kivonatot használja kulcsként a munkaterület Azure Container Registry (ACR) keresésében
- Ha nem található, egyezést keres a globális ACR-ben
- 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)
- A rendszer a következő kivonatot számítja ki:
- Tömörített projektfájl letöltése ideiglenes tárhelyre a számítási csomóponton
- A projektfájl kibontása
- A számítási csomópont végrehajtása
python <entry script> <arguments>
- Naplók, modellfájlok és a munkaterülethez társított tárfiókba
./outputs
írt egyéb fájlok mentése - 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 á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_replicas
autoscale_max_replicas
webszolgáltatás beállításával autoscale_target_utilization
szabá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_utilization
a é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_utilization
autoscale_max_replicas
autoscale_min_replicas
tová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
- Az Azure RBAC használata Kubernetes-engedélyezéshez
- Következtetési környezet biztonságossá tételét az Azure Virtual Network
- Modell üzembe helyezése egyéni Docker-rendszerkép használatával
- Üzembe helyezés hibaelhárítása
- Webszolgáltatás frissítése
- TLS használata webszolgáltatás védelméhez az Azure Machine Learning szolgáltatás segítségével
- Webszolgáltatásként üzembe helyezett ML-modell használata
- Azure Machine Learning-modellek monitorozása az Application Insights használatával
- Adatok gyűjtése éles modellekhez