Modell üzembe helyezése egy Azure Kubernetes Service-fürtben az 1. verzióval
Fontos
Ez a cikk bemutatja, hogyan helyezhet üzembe egy modellt az Azure Machine Learning CLI (v1) és a Pythonhoz készült Azure Machine Learning 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 pontszáma online végpont használatával.
Megtudhatja, hogyan helyezhet üzembe modelleket webszolgáltatásként az Azure Machine Learning használatával az Azure Kubernetes Service-ben (AKS). Az AKS kiválóan alkalmas nagy léptékű éles környezetekhez. Ha az alábbi képességek közül legalább egyre van szüksége, használja az AKS-t:
- 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őre programozható kaputömbök (FPGA)
Az AKS-ben való üzembe helyezéskor a munkaterülethez csatlakoztatott AKS-fürtön kell üzembe helyeznie. Az AKS-fürt munkaterülethez való csatlakoztatásáról további információt az Azure Kubernetes Service-fürt létrehozása és csatolása című témakörben talál.
Fontos
Javasoljuk, hogy a webszolgáltatásban való üzembe helyezés előtt helyi hibakeresést hajtsanak be. További információ: Hibaelhárítás helyi modell üzembe helyezésével.
Feljegyzés
Az Azure Machine Learning Endpoints (v2) továbbfejlesztett, egyszerűbb üzembe helyezést biztosít. A végpontok támogatják a valós idejű és a kötegelt következtetési forgatókönyveket is. 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, olvassa el a Gépi tanulási modellek üzembe helyezése az Azure-ban című témakört.
A Machine Learning szolgáltatáshoz készült Azure CLI-bővítmény (v1), az Azure Machine Learning Python SDK vagy az Azure Machine Learning Visual Studio Code bővítmény.
Fontos
A cikkben szereplő Azure CLI-parancsok némelyike az
azure-cli-ml
Azure Machine Learning bővítményét 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-a előtt váltsa át a
ml
(vagy v2) bővítményt. További információ a v2-es bővítményről: 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ületet.model
- Állítsa be a regisztrált modellt.inference_config
- Állítsa be a modell következtetési konfigurációját.
A változók beállításával kapcsolatos további információkért tekintse meg a modellek üzembe helyezésének módját és helyét.
A cikkben szereplő PARANCSSOR-kódrészletek feltételezik, hogy már létrehozott egy inferenceconfig.json dokumentumot. A dokumentum létrehozásával kapcsolatos további információkért lásd : Gépi tanulási modellek üzembe helyezése az Azure-ban.
A munkaterülethez csatlakoztatott AKS-fürt. További információ: Azure Kubernetes Service-fürt létrehozása és csatolása.
- Ha modelleket szeretne üzembe helyezni GPU-csomópontokon vagy FPGA-csomópontokon (vagy bármely adott termékben), akkor létre kell hoznia egy fürtöt az adott termékkel. Nem támogatott másodlagos csomópontkészlet létrehozása egy meglévő fürtben, és modellek üzembe helyezése a másodlagos csomópontkészletben.
Az üzembehelyezési folyamatok ismertetése
Az üzembe helyezés szó a Kubernetesben és az Azure Machine Learningben is használatos. Az üzembe helyezésnek különböző jelentése van ebben a két környezetben. A Kubernetesben az üzembe helyezés egy konkrét entitás, amely deklaratív YAML-fájllal van megadva. A Kubernetes-üzembe helyezés meghatározott életciklussal és konkrét kapcsolatokkal rendelkezik más Kubernetes-entitásokkal, például Pods
és ReplicaSets
. A Kubernetesről a Mi a Kubernetes? című cikkből és videókból tudhat meg többet.
Az Azure Machine Learningben az üzembe helyezés általánosabb értelemben használatos a projekterőforrások elérhetővé tételének és megtisztításának szempontjából. 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 fájlokat a projektmappában, figyelmen kívül hagyva az .amlignore vagy a .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ós YAML (lásd: Szoftverkörnyezetek létrehozása és használata az Azure Machine Learningben)
- A rendszer ezt a kivonatot használja kulcsként az Azure Container Registry (ACR) munkaterület 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 van, é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árolóba 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 ./outputs mappába írt egyéb fájlok mentése a munkaterülethez társított tárfiókba
- Számítási kapacitás skálázása, beleértve az ideiglenes tároló 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 skálázódik. 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ürt rendeltetése és csomópontjai AKS-fürt létrehozásakor vagy csatolásakor vannak konfigurálva. Fürtenként egy azureml-fe szolgáltatás fut, amely több podon is futhat.
Fontos
- Ha az önskálázót konfigurált
dev-test
fürt használatával használja, az önméretező le van tiltva. Még a FastProd-/DenseProd-fürtök esetében is az önskálázás csak akkor engedélyezett, ha a telemetriai adatok azt mutatják, hogy szükség van rá. - Az Azure Machine Learning nem tölti fel vagy tárolja automatikusan a naplókat semmilyen tárolóból, beleértve a rendszertárolókat sem. Az átfogó hibakereséshez ajánlott engedélyezni a Container Insightst az AKS-fürthöz. Így szükség esetén mentheti, kezelheti és megoszthatja a tárolónaplókat az AML-csapattal. Enélkül az AML nem tudja garantálni az azureml-fe-hez kapcsolódó problémák támogatását.
- A kérelem hasznos adatainak maximális száma 100 MB.
Az Azureml-fe felfelé (függőlegesen) skáláz, hogy több magot használjon, és (vízszintesen) több podot használjon. 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 fel. Ha ez az idő meghaladja a küszöbértéket, felskálázás történik. Ha a bejövő kérések átirányításának ideje továbbra is meghaladja a küszöbértéket, vertikális felskálázás történik.
A le- és beskálázáskor a processzorhasználatot használja a rendszer. Ha a processzorhasználati küszöbérték teljesül, az előtér le lesz skálázva. Ha a CPU-használat a méretezési küszöbértékre csökken, 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 felskálázás vagy leskálázás esetén az azureml-fe podok újraindulnak a processzor-/memóriaváltozások alkalmazásához. Az újraindítások nem befolyásolják a következtetési kérelmeket.
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ások általában az AKS-fürt üzembe helyezésekor jönnek létre és vannak konfigurálva.
- 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 jön létre és konfigurálva van az Azure Machine Learning szolgáltatáshoz. 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ő kapcsolatát. 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-kapcsolat általános követelményeit lásd: Hálózati forgalom korlátozása az Azure Firewall használatával az AKS-ben.
Az Azure Machine Learning-szolgáltatások tűzfal mögötti eléréséhez lásd: Bejövő és kimenő hálózati forgalom konfigurálása.
A DNS-feloldási követelmények általános követelményei
Egy 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:
Gazdagép neve | 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 |
Microsoft Entra 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 automatikusan létrehozott az Azure Machine Learning használatával. Ha egyéni tartománynevet használt, nincs szüksége erre a bejegyzésre. |
Kapcsolati követelmények időrendi sorrendben
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 megkísérli az indítást, és ehhez a következőt 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ányokhoz
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 a Microsoft Entra hitelesítési kiszolgáló DNS-api.azureml.ms megoldását, és kommunikáljon vele, amikor az üzembe helyezett szolgáltatás Microsoft Entra-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 poD-jaival
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 BLOB-k 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 rendelési azonosítóival.
Feljegyzé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 vagy BLOB letöltése), akkor engedélyezni kell a DNS-feloldást és a kimenő kommunikációt ezekhez a szolgáltatásokhoz.
Üzembe helyezés az AKS-ben
Modell AKS-ben való üzembe helyezéséhez hozzon létre egy üzembe helyezé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. Egy következtetési konfigurációra is szüksége 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 a modellek üzembe helyezésének módját és helyét.
Feljegyzé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 az összes következtetési kérelem végighalad rajta, a szükséges adatokkal rendelkezik az üzembe helyezett modellek automatikus skálázásához.
Fontos
Ne engedélyezze a Kubernetes Horizontal Pod AutoScaler (HPA) használatát a modelltelepítésekhez. Ennek hatására a két automatikus skálázási összetevő verseng 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 közelítenie a modellek kihaszná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 a beállítással autoscale_target_utilization
autoscale_min_replicas
és autoscale_max_replicas
az AKS webszolgáltatással szabályozható. Az alábbi példa az automatikus skálázás engedélyezését mutatja be:
aks_config = AksWebservice.deploy_configuration(autoscale_enabled=True,
autoscale_target_utilization=30,
autoscale_min_replicas=1,
autoscale_max_replicas=4)
A vertikális fel- vagy leskálázási 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 osztva az aktuális kihasználtság. Ha ez a szám meghaladja autoscale_target_utilization
, 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ára vonatkozó döntések konzervatívak (körülbelül 1 perc).
A szükséges replikákat az alábbi 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ással autoscale_target_utilization
autoscale_max_replicas
autoscale_min_replicas
kapcsolatos további információkért lásd az AksWebservice modul referenciáit.
Webszolgáltatás-hitelesítés
Az Azure Kubernetes Service-ben való üzembe helyezéskor a kulcsalapú hitelesítés alapértelmezés szerint engedélyezve van. A jogkivonatalapú hitelesítést is engedélyezheti. A jogkivonatalapú hitelesítéshez az ügyfeleknek Microsoft Entra-fiókot kell használniuk egy hitelesítési jogkivonat kéréséhez, amely az üzembe helyezett szolgáltatásra irányuló kérések végrehajtására szolgál.
A hitelesítés letiltásához állítsa be a auth_enabled=False
paramétert 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ások hitelesítésével kapcsolatos információkért tekintse meg a webszolgáltatásként üzembe helyezett Azure Machine Learning-modell felhasználása című témakört.
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 következőt 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 módszerrel 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 az AKS-fürt. 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 tud jogkivonatot lekérni a webszolgáltatáshoz, még akkor sem, ha a fürt más régióban van, mint a munkaterülete. Ez gyakorlatilag azt eredményezi, hogy a jogkivonat-alapú hitelesítés addig nem érhető el, amíg a munkaterület régiója újra el nem érhető. 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 jogkivonat 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
Felhőhöz készült Microsoft Defender egységes biztonságkezelést és fejlett fenyegetésvédelmet biztosít a hibrid felhőbeli számítási feladatokhoz. Engedélyeznie kell a Felhőhöz készült Microsoft Defender számára, hogy megvizsgálja az erőforrásokat, és kövesse a javaslatait. További információ: Tárolók biztonsága a Microsoft Defenderben.
Kapcsolódó tartalom
- Azure szerepköralapú hozzáférés-vezérlés használata a Kubernetes-engedélyezéshez
- Dedukciós Azure Machine Learning-környezet biztonságossá tétele virtuális hálózatokkal
- Modell online végponton történő üzembe helyezése egyéni tároló használatával
- Távoli modell üzembe helyezésének hibaelhárítása
- Üzembe helyezett 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
- Azure Machine Learning-modell felhasználása webszolgáltatásként
- Adatok ML-webszolgáltatási végpontokról való monitorozása és gyűjtése
- Adatok gyűjtése éles modellekből