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

Azure Blob Storage
Azure Container Registry
Azure DevOps
Azure Machine Learning
Azure Pipelines

Tato referenční architektura ukazuje, jak implementovat kontinuální integraci (CI), průběžné doručování (CD) a kanál opětovného trénování pro aplikaci AI pomocí Azure DevOps a Azure Machine Učení. Ř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é buildové systémy, jako je Jenkins nebo Travis.

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

Architektura

Diagram of the Machine Learning DevOps architecture.

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

Workflow

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

Azure Pipelines. Tento systém sestavení a testování 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 Učení 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 Učení Python SDK k vytvoření pracovního prostoru, výpočetních prostředků, kanálu strojového učení a image bodování. Pracovní prostor Azure Machine Učení poskytuje prostor, ve kterém můžete experimentovat, trénovat a nasazovat modely strojového učení.

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

Kanály Azure Machine Učení poskytují opakovaně použitelné pracovní postupy strojového učení, které je možné opakovaně používat v různých scénářích. Trénování, vyhodnocení modelu, registrace modelu a vytvoření image probíhají v různých krocích v těchto kanálech 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. Bodovací skript Pythonu je zabalený jako image Dockeru a verze v registru.

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

Azure Kubernetes Service. Po důkladném otestování image webové služby pro hodnocení v prostředí pro kontrolu kvality se nasadí do produkčního prostředí ve spravovaném clusteru Kubernetes.

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

Kanál MLOps

Toto řešení ukazuje komplexní automatizaci různých fází projektu AI pomocí nástrojů, které už jsou pro softwarové inženýry známé. Problém strojového učení je jednoduchý, abyste se zaměřili na kanál DevOps. Řešení používá datovou sadu scikit-learn diabetes a vytváří model lineární regrese ridge k predikci pravděpodobnosti cukrovky.

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

  • Kanál buildu Sestaví kód a spustí sadu testů.
  • Kanál opětovného natrénování Model znovu natrénuje podle plánu nebo když budou k dispozici nová data.
  • Kanál verze Zprovozní image bodování 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 sestavení

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 si tento test pro jiné 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 testu 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žitá k trénování modelů strojového učení, ale toto se v tomto článku nezabývá. Další informace o architektuře a osvědčených postupech pro CI/CD kanálu pro příjem dat najdete v DevOps pro kanál příjmu dat.

Při nastavování infrastruktury pro službu Azure Machine Učení a sady Python SDK dochází k následujícím jednorázovým úlohám:

  • Vytvořte pracovní prostor, který hostuje všechny prostředky související se službou Azure Machine Učení.
  • Vytvořte výpočetní prostředky, které spouští trénovací úlohu.
  • Vytvořte kanál strojového učení s aktualizovaným trénovacím skriptem.
  • Publikujte kanál strojového učení jako koncový bod REST pro orchestraci pracovního postupu trénování. Další část popisuje tento krok.

Kanál opětovného natrénování

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 se zabývá následujícími kroky:

  • Trénování modelu Trénovací skript Pythonu se spustí na počítači Azure Učení výpočetním prostředku a získá nový soubor modelu, který je uložený v historii spuštění. Vzhledem k tomu, že trénování je nejvýraznější úlohou náročné na výpočetní výkon v projektu AI, řešení používá službu Azure Machine Učení Compute.

  • Vyhodnocení modelu Jednoduchý test vyhodnocení porovná nový model s existujícím modelem. Pouze když je nový model lepší, zvýší se jeho úroveň. V opačném případě není model zaregistrovaný a kanál se zruší.

  • Zaregistrujte model. 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 image bodování a bezpečně ji propagovat v různých prostředích. Tento kanál je rozdělený do dvou prostředí, kontroly kvality a produkce:

Prostředí pro kontrolu kvality

  • Trigger artefaktu modelu Kanály verze se aktivují při každém zpřístupnění nového artefaktu. Nový model zaregistrovaný ve službě Azure Machine Učení Správa modelů se považuje za artefakt verze. V tomto případě se aktivuje kanál pro každý nový model, který je zaregistrovaný.

  • Vytvořte bodovací obrázek. Zaregistrovaný model se zabalí společně s bodovacím skriptem 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.

  • Nasaďte je ve službě Container Instances. Tato služba slouží k vytvoření neprodukčního prostředí. Tady se nasadí také bodovací image, která se většinou používá k testování. Container Instances nabízí snadný a rychlý způsob, jak otestovat image Dockeru.

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

Produkční prostředí

  • Nasazení ve službě Azure Kubernetes Service Tato služba se používá k nasazení bodovací 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.

Důležité informace

Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete 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 navždy na agentech v místním prostředí (privátní agenti). U agentů hostovaných Microsoftem 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ě můžete 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 špičku

Kanál verze publikuje webovou službu vyhodnocování v reálném čase. Pro usnadnění práce se provádí vydání prostředí pro kontrolu kvality pomocí služby Container Instances, ale můžete použít jiný cluster Kubernetes spuštěný v přípravném prostředí pro kontrolu kvality a přípravy.

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

Vertikálně navyšte a dolů kanál přetrénování v závislosti na počtu uzlů ve vašem prostředku Azure Machine Učení Compute a použijte možnost automatického škálování ke správě clusteru. Tato architektura používá procesory. V případě úloh hlubokého učení jsou grafické procesory lepší volbou a podporují se službou Azure Machine Učení Compute.

Správa

  • Monitorujte úlohu opětovného vyučování. Kanály strojového učení orchestrují přetrénování napříč clustery počítačů a poskytují snadný způsob jejich monitorování. Použijte uživatelské rozhraní azure machine Učení a prohlédněte si protokoly v části Kanály. Tyto protokoly se také zapisují do objektu blob a dají se tam číst i pomocí nástrojů, jako je Průzkumník služby Azure Storage.

  • Protokolování. Azure Machine Učení poskytuje snadný způsob, jak se přihlásit v každém kroku životního cyklu strojového učení. Protokoly se ukládají do kontejneru objektů blob. Další informace najdete v tématu Povolení protokolování ve službě Azure Machine Učení. Pro rozsáhlejší monitorování nakonfigurujte Přehledy aplikace tak, aby používaly protokoly.

  • Zabezpečení. Všechny tajné kódy a přihlašovací údaje se ukládají ve službě Azure Key Vault a k nim se přistupuje ve službě Azure Pipelines pomocí skupin proměnných.

Optimalizace nákladů

Optimalizace nákladů se zabývá způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. 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. Pro větší týmy si kupte plán na základě počtu uživatelů.

Výpočet je největší nákladový faktor v této architektuře a jeho náklady se liší v závislosti na případu použití. Tato architektura používá službu Azure Machine Učení Compute, ale jsou k dispozici i další možnosti. Azure Machine Učení nepřidává žádný příplatek nad náklady 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 při použití mohl vertikálně snížit kapacitu na 0 uzlů a neúčtovaly se žá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í (nízká priorita nebo vyhrazená hodnota). Náklady na Učení počítače a další služby můžete odhadnout pomocí cenové kalkulačky Azure.

Nasazení tohoto scénáře

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

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autor:

  • Praneet Singh Solanki | Vedoucí softwarový inženýr

Další kroky