MLOps pro modely Python s využitím služby Azure Machine Learning

Blob Storage
Container Registry
Azure DevOps
Machine Learning
Pipelines

Tato referenční architektura ukazuje, jak implementovat kontinuální integraci (CI), průběžné doručování (CD) a kanál přetrénování pro aplikaci AI pomocí Azure DevOps a Azure Machine Learning. Řešení je postavené na datové sadě scikit-learn diabetes, ale dá se snadno přizpůsobit pro jakýkoli scénář AI a další oblíbené systémy sestavení, jako jsou Jenkins nebo Travis.

Referenční implementace pro tuto architekturu je k dispozici na GitHubu.

Architektura

Diagram architektury DevOps služby Machine Learning

Stáhněte si soubor aplikace Visio s touto architekturou.

Pracovní postup

Tato architektura se skládá z následujících služeb:

Azure Pipelines. Tento build a testovací systém je založený na Azure DevOps a používá se pro kanály buildu a verze. Azure Pipelines rozdělí tyto kanály do logických kroků označovaných jako úlohy. Například úloha Azure CLI usnadňuje práci s prostředky Azure.

Azure Machine Learning je cloudová služba pro trénování, vyhodnocování, nasazování a správu modelů strojového učení ve velkém měřítku. Tato architektura používá sadu Azure Machine Learning Python SDK k vytvoření pracovního prostoru, výpočetních prostředků, kanálu strojového učení a hodnoticí image. Pracovní prostor Azure Machine Learning poskytuje prostor pro experimentování, trénování a nasazování modelů strojového učení.

Azure Machine Learning Compute je cluster virtuálních počítačů na vyžádání s automatickým škálováním a možnostmi uzlu GPU a PROCESORu. V tomto clusteru se spustí trénovací úloha.

Kanály Služby Azure Machine Learning poskytují opakovaně použitelné pracovní postupy strojového učení, které je možné opakovaně používat ve všech scénářích. Trénování, vyhodnocení modelu, registrace modelu a vytvoření image probíhají v různých krocích v rámci těchto kanálů pro tento případ použití. Kanál se publikuje nebo aktualizuje na konci fáze sestavení a aktivuje se při přijetí nových dat.

Azure Blob Storage. Kontejnery objektů blob se používají k ukládání protokolů ze služby bodování. V tomto případě se shromažďují vstupní data i predikce modelu. Po určité transformaci je možné tyto protokoly použít k opětovnému trénování modelu.

Azure Container Registry. Hodnoticí skript Pythonu je zabalený jako image Dockeru a jeho verze je v registru.

Azure Container Instances. V rámci kanálu verze se qa a přípravné prostředí napodobuje nasazením image hodnoticí webové služby do Container Instances, což poskytuje snadný bezserverový způsob spuštění kontejneru.

Azure Kubernetes Service. Jakmile se image bodující webové služby důkladně otestuje v prostředí kontroly kvality, nasadí se do produkčního prostředí ve spravovaném clusteru Kubernetes.

Aplikace Azure Přehledy. Tato monitorovací služba se používá k detekci anomálií výkonu.

Kanál MLOps

Toto řešení ukazuje kompletní automatizaci různých fází projektu AI pomocí nástrojů, které už softwaroví inženýři znají. Problém strojového učení je jednoduchý, když se soustředíte na kanál DevOps. Řešení používá datovou sadu scikit-learn diabetes a sestaví model lineární regrese ridge k predikci pravděpodobnosti cukrovky. Podrobnosti najdete v tématu trénování modelů scikit-learn v Pythonu .

Toto řešení je založené na následujících třech kanálech:

  • Kanál buildu. Sestaví kód a spustí sadu testů.
  • Přetrénování kanálu. Přetrénuje model podle plánu nebo když budou k dispozici nová data.
  • Kanál verze. Zprovozní hodnocenou image a bezpečně ji propaguje v různých prostředích.

Následující části popisují každý z těchto kanálů.

Kanál buildu

Kanál CI se aktivuje při každém vrácení kódu se změnami. Po kompilaci kódu a spuštění sady testů se publikuje aktualizovaný kanál Azure Machine Learning. Kanál buildu se skládá z následujících úloh:

  • Kvalita kódu. Tyto testy zajišťují, že kód odpovídá standardům týmu.

  • Test jednotek. Tyto testy zajišťují, že kód funguje, má odpovídající pokrytí kódu a je stabilní.

  • Test dat. Tyto testy ověřují, že vzorky dat odpovídají očekávanému schématu a distribuci. Přizpůsobte tento test pro další případy použití a spusťte ho jako samostatný kanál sanity dat, který se aktivuje při příchodu nových dat. Přesuňte například úlohu testování dat do kanálu příjmu dat , abyste ji mohli otestovat dříve.

Poznámka

Měli byste zvážit povolení postupů DevOps pro data používaná k trénování modelů strojového učení, ale tento článek se tím nezabývá. Další informace o architektuře a osvědčených postupech pro CI/CD kanálu pro příjem dat najdete v tématu DevOps pro kanál pro příjem dat.

Při nastavování infrastruktury pro Azure Machine Learning a sadu Python SDK dochází k následujícím jednorázovým úlohám:

  • Vytvořte pracovní prostor, který je hostitelem všech prostředků souvisejících se službou Azure Machine Learning.
  • Vytvořte výpočetní prostředky, které spouští trénovací úlohu.
  • Pomocí aktualizovaného trénovacího skriptu vytvořte kanál strojového učení.
  • Publikujte kanál strojového učení jako koncový bod REST pro orchestraci pracovního postupu trénování. Tento krok je popsaný v další části.

Opětovné natrénování kanálu

Kanál strojového učení orchestruje proces opětovného trénování modelu asynchronním způsobem. Opětovné trénování je možné aktivovat podle plánu nebo když jsou k dispozici nová data tím, že voláte koncový bod REST publikovaného kanálu z předchozího kroku.

Tento kanál zahrnuje následující kroky:

  • Trénování modelu. Trénovací skript Pythonu se spustí na výpočetním prostředku služby Azure Machine Learning, aby se získal nový soubor modelu , který je uložený v historii spuštění. Vzhledem k tomu, že trénování je výpočetní úlohou v projektu AI s nejvyšší náročností, řešení používá výpočetní prostředky Azure Machine Learning.

  • Vyhodnocení modelu Jednoduchý zkušební test porovná nový model se stávajícím modelem. Teprve když je nový model lepší, bude povýšen. V opačném případě se model nezaregistruje a kanál se zruší.

  • Registrace modelu Přetrénovaný model je zaregistrovaný v registru modelů Azure ML. Tato služba poskytuje správu verzí pro modely spolu se značkami metadat, aby je bylo možné snadno reprodukovat.

Kanál verze

Tento kanál ukazuje, jak zprovoznit hodnocenou image a bezpečně ji propagovat v různých prostředích. Tento kanál je rozdělený na dvě prostředí: kontrolu kvality a produkční prostředí:

Prostředí kontroly kvality

  • Trigger artefaktu modelu. Kanály verze se aktivují pokaždé, když je k dispozici nový artefakt. Nový model zaregistrovaný ve správě modelů služby Azure Machine Learning se považuje za artefakt verze. V tomto případě se kanál aktivuje pro každou registraci nového modelu.

  • Vytvořte bodovací image. Zaregistrovaný model se zabalí společně s hodnoticího skriptu a závislostmi Pythonu (soubor Conda YAML) do zprovoznění image Dockeru. Automaticky se vytvoří verze image prostřednictvím služby Azure Container Registry.

  • Nasazení na Container Instances. Tato služba se používá k vytvoření neprodukčního prostředí. Nasadí se zde také bodovací image, která se většinou používá k testování. Container Instances poskytuje snadný a rychlý způsob testování image Dockeru.

  • Otestujte webovou službu. Jednoduchý test rozhraní API zajistí úspěšné nasazení image.

Produkční prostředí

  • Nasazení na Azure Kubernetes Service Tato služba se používá k nasazení hodnoticí image jako webové služby ve velkém měřítku v produkčním prostředí.

  • Otestujte webovou službu. Jednoduchý test rozhraní API zajistí úspěšné nasazení image.

Požadavky

Tyto aspekty implementují pilíře azure Well-Architected Framework, což je sada hlavních zásad, které lze použít ke zlepšení kvality úlohy. Další informace najdete v tématu Microsoft Azure Well-Architected Framework.

Škálovatelnost

Kanál buildu v Azure DevOps je možné škálovat pro aplikace libovolné velikosti. Kanály buildu mají maximální časový limit, který se liší v závislosti na agentech, na kterých běží. Sestavení můžou běžet na agentech v místním prostředí (privátní agenti). U agentů hostovaných Microsoft pro veřejný projekt můžou sestavení běžet šest hodin. U soukromých projektů je limit 30 minut.

Pokud chcete použít maximální časový limit, nastavte v souboru YAML služby Azure Pipelines následující vlastnost:

jobs:
- job: <job_name>
  timeoutInMinutes: 0

V ideálním případě nechte kanál buildu rychle dokončit a spouštět pouze testy jednotek a podmnožinu dalších testů. To vám umožní rychle ověřit změny a opravit je, pokud dojde k problémům. Spouštění dlouhotrvajících testů mimo pracovní dobu

Kanál verze publikuje webovou službu pro vyhodnocování v reálném čase. K uvolnění do prostředí pro kontrolu kvality se pro usnadnění práce používá Container Instances, ale můžete použít jiný cluster Kubernetes spuštěný v prostředí kontroly kvality nebo přípravném prostředí.

Škálujte produkční prostředí podle velikosti clusteru Azure Kubernetes Service. Velikost clusteru závisí na zatížení, které očekáváte u nasazené hodnoticí webové služby. Pro architektury bodování v reálném čase je propustnost klíčovou metrikou optimalizace. Pro scénáře jiného než hlubokého učení by procesor měl být dostatečný pro zvládnutí zatížení. V případě úloh hlubokého učení však gpu obecně poskytují lepší výkon v porovnání s procesory, pokud je rychlost kritickým bodem. Azure Kubernetes Service podporuje typy uzlů CPU i GPU, což je důvod, proč ho toto řešení používá k nasazení imagí. Další informace najdete v tématu Gpu a procesory pro nasazení modelů hlubokého učení.

Vertikálně navyšte a snižte kapacitu kanálu opětovného trénování v závislosti na počtu uzlů ve výpočetním prostředku služby Azure Machine Learning a ke správě clusteru použijte možnost automatického škálování . Tato architektura používá procesory. Pro úlohy hlubokého učení jsou lepší volbou gpu, které jsou podporované výpočetními prostředky služby Azure Machine Learning.

Správa

  • Monitorujte úlohu přetrénování. Kanály strojového učení orchestrují přetrénování v clusteru počítačů a poskytují snadný způsob, jak je monitorovat. Použijte uživatelské rozhraní služby Azure Machine Learning a v části pipelines (Kanály) vyhledejte protokoly. Alternativně se tyto protokoly také zapisují do objektu blob a dají se odtud číst také pomocí nástrojů, jako je Průzkumník služby Azure Storage.

  • Protokolování. Azure Machine Learning poskytuje snadný způsob protokolování v každém kroku životního cyklu strojového učení. Protokoly se ukládají v kontejneru objektů blob. Další informace najdete v tématu Povolení protokolování ve službě Azure Machine Learning. Pokud chcete podrobnější monitorování, nakonfigurujte Application Insights tak, aby používala protokoly.

  • Zabezpečení. Všechny tajné kódy a přihlašovací údaje jsou uložené v Azure Key Vault a jsou přístupné ve službě Azure Pipelines pomocí skupin proměnných.

Optimalizace nákladů

Optimalizace nákladů spočívá v hledání způsobů, jak snížit zbytečné výdaje a zlepšit provozní efektivitu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.

Azure DevOps je zdarma pro opensourcové projekty a malé projekty s až pěti uživateli. U větších týmů si kupte plán podle počtu uživatelů.

Výpočetní prostředky jsou v této architektuře největším nákladem a jejich náklady se liší v závislosti na případu použití. Tato architektura využívá výpočetní prostředky služby Azure Machine Learning, ale k dispozici jsou i další možnosti . Azure Machine Learning nepřidává žádné poplatky nad rámec nákladů na virtuální počítače, které zálohují výpočetní cluster. Nakonfigurujte výpočetní cluster tak, aby měl minimálně 0 uzlů, aby v případě, že se nepoužívá, mohl vertikálně snížit kapacitu na 0 uzlů a nemusel za něj být účtovány žádné náklady. Náklady na výpočetní prostředky závisí na typu uzlu, počtu uzlů a režimu zřizování (s nízkou prioritou nebo vyhrazeným). Náklady na Machine Learning a další služby můžete odhadnout pomocí cenové kalkulačky Azure.

Nasazení tohoto scénáře

Pokud chcete nasadit tuto referenční architekturu, postupujte podle kroků popsaných v průvodci Začínáme v úložišti GitHub.

Přispěvatelé

Tento článek spravuje Microsoft. Původně ji napsali následující přispěvatelé.

Hlavní autor:

Pokud chcete zobrazit neveřejné profily Služby LinkedIn, přihlaste se k LinkedInu.

Další kroky