Azure Machine Tanulás következtetési útválasztó és kapcsolati követelmények
Az Azure Machine Tanulás következtetési útválasztó kritikus fontosságú eleme a Kubernetes-fürttel való valós idejű következtetésnek. Ebben a cikkben az alábbiakat ismerheti meg:
- Mi az az Azure Machine Learning következtetési útválasztó?
- Az automatikus skálázás működése
- Következtetési kérelmek teljesítményének konfigurálása és teljesítése (másodpercenkénti kérelmek száma és késés)
- Csatlakozás AKS-következtetési fürtre vonatkozó követelmények
Mi az az Azure Machine Learning következtetési útválasztó?
Az Azure Machine Tanulás következtetési útválasztó az előtérbeli összetevő (azureml-fe
), amely az Azure Machine Tanulás bővítmény üzembe helyezési ideje alatt van üzembe helyezve az AKS- vagy Arc Kubernetes-fürtön. A következő függvényekkel rendelkezik:
- Átirányítja a bejövő következtetési kérelmeket a fürt terheléselosztójától vagy a bejövőforgalom-vezérlőtől a megfelelő modell podokhoz.
- Terheléselosztás az összes bejövő következtetési kéréshez intelligens, koordinált útválasztással.
- A modell podjai automatikus skálázását kezeli.
- Hibatűrő és feladatátvételi képesség, amely biztosítja, hogy a következtetési kérelmek mindig a kritikus üzleti alkalmazásokhoz legyenek kiszolgálva.
A következő lépések a kérelmek előtér általi feldolgozásának lépései:
- Az ügyfél kérést küld a terheléselosztónak.
- A terheléselosztó az egyik előtérnek küld.
- Az előtér megkeresi a szolgáltatás útválasztóját (az előtérbeli példányt, amely koordinátorként működik).
- A szolgáltatás útválasztója kiválaszt egy háttérrendszert, és visszaadja az előtérnek.
- Az előtér továbbítja a kérést a háttérrendszernek.
- A kérés feldolgozása után a háttérrendszer választ küld az előtér-összetevőnek.
- Az előtér újra propagálja a választ az ügyfélnek.
- Az előtér tájékoztatja a szolgáltatás útválasztóját, hogy a háttér feldolgozása befejeződött, és más kérésekhez is elérhető.
Az alábbi ábra a folyamatot szemlélteti:
Ahogy a fenti ábrán látható, alapértelmezés szerint 3 azureml-fe
példány jön létre az Azure Machine Tanulás bővítmény üzembe helyezése során, az egyik példány koordináló szerepkörként működik, a többi példány pedig bejövő következtetési kérelmeket szolgál ki. A koordináló példány rendelkezik a modell podjaival kapcsolatos összes információval, és döntést hoz arról, hogy melyik modell pod szolgálja ki a bejövő kérést, míg a kiszolgáló azureml-fe
példányok feladata a kérés átirányítása a kiválasztott modell podra, és a válasz visszaterjesztése az eredeti felhasználónak.
Automatikus skálázás
Az Azure Machine Tanulás következtetési útválasztó kezeli az automatikus skálázást a Kubernetes-fürt összes modelltelepítéséhez. Mivel az összes következtetési kérelem végighalad rajta, a szükséges adatokkal rendelkezik az üzembe helyezett modell(ek) automatikus méretezéséhez.
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ő versenyezni fog 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ást az üzembehelyezési YAML tulajdonsága scale_settings
vezérelheti. Az alábbi példa az automatikus skálázás engedélyezését mutatja be:
# deployment yaml
# other properties skipped
scale_setting:
type: target_utilization
min_instances: 3
max_instances: 15
target_utilization_percentage: 70
polling_interval: 10
# other deployment properties continue
A fel- vagy leskálázás döntése utilization of the current container replicas
a következő alapján történik: .
utilization_percentage = (The number of replicas that are busy processing a request + The number of requests queued in azureml-fe) / The total number of current replicas
Ha ez a szám meghaladja target_utilization_percentage
, 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).
Ha például egy modellszolgáltatást szeretne üzembe helyezni, és szeretné tudni, hogy számos példányt (podokat/replikákat) kell konfigurálni a másodpercenkénti célkérelemekhez (RPS) és a cél válaszidőhöz. 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)
Az azureml-fe teljesítménye
A azureml-fe
kérelem másodpercenként 5 K kérést (QPS) érhet el jó késéssel, átlagosan 3 ms-ot nem meghaladó többletterheléssel és 15 ms 99%-os percentilissel.
Feljegyzés
Ha 10K-nál magasabb RPS-követelményekkel rendelkezik, vegye figyelembe a következő lehetőségeket:
- Növelje a podokra vonatkozó
azureml-fe
erőforrás-kérelmeket/korlátokat; alapértelmezés szerint 2 vCPU és 1,2G memóriaerőforrás-korláttal rendelkezik. - A példányok számának növelése a következőhöz
azureml-fe
: . Alapértelmezés szerint az Azure Machine Tanulás fürtönként 3 vagy 1azureml-fe
példányt hoz létre.- Ez a példányszám az Azure Machine Tanulás entension konfigurációjától
inferenceRouterHA
függ. - A megnövekedett példányszám nem őrizhető meg, mivel a bővítmény frissítése után felülírja a konfigurált értékkel.
- Ez a példányszám az Azure Machine Tanulás entension konfigurációjától
- Segítségért keresse fel a Microsoft szakértőit.
Az AKS következtetési fürtök kapcsolati követelményeinek ismertetése
Az AKS-fürt az alábbi két hálózati modell egyikével van ü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. Szükség lehet például további lépésekre, ha 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: A fürtcsomópontok kimenő forgalmának szabályozása az Azure Kubernetes Service-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
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:
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>.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 |
Csatlakozás ivity-követelmények időrendi sorrendben: a fürtlétrehozástól a modell üzembe helyezéséig
Közvetlenül az azureml-fe üzembe helyezése után megkísérli az indítást, és ehhez a következőre van szükség:
- 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
- A Microsoft Entra hitelesítési kiszolgáló DNS-ének feloldása api.azureml.ms, és kommunikálni 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 modell sikeres üzembe helyezéséhez 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és átirányítására. Képesnek kell lennie kommunikálni a modell rendelési azonosítóival.
Feljegyzés
Ha az üzembe helyezett modell bármilyen kapcsolatot igényel (pl. külső adatbázis vagy más REST szolgáltatás lekérdezése, BLOB letöltése stb.), akkor engedélyezni kell a DNS-feloldást és a kimenő kommunikációt ezen szolgáltatásokhoz.