Azure Mašinsko učenje inferensrouter och anslutningskrav
Azure Mašinsko učenje inferensrouter är en viktig komponent för realtidsinferens med Kubernetes-kluster. I den här artikeln kan du lära dig mer om:
- Vad är Azure Machine Learning-slutsatsdragningsrouter?
- Så här fungerar autoskalning
- Så här konfigurerar och uppfyller du prestanda för inferensbegäran (antal begäranden per sekund och svarstid)
- Anslutningskrav för AKS-slutsatsdragningskluster
Vad är Azure Machine Learning-slutsatsdragningsrouter?
Azure Mašinsko učenje-slutsatsdragningsrouter är klientdelskomponenten (azureml-fe
) som distribueras i AKS- eller Arc Kubernetes-kluster i Azure Mašinsko učenje tilläggsdistributionstid. Den har följande funktioner:
- Dirigerar inkommande slutsatsdragningsbegäranden från klusterlastbalanserare eller ingresskontrollant till motsvarande modellpoddar.
- Belastningsutjämar alla inkommande slutsatsdragningsbegäranden med smart samordnad routning.
- Hanterar automatisk skalning av modellpoddar.
- Feltolerant och redundans, vilket säkerställer att slutsatsdragningsbegäranden alltid hanteras för kritiska affärsprogram.
Följande steg är hur begäranden bearbetas av klientdelen:
- Klienten skickar begäran till lastbalanseraren.
- Lastbalanseraren skickar till en av klientdelarna.
- Klientdelen letar upp tjänstroutern (klientdelsinstansen fungerar som koordinator) för tjänsten.
- Tjänstroutern väljer en serverdel och returnerar den till klientdelen.
- Klientdelen vidarebefordrar begäran till serverdelen.
- När begäran har bearbetats skickar serverdelen ett svar till klientdelskomponenten.
- Klientdelen sprider svaret tillbaka till klienten.
- Klientdelen informerar tjänstroutern om att serverdelen har slutfört bearbetningen och är tillgänglig för andra begäranden.
Följande diagram illustrerar det här flödet:
Som du ser i diagrammet ovan skapas som standard 3 azureml-fe
instanser under Distribution av Azure Mašinsko učenje-tillägg, en instans fungerar som samordningsroll och de andra instanserna hanterar inkommande slutsatsdragningsbegäranden. Samordningsinstansen har all information om modellpoddar och fattar beslut om vilken modellpodd som ska hantera inkommande begäranden, medan de betjänande azureml-fe
instanserna ansvarar för att dirigera begäran till den valda modellpodden och sprida svaret tillbaka till den ursprungliga användaren.
Automatisk skalning
Azure Mašinsko učenje-slutsatsdragningsrouter hanterar automatisk skalning för alla modelldistributioner i Kubernetes-klustret. Eftersom alla slutsatsdragningsbegäranden går igenom den har den nödvändiga data för att automatiskt skala de distribuerade modellerna.
Viktigt!
Aktivera inte Kubernetes Horizontal Pod Autoscaler (HPA) för modelldistributioner. Detta skulle göra att de två komponenterna för automatisk skalning konkurrerar med varandra. Azureml-fe är utformat för automatisk skalning av modeller som distribueras av Azure Mašinsko učenje, där HPA skulle behöva gissa eller ungefärlig modellanvändning från ett allmänt mått som CPU-användning eller en anpassad måttkonfiguration.
Azureml-fe skalar inte antalet noder i ett AKS-kluster, eftersom detta kan leda till oväntade kostnadsökningar. I stället skalar den antalet repliker för modellen inom de fysiska klustergränserna. Om du behöver skala antalet noder i klustret kan du skala klustret manuellt eller konfigurera autoskalning av AKS-kluster.
Autoskalning kan styras av scale_settings
egenskapen i distributionens YAML. I följande exempel visas hur du aktiverar automatisk skalning:
# 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
Beslutet att skala upp eller ned baseras på utilization of the current container replicas
.
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
Om det här antalet överskrider target_utilization_percentage
skapas fler repliker. Om den är lägre minskas replikerna. Som standard är målanvändningen 70 %.
Beslut om att lägga till repliker är ivriga och snabba (cirka 1 sekund). Beslut om att ta bort repliker är konservativa (cirka 1 minut).
Om du till exempel vill distribuera en modelltjänst och vill veta att många instanser (poddar/repliker) ska konfigureras för målbegäranden per sekund (RPS) och målsvarstid. Du kan beräkna de repliker som krävs med hjälp av följande kod:
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)
Prestanda för azureml-fe
azureml-fe
Kan nå 5 K-begäranden per sekund (QPS) med god svarstid, med en omkostnad som inte överstiger 3 ms i genomsnitt och 15 ms vid 99 % percentil.
Kommentar
Om du har RPS-krav som är högre än 10 000 bör du överväga följande alternativ:
- Öka resursbegäranden/begränsningar för
azureml-fe
poddar. Som standard har den 2 vCPU och 1,2 G minnesresursgräns. - Öka antalet instanser för
azureml-fe
. Som standard skapar Azure Mašinsko učenje 3 eller 1azureml-fe
instanser per kluster.- Det här antalet instanser beror på konfigurationen av
inferenceRouterHA
Azure Mašinsko učenje entension. - Det ökade antalet instanser kan inte bevaras eftersom det skrivs över med ditt konfigurerade värde när tillägget har uppgraderats.
- Det här antalet instanser beror på konfigurationen av
- Kontakta Microsoft-experter om du behöver hjälp.
Förstå anslutningskraven för slutsatsdragningskluster i AKS
AKS-klustret distribueras med någon av följande två nätverksmodeller:
- Kubenet-nätverk – Nätverksresurserna skapas och konfigureras vanligtvis när AKS-klustret distribueras.
- CNI-nätverk (Azure Container Networking Interface) – AKS-klustret är anslutet till en befintlig virtuell nätverksresurs och konfigurationer.
För Kubenet-nätverk skapas och konfigureras nätverket korrekt för Azure Mašinsko učenje-tjänsten. För CNI-nätverk måste du förstå anslutningskraven och säkerställa DNS-matchning och utgående anslutning för AKS-slutsatsdragning. Du kan till exempel behöva ytterligare steg om du använder en brandvägg för att blockera nätverkstrafik.
Följande diagram visar anslutningskraven för AKS-slutsatsdragning. Svarta pilar representerar faktisk kommunikation och blå pilar representerar domännamnen. Du kan behöva lägga till poster för dessa värdar i brandväggen eller till din anpassade DNS-server.
Allmänna KRAV för AKS-anslutning finns i Kontrollera utgående trafik för klusternoder i Azure Kubernetes Service.
Information om hur du kommer åt Azure Mašinsko učenje-tjänster bakom en brandvägg finns i Konfigurera inkommande och utgående nätverkstrafik.
Övergripande KRAV för DNS-matchning
DNS-matchning i ett befintligt VNet är under din kontroll. Till exempel en brandvägg eller anpassad DNS-server. Följande värdar måste kunna nås:
Värdnamn | Används av |
---|---|
<cluster>.hcp.<region>.azmk8s.io |
AKS API-server |
mcr.microsoft.com |
Microsoft Container Registry (MCR) |
<ACR name>.azurecr.io |
Ditt Azure Container Registry (ACR) |
<account>.blob.core.windows.net |
Azure Storage-konto (Blob Storage) |
api.azureml.ms |
Microsoft Entra-autentisering |
ingest-vienna<region>.kusto.windows.net |
Kusto-slutpunkt för uppladdning av telemetri |
Anslutningskrav i kronologisk ordning: från klusterskapande till modelldistribution
Direkt efter att azureml-fe har distribuerats kommer det att försöka starta och detta kräver att:
- Lösa DNS för AKS API-server
- Fråga AKS API-servern för att identifiera andra instanser av sig själv (det är en tjänst med flera poddar)
- Ansluta till andra instanser av sig själv
När azureml-fe har startats krävs följande anslutning för att fungera korrekt:
- Ansluta till Azure Storage för att ladda ned dynamisk konfiguration
- Lös DNS för Microsoft Entra-autentiseringsservern api.azureml.ms och kommunicera med den när den distribuerade tjänsten använder Microsoft Entra-autentisering.
- Fråga AKS API-servern för att identifiera distribuerade modeller
- Kommunicera med distribuerade modell-POD:er
Vid modelldistributionstidpunkten bör AKS-noden för en lyckad modelldistribution kunna:
- Lösa DNS för kundens ACR
- Ladda ned bilder från kundens ACR
- Lösa DNS för Azure BLOB där modellen lagras
- Ladda ned modeller från Azure BLOBs
När modellen har distribuerats och tjänsten startar identifierar azureml-fe den automatiskt med hjälp av AKS-API:et och är redo att dirigera begäran till den. Den måste kunna kommunicera med modell-POD:er.
Kommentar
Om den distribuerade modellen kräver någon anslutning (t.ex. fråga extern databas eller annan REST-tjänst, ladda ned en BLOB osv.) bör både DNS-matchning och utgående kommunikation för dessa tjänster aktiveras.