Modell üzembe helyezése egy Azure Kubernetes Service-fürtben az 1. verzióval

Fontos

Ez a cikk bemutatja, hogyan használható az Azure Machine Tanulás CLI (v1) és az Azure Machine Tanulás SDK for Python (v1) a modellek üzembe helyezéséhez. 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 egy modellt webszolgáltatásként az Azure Machine Tanulás 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.

A Helyi jegyzetfüzet üzembe helyezése a GitHubon című témakörben is olvashat.

Feljegyzés

Az Azure Machine Tanulás Végpontok (v2) továbbfejlesztett, egyszerűbb üzembe helyezést biztosítanak. 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. Tekintse meg az Azure Machine Tanulás végpontjait.

Előfeltételek

  • Egy Azure Machine Learning-munkaterület. További információ: Azure Machine Tanulás-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 Tanulás szolgáltatáshoz készült Azure CLI-bővítmény (v1), az Azure Machine Tanulás Python SDK vagy az Azure Machine Tanulás Visual Studio Code bővítmény.

    Fontos

    A cikkben szereplő Azure CLI-parancsok némelyike az azure-cli-mlAzure Machine Tanulás vagy v1 bővítményét 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 Tanulás 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 Tanulás az üzembe helyezést általánosabb értelemben használják a projekterőforrások elérhetővé tételéhez és tisztításához. Az Azure Machine Tanulás az üzembe helyezés részét tekinti a következők:

  1. Tömörítse a fájlokat a projektmappában, figyelmen kívül hagyva az .amlignore vagy a .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 az Azure Container Registry (ACR) munkaterület 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 van, és le lesz küldve a munkaterület ACR-jének
  4. Tömörített projektfájl letöltése ideiglenes tárolóba 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 ./outputs mappába írt egyéb fájlok mentése a munkaterülethez társított tárfiókba
  8. 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 Tanulás ú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-testfü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á.

Feljegyzés

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 Tanulás 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 Tanulás 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.

Diagram that shows connectivity requirements for AKS inferencing.

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 Tanulás tűzfal mögötti szolgáltatásainak 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 az Azure Machine Tanulás automatikusan létrejött. Ha egyéni tartománynevet használt, nincs szüksége erre a bejegyzésre.

Csatlakozás ságra vonatkozó követelmények időrendi sorrendben

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

  • Az AKS API-kiszolgáló DNS-ének feloldása
  • Az MCR DNS-ének feloldása az Azure Machine Tanulás útválasztó docker-lemezképeinek letöltéséhez
  • 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 más példányokra

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

  • dinamikus konfiguráció letöltéséhez Csatlakozás az Azure Storage-ba
  • 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.

ÉRVÉNYES: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

ÉRVÉNYES:Python SDK azureml v1

Az Azure Machine Tanulás modelltelepítések automatikus skálázását kezelő összetevő az azureml-fe, amely egy intelligens kérés útválasztó. 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 Tanulás á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 kellene kitalálnia vagy hozzávetőlegesen meghatároznia 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_utilizationautoscale_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_utilizationautoscale_max_replicasautoscale_min_replicaskapcsolatos 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 az Azure Machine Tanulás-modell használata webszolgáltatásként üzembe helyezett verzióját.

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 Tanulás-munkaterületet ugyanabban a régióban hozza létre, mint az AKS-fürt. A jogkivonattal történő hitelesítéshez a webszolgáltatás hívást kezdeményez arra a régióra, amelyben az Azure Machine Tanulás-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 Tanulás 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.