Share via


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:

  1. Az ügyfél kérést küld a terheléselosztónak.
  2. A terheléselosztó az egyik előtérnek küld.
  3. 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).
  4. A szolgáltatás útválasztója kiválaszt egy háttérrendszert, és visszaadja az előtérnek.
  5. Az előtér továbbítja a kérést a háttérrendszernek.
  6. A kérés feldolgozása után a háttérrendszer választ küld az előtér-összetevőnek.
  7. Az előtér újra propagálja a választ az ügyfélnek.
  8. 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:

Diagram illustrating the flow of requests between components.

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 replicasa 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 1 azureml-fe példányt hoz létre.
    • Ez a példányszám az Azure Machine Tanulás entension konfigurációjától inferenceRouterHAfü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.
  • 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.

Diagram of the connectivity requirements for inferencing with Azure Kubernetes Services.

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.

Következő lépések