Bodování modelů strojového učení v reálném čase v Pythonu

Container Registry
Kubernetes Service
Machine Learning
Monitor
Virtual Machines

Tato referenční architektura ukazuje, jak nasadit modely Pythonu jako webové služby, které umožňují předpovědi v reálném čase pomocí služby Azure Kubernetes. Modely strojového učení nasazené v Azure Kubernetes jsou vhodné pro vysoce škálovatelná produkční nasazení.

V tomto článku jsou uvedené dva scénáře: nasazení běžných modelů Pythonu a specifické požadavky na nasazení modelů pro obsáhlý Learning. V obou scénářích se používá zobrazená architektura. kromě toho jsou k dispozici dvě implementace odkazů pro tyto scénáře v GitHub, jeden pro běžné modely pythonu a jeden pro modely obsáhlého učení.

Diagram architektury pro bodování modelů Pythonu v reálném čase v Azure

Scénář: Stack Overflow Nejčastější dotazy

V tomto scénáři se dozvíte, jak nasadit Nejčastější dotazy, které odpovídají modelu, jako webovou službu, která poskytuje předpovědi pro uživatelské otázky. V tomto scénáři odkazuje "vstupní data" v diagramu architektury na textové řetězce obsahující uživatelské otázky, které se shodují se seznamem nejčastějších dotazů. Tento scénář je určený pro knihovnu scikit- Learning pro Python, ale dá se zobecnit do všech scénářů, které používají modely Pythonu k zajištění předpovědi v reálném čase.

V tomto scénáři se používá podmnožina dat dotazů Stack Overflow, která obsahují původní dotazy označené jako JavaScript, jejich duplicitní otázky a jejich odpovědi. Navlakuje scikit kanál pro předpověď pravděpodobnosti shody duplicitních otázek s každým z původních otázek. Tyto předpovědi se provádějí v reálném čase pomocí REST APIho koncového bodu.

Tok aplikací pro tuto architekturu je následující:

  1. Trained model je zaregistrován v registru modelu Machine Learning.
  2. Azure Machine Learning vytvoří obrázek docker, který obsahuje model a model bodování.
  3. Azure Machine Learning nasadí image hodnocení ve službě Azure Kubernetes Service (AKS) jako webovou službu.
  4. Klient odešle požadavek HTTP POST s kódovanými daty o otázce.
  5. webová služba vytvořená nástrojem Azure Machine Learning extrahuje dotaz z požadavku.
  6. Otázka se pošle do modelu kanálu scikit-učení pro featurization a bodování.
  7. Do klienta se vrátí odpovídající otázky související s nejčastějšími dotazy a jejich skóre.

Tady je snímek obrazovky ukázkové aplikace, která využívá výsledky:

Snímek obrazovky s příklady nejčastějších dotazů, které odpovídají aplikaci pomocí podmnožiny dat dotazů Stack Overflow.

Scénář: klasifikace imagí pomocí sítě konvoluční neuronové

V tomto scénáři se dozvíte, jak nasadit model konvoluční neuronové Network (CNN) jako webovou službu pro zajištění předpovědi na obrázcích. V tomto scénáři se "vstupní data" v diagramu architektury odkazují na soubory imagí. DNN jsou pro úlohy, jako je například klasifikace obrázků a detekce objektů, efektivní v počítačové vizi. Tento scénář je určen pro rozhraní TensorFlow, Keras (s TensorFlow back end) a PyTorch. Dá se ale zobecnit v jakémkoli scénáři, který využívá modely hloubkového učení k tomu, aby předpovědi v reálném čase.

V tomto scénáři se používá předem vyškolený model ResNet-152, který je vyškolený pro datovou sadu ImageNet-1 tisíc (1 000 Classes) k předpovídání, které kategorie (viz obrázek níže) obrázek patří do. Tyto předpovědi se provádějí v reálném čase pomocí REST APIho koncového bodu.

Příklad klasifikace image předpovědi pomocí modelu sítě konvoluční neuronové Network (CNN) jako webové služby.

Tok aplikací pro model hloubkového učení je následující:

  1. Model hloubkového učení je zaregistrován v registru modelu Machine Learning.
  2. Azure Machine Learning vytvoří image docker, včetně skriptu modelu a bodování.
  3. Azure Machine Learning nasadí image hodnocení ve službě Azure Kubernetes Service (AKS) jako webovou službu.
  4. Klient odešle požadavek HTTP POST s kódovanými obrazovými daty.
  5. webová služba vytvořená nástrojem Azure Machine Learning předzpracovává data imagí a odesílá je do modelu pro bodování.
  6. Předpokládané kategorie s jejich skóre se vrátí klientovi.

Architektura

Tato architektura se skládá z následujících komponent.

Azure Machine Learning je cloudová služba, která se používá ke školení, nasazení, automatizaci a správě modelů strojového učení, a to vše v široké škále poskytované cloudem. Používá se v této architektuře ke správě nasazení modelů a ověřování, směrování a vyrovnávání zatížení webové služby.

Virtuální počítač (VM). Tento virtuální počítač se zobrazuje jako příklad zařízení – místní nebo v cloudu – může poslat požadavek HTTP.

Služba Azure Kubernetes Service (AKS) se používá k nasazení aplikace do clusteru Kubernetes. AKS zjednodušuje nasazení a operace Kubernetes. Cluster se dá nakonfigurovat pomocí virtuálních počítačů jenom pro PROCESORy pro běžné modely Pythonu nebo pro virtuální počítače s podporou GPU pro modely obsáhlého učení.

Azure Container Registry povoluje úložiště imagí pro všechny typy nasazení kontejnerů Docker, včetně DC/OS, Docker Swarm a Kubernetes. Image hodnocení se nasazují jako kontejnery ve službě Azure Kubernetes a používají se ke spuštění skriptu bodování. bitová kopie, kterou tady použijete, se vytvoří pomocí Machine Learning z trained model a vyhodnocovacího skriptu a potom se do Azure Container Registry vloží.

Otázky výkonu

V případě architektur pro bodování v reálném čase se výkon propustnosti stal dominantním aspektem. Pro běžné modely Pythonu jsou CPU dostačující pro zpracování úloh.

U úloh s hloubkovým učením, pokud je rychlost kritická, GPU obvykle poskytují lepší výkon v porovnání s procesory. Aby se shodoval výkon GPU pomocí CPU, je obvykle potřeba cluster s velkým počtem procesorů.

Procesory pro tuto architekturu můžete používat v obou scénářích, ale u modelů pro obsáhlý Learning poskytuje grafické procesory hodnoty vyšší propustnosti v porovnání s clusterem s podobnými náklady. AKS podporuje použití GPU, což je jedna výhoda použití AKS pro tuto architekturu. Nasazení hloubkového učení obvykle používá modely s vysokým počtem parametrů. Použití GPU zabrání kolizí pro prostředky mezi modelem a webovou službou. Jedná se o problém v nasazeních jenom pro procesor.

Aspekty zabezpečení

U běžných modelů Pythonu, kde se cluster AKS zřizuje jenom pro procesory, se při horizontálním navýšení kapacity rozstojí při škálování počtu lusků. Cílem je plně využít cluster. Škálování závisí na požadavcích procesoru a omezeních definovaných pro lusky. Machine Learning prostřednictvím Kubernetes také podporuje automatické škálování v závislosti na využití procesoru nebo jiných metrikách. Automatické škálování clusteru může škálovat uzly agentů na základě probíhajících lusků.

V případě scénářů s hloubkovým učením s použitím virtuálních počítačů s podporou GPU jsou limity prostředků v luskech tak, aby jeden z nich byl přiřazen k jednomu procesoru pod. V závislosti na typu použitého virtuálního počítače musíte škálovat uzly clusteru tak, aby splňovaly požadavky na službu. To můžete snadno provést pomocí Azure CLI a kubectl.

Požadavky na monitorování a protokolování

Monitorování AKS

Pro lepší výkon AKS použijte funkci Azure monitor for Containers . Shromažďuje metriky paměti a procesoru z řadičů, uzlů a kontejnerů, které jsou k dispozici v Kubernetes prostřednictvím rozhraní API metrik.

Při nasazování aplikace monitorujte cluster AKS a ujistěte se, že funguje podle očekávání, zda jsou všechny uzly funkční a všechny lusky jsou spuštěné. I když můžete použít nástroj příkazového řádku kubectl k načtení stavu pod, Kubernetes zahrnuje také webový řídicí panel pro základní monitorování stavu a správy clusteru.

Snímek obrazovky řídicího panelu Kubernetes pro základní monitorování stavu clusteru a správy.

Celkový stav clusteru a uzlů zobrazíte tak, že přejdete do části uzly v řídicím panelu Kubernetes. Pokud je uzel neaktivní nebo se nezdařil, můžete zobrazit protokoly chyb z této stránky. Podobně můžete přejít na oddíly části lusky a nasazení , kde najdete informace o počtu lusků a stavu nasazení.

Protokoly AKS

AKS automaticky zaznamená všechny položky stdout/stderr do protokolů v obou clusterech. Použijte kubectl k zobrazení těchto a také událostí a protokolů na úrovni uzlu. Podrobnosti najdete v tématu Postup nasazení.

Použijte Azure monitor pro kontejnery ke shromáždění metrik a protokolů prostřednictvím kontejnerové verze Log Analytics agenta pro Linux, který je uložený v pracovním prostoru Log Analytics.

Důležité informace o zabezpečení

K získání přehledu o stavu zabezpečení vašich prostředků Azure použijte službu Azure Security Center. Security Center monitorovat potenciální problémy se zabezpečením a poskytuje ucelený přehled o stavu zabezpečení vašeho nasazení, i když nemonitoruje uzly agentů AKS. Služba Security Center se konfiguruje na základě předplatného Azure. Povolte shromažďování dat zabezpečení, jak je popsáno v tématu povolení Security Center ve vašich předplatných. Když je povolené shromažďování dat, Security Center automaticky prohledává všechny virtuální počítače vytvořené v rámci příslušného předplatného.

Operace. pokud se chcete přihlásit ke clusteru AKS pomocí ověřovacího tokenu Azure Active Directory (Azure AD), nakonfigurujte AKS pro ověřování uživatelůpomocí Azure AD. Správci clusteru můžou také nakonfigurovat řízení přístupu na základě role (Kubernetes RBAC) Kubernetes na základě identity uživatele nebo členství ve skupině adresáře.

Využijte Azure RBAC k řízení přístupu k prostředkům Azure, které nasadíte. Azure RBAC umožňuje přiřadit autorizační role členům týmu DevOps. Uživatel může být přiřazen k více rolím a můžete vytvořit vlastní role pro ještě přesnější oprávnění.

Protokol HTTPS. Z hlediska zabezpečení je nejvhodnější, aby aplikace vynutila požadavky HTTPS a přesměrování HTTP. K nasazení reverzního proxy serveru, který ukončuje protokol SSL a přesměrovává požadavky HTTP, použijte kontroler příchozího přenosu dat. Další informace najdete v tématu Vytvoření kontroleru příchozího přenosu HTTPS ve službě Azure Kubernetes Service (AKS).

Ověřování. Toto řešení neomezuje přístup ke koncovým bodům. Pokud chcete nasadit architekturu v podnikovém nastavení, zabezpečte koncové body prostřednictvím klíčů rozhraní API a přidejte do klientské aplikace nějakou formu ověřování uživatelů.

Container Registry. Toto řešení používá Azure Container Registry k uložení image Dockeru. Kód, na který aplikace závisí, a model, jsou obsaženy v tomto obrázku. Enterprise by aplikace měly používat privátní registr, který pomáhá chránit před spouštěním škodlivého kódu a pomáhá chránit informace uvnitř kontejneru před ohrožením.

Ochrana před DDoS. Zvažte povolení DDoS Protection Standard. I když je základní ochrana před DDoS povolená jako součást platformy Azure, DDoS Protection Standard poskytuje možnosti omezení rizik, které jsou vyladěné speciálně pro prostředky virtuální sítě Azure.

Protokolování: Před uložením dat protokolu používejte osvědčené postupy, jako je například čištění uživatelských hesel a dalších informací, které by se mohly použít k podvodům v oblasti zabezpečení.

Důležité informace o nákladech

K odhadu nákladů použijte cenovou kalkulačku Azure. Tady je několik dalších hledisek.

Další informace najdete v článku Microsoft Azure Well-Architected Frameworku Principy optimalizace nákladů.

Azure Machine Learning

V této referenční architektuře se velká část nákladů řídí výpočetními prostředky. Pro účely experimentování a školení je Azure Machine Learning zdarma. Účtují se vám jenom výpočetní prostředky používané webovou službou. K odhadu nákladů na výpočetní prostředky použijte cenovou kalkulačku Azure.

Azure Container Registry

Azure Container Registry nabízí základní, standardní a Premium. Zvolte úroveň v závislosti na úložišti, které potřebujete. Zvolte Premium, pokud potřebujete geografickou replikaci, nebo jste zvýšili propustnost pro docker pull napříč souběžnými uzly. Kromě toho se za síťové služby platí standardní poplatky. Další informace najdete na stránce s cenami službyAzure Container Registry.

Azure Kubernetes Service

Platíte jenom za instance virtuálních počítačů, úložiště a síťové prostředky, které váš cluster Kubernetes využívá. Pokud chcete odhadnout náklady na požadované prostředky, podívejte se na kalkulačku služby Container Services.

Další informace najdete v článku Microsoft Azure Well-Architected Frameworku Principy optimalizace nákladů.

Důležité informace o DevOps

V této architektuře jsou hodnoticí image vytvořeny modelem Machine Learning a nasazeny jako kontejnery v AKS. Celou architekturu můžete integrovat do kanálu verze pro správu a zprovoznění modelů. Tento kanál může zahrnovat úlohy DevOps pro testování v dobrém stavu dat, trénování modelu na různých cílových výpočetních objektech, správu verzí modelu, nasazení modelu jako webové služby v reálném čase, trénované nasazení do testovacích/produkčních prostředí, testování integrace a funkční testování. Zprovoznění strojového učení (MLOps) pro modely Pythonu s využitím referenční architektury ukazuje, jak implementovat kontinuální integraci (CI), průběžné doručování (CD) Azure Machine Learning kanál opětovného trénování pro aplikaci AI pomocí Azure DevOps a Azure Machine Learning.

Nasazení

Pokud chcete nasadit tuto referenční architekturu, postupujte podle kroků popsaných v GitHub úložiště:

Další kroky

Přečtěte si dokumentaci k produktu:

Vyzkoušejte tyto cesty Učení Microsoftu: