Azure Machine Učení požadavky na odvozovací směrovač a připojení

Směrovač odvozování Učení Azure Machine 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)
  • Připojení požadavky na odvozování clusteru AKS

Co je směrovač odvozování služby Azure Machine Learning

Směrovač odvozování azure machine Učení je front-endová komponenta (azureml-fe), která je nasazená v clusteru AKS nebo Arc Kubernetes v době nasazení rozšíření Azure Machine Učení. 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:

  1. Klient odešle požadavek do nástroje pro vyrovnávání zatížení.
  2. Nástroj pro vyrovnávání zatížení se odešle na jeden z front-endů.
  3. Front-end vyhledá směrovač služby (front-end instance fungující jako koordinátor) pro službu.
  4. Směrovač služby vybere back-end a vrátí ho do front-endu.
  5. Front-end předá požadavek back-endu.
  6. Po zpracování požadavku back-end odešle odpověď front-endové komponentě.
  7. Front-end rozšíří odpověď zpět do klienta.
  8. 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:

Diagram illustrating the flow of requests between components.

Jak vidíte z výše uvedeného diagramu, během nasazení rozšíření Azure Machine Učení 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í

Azure Machine Učení směrovač odvozování zpracovává automatické škálování pro všechna nasazení modelu 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 Učení, 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 Učení ve výchozím nastavení vytvoří 3 nebo 1 azureml-fe instance na cluster.
    • Tento počet instancí závisí na konfiguraci inferenceRouterHAslužby Azure Machine Učení entension.
    • Zvýšený počet instancí nelze zachovat, protože se po upgradu rozšíření přepíše nakonfigurovanou hodnotou.
  • 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 Učení. 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.

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

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 Učení 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

Připojení požadavky na spolehlivost 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í do Služby Azure Storage ke 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.

Další kroky