Požadavky na odvozovací směrovač a připojení služby Azure Machine Learning
Směrovač odvozování ve službě Azure Machine Learning je důležitou komponentou pro odvozování v reálném čase s clusterem Kubernetes. V tomto článku se dozvíte o těchto článcích:
- Co je směrovač odvozování služby Azure Machine Learning
- Jak funguje automatické škálování
- Konfigurace a splnění výkonu žádosti o odvozování (počet požadavků za sekundu a latence)
- Požadavky na připojení pro cluster odvozování AKS
Co je směrovač odvozování služby Azure Machine Learning
Směrovač odvozování služby Azure Machine Learning je front-endová komponenta (azureml-fe
), která je nasazená v clusteru AKS nebo Arc Kubernetes v době nasazení rozšíření Azure Machine Learning. Má následující funkce:
- Směruje příchozí požadavky na odvozování z nástroje pro vyrovnávání zatížení clusteru nebo kontroleru příchozího přenosu dat do odpovídajících podů modelu.
- Vyrovnávání zatížení všech příchozích požadavků na odvozování pomocí inteligentního koordinovaného směrování
- Spravuje pody modelů automatické škálování.
- Funkce odolné proti chybám a převzetí služeb při selhání, která zajišťuje, že žádosti o odvozování se vždy obsluhují pro kritickou obchodní aplikaci.
Front-end zpracovává požadavky následujícím postupem:
- Klient odešle požadavek do nástroje pro vyrovnávání zatížení.
- Nástroj pro vyrovnávání zatížení se odešle na jeden z front-endů.
- Front-end vyhledá směrovač služby (front-end instance fungující jako koordinátor) pro službu.
- Směrovač služby vybere back-end a vrátí ho do front-endu.
- Front-end předá požadavek back-endu.
- Po zpracování požadavku back-end odešle odpověď front-endové komponentě.
- Front-end rozšíří odpověď zpět do klienta.
- Front-end informuje směrovač služby, že back-end dokončil zpracování a je k dispozici pro další požadavky.
Tento tok znázorňuje následující diagram:
Jak vidíte z výše uvedeného diagramu, během nasazení rozšíření Azure Machine Learning se ve výchozím nastavení vytvoří 3 azureml-fe
instance, jedna instance funguje jako koordinovaná role a ostatní instance obsluhují příchozí požadavky na odvozování. Koordinační instance má všechny informace o podech modelu a rozhoduje o tom, který pod modelu má obsloužit příchozí požadavek, zatímco obslužné azureml-fe
instance zodpovídají za směrování požadavku na vybraný pod modelu a šíří odpověď zpět původnímu uživateli.
Automatické škálování
Směrovač odvozování služby Azure Machine Learning zpracovává automatické škálování pro všechna nasazení modelů v clusteru Kubernetes. Vzhledem k tomu, že všechny požadavky na odvozování procházejí, mají potřebná data k automatickému škálování nasazených modelů.
Důležité
Nepovolujte horizontální automatické škálování podů Kubernetes (HPA) pro nasazení modelů. To by způsobilo, že dvě komponenty automatického škálování vzájemně soupeřily. Azureml-fe je navržený tak, aby automaticky škáloval modely nasazené službou Azure Machine Learning, kde HPA musí odhadnout nebo odhadnout využití modelu z obecné metriky, jako je využití procesoru nebo vlastní konfigurace metrik.
Azureml-fe neškáluje počet uzlů v clusteru AKS, protože to může vést k neočekávanému zvýšení nákladů. Místo toho škáluje počet replik modelu v rámci fyzických hranic clusteru. Pokud potřebujete škálovat počet uzlů v clusteru, můžete cluster škálovat ručně nebo nakonfigurovat automatické škálování clusteru AKS.
Automatické škálování je možné řídit vlastností scale_settings
v YAML nasazení. Následující příklad ukazuje, jak povolit automatické škálování:
# 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
Rozhodnutí o vertikálním navýšení nebo snížení kapacity je založeno na hodnotě 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
Pokud toto číslo překročí target_utilization_percentage
, vytvoří se více replik. Pokud je nižší, repliky se zmenší. Ve výchozím nastavení je cílové využití 70 %.
Rozhodnutí o přidání replik jsou dychtivá a rychlá (přibližně 1 sekunda). Rozhodnutí o odebrání replik jsou konzervativní (přibližně 1 minuta).
Pokud například chcete nasadit modelovou službu a chcete vědět, že mnoho instancí (podů/replik) by se mělo nakonfigurovat pro cílové požadavky za sekundu (RPS) a cílovou dobu odezvy. Požadované repliky můžete vypočítat pomocí následujícího kódu:
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)
Výkon azureml-fe
Může azureml-fe
dosáhnout 5 K požadavků za sekundu (QPS) s dobrou latencí, což má režii, která v průměru nepřekračuje 3 ms a 15 ms při 99% percentilu.
Poznámka:
Pokud máte požadavky RPS vyšší než 10 tisíc, zvažte následující možnosti:
- Zvyšte požadavky na prostředky nebo limity pro
azureml-fe
pody. Ve výchozím nastavení má 2 virtuální procesory a limit prostředků paměti 1,2G. - Zvyšte počet instancí pro
azureml-fe
. Azure Machine Learning ve výchozím nastavení vytváří 3 nebo 1azureml-fe
instance na cluster.- Tento počet instancí závisí na konfiguraci
inferenceRouterHA
entension služby Azure Machine Learning. - Zvýšený počet instancí nelze zachovat, protože se po upgradu rozšíření přepíše nakonfigurovanou hodnotou.
- Tento počet instancí závisí na konfiguraci
- Pokud ho můžou pomoct, spojte se s odborníky Microsoftu.
Vysvětlení požadavků na připojení pro cluster AKS pro odvozování
Cluster AKS se nasadí s jedním z následujících dvou síťových modelů:
- Sítě Kubenet – Síťové prostředky se obvykle vytvářejí a konfigurují při nasazení clusteru AKS.
- Sítě Azure Container Networking Interface (CNI) – Cluster AKS je připojený k existujícímu prostředku a konfiguracím virtuální sítě.
Pro sítě Kubenet se síť vytvoří a správně nakonfiguruje pro službu Azure Machine Learning. V případě sítí CNI musíte porozumět požadavkům na připojení a zajistit překlad DNS a odchozí připojení pro odvozování AKS. Pokud například používáte bránu firewall k blokování síťového provozu, můžete vyžadovat další kroky.
Následující diagram znázorňuje požadavky na připojení pro odvozování AKS. Černé šipky představují skutečnou komunikaci a modré šipky představují názvy domén. Možná budete muset přidat položky pro tyto hostitele do brány firewall nebo do vlastního serveru DNS.
Obecné požadavky na připojení AKS najdete v tématu Řízení odchozího provozu pro uzly clusteru ve službě Azure Kubernetes Service.
Informace o přístupu ke službám Azure Machine Learning za bránou firewall najdete v tématu Konfigurace příchozího a odchozího síťového provozu.
Celkové požadavky na překlad DNS
Překlad DNS v rámci existující virtuální sítě je pod vaší kontrolou. Například brána firewall nebo vlastní server DNS. Následující hostitelé musí být dosažitelní:
Název hostitele | Používá |
---|---|
<cluster>.hcp.<region>.azmk8s.io |
Server rozhraní API AKS |
mcr.microsoft.com |
Microsoft Container Registry (MCR) |
<ACR name>.azurecr.io |
Vaše služba Azure Container Registry (ACR) |
<account>.blob.core.windows.net |
Účet služby Azure Storage (Blob Storage) |
api.azureml.ms |
Ověřování Microsoft Entra |
ingest-vienna<region>.kusto.windows.net |
Koncový bod Kusto pro aktualizaci telemetrie |
Požadavky na připojení v chronologickém pořadí: od vytvoření clusteru po nasazení modelu
Hned po nasazení azureml-fe se pokusí spustit a to vyžaduje:
- Překlad DNS pro server rozhraní API AKS
- Dotazování serveru rozhraní API AKS za účelem zjištění jiných instancí samotného (jedná se o službu s více pody)
- Připojení k jiným instancím samotného
Jakmile se azureml-fe spustí, vyžaduje správné fungování následujícího připojení:
- Připojení ke službě Azure Storage a stažení dynamické konfigurace
- Přeložte DNS pro ověřovací server Microsoft Entra api.azureml.ms a komunikujte s ním, když nasazená služba používá ověřování Microsoft Entra.
- Dotazování serveru rozhraní API AKS za účelem zjišťování nasazených modelů
- Komunikace s nasazenými identifikátory POD modelu
V době nasazení modelu by měl být uzel AKS úspěšného nasazení modelu schopný:
- Překlad DNS pro ACR zákazníka
- Stažení obrázků z ACR zákazníka
- Překlad DNS pro azure BLOB, kde je uložený model
- Stažení modelů z azure BLOB
Jakmile se model nasadí a služba spustí, azureml-fe ho automaticky zjistí pomocí rozhraní API AKS a bude připraven k jeho směrování. Musí být schopný komunikovat s modelem POD.
Poznámka:
Pokud nasazený model vyžaduje jakékoli připojení (např. dotazování externí databáze nebo jiné služby REST, stažení objektu BLOB atd.), mělo by se povolit překlad DNS i odchozí komunikace pro tyto služby.