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 Learning. Řešení je postavené na datové sadě scikit-learn diabetes, ale je možné ho snadno přizpůsobit libovolnému scénáři AI a dalším oblíbeným systémům sestavení, jako je Jenkins neboEnz.
Referenční implementace této architektury je k dispozici na GitHub.

Architektura
Tato architektura se skládá z následujících komponent:
Azure Pipelines. Tento systém sestavení a testování je založený Azure DevOps a používá se pro kanály buildu a verze. Azure Pipelines tyto kanály rozdělí do logických kroků nazývaných ú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í Azure Machine Learning poskytuje prostor, ve kterém můžete experimentovat, trénovat a nasazovat modely 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 uzlů GPU a CPU. V tomto clusteru se spustí trénovací úloha.
Azure Machine Learning kanály 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 pro tento případ použití prochováte v různých krocích v těchto kanálech. Kanál se publikoval nebo aktualizoval na konci fáze sestavení a aktivuje se při příchodu nových dat.
Azure Blob Storage. Kontejnery objektů blob se používají k ukládání protokolů ze služby vyhodnocová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 přetrénování modelu.
Azure Container Registry. Hodnoticí skript Pythonu se zabalí jako image Dockeru a v registru se zabalí jako verze.
Azure Container Instances. V rámci kanálu verze je prostředí pro kontroly kvality a pracovní prostředí namáhána nasazením hodnoticí image webové služby do služby Container Instances, která poskytuje snadný a bez serverů způsob spuštění kontejneru.
Azure Kubernetes Service. Jakmile je bodovací image webové služby důkladně otestovaná v prostředí kontroly kvality, nasadí se do produkčního prostředí ve spravovaném clusteru Kubernetes.
Azure Application Přehledy. Tato monitorovací služba se používá ke zjištění anomálií výkonu.
Kanál MLOps
Toto řešení ukazuje koncovou 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 chcete zaměřit na DevOps kanálu. Řešení používá datovou sadu scikit-learn diabetes a vytvoří lineární regresní model pro předpověď 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. Model se znovu trénuje podle plánu nebo podle toho, kdy jsou k dispozici nová data.
- Kanál verze. Zprovozní bodovací 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 zajistí, že kód funguje, má dostatečné 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. Tento test můžete přizpůsobit pro jiné případy použití a spustit ho jako samostatný kanál pro sanitu dat, který se aktivuje při doručení nových dat. Přesuňte například testovací úlohu dat do kanálu pro příjem dat, abyste ho mohli otestovat dříve.
Poznámka
Měli byste zvážit povolení DevOps pro data používaná k trénování modelů strojového učení, ale tento článek se nezadá. 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 Azure Machine Learning a Python SDK dochází k následujícím úlohám:
- Vytvořte pracovní prostor, který je hostitelem Azure Machine Learning prostředků souvisejících s prostředky.
- Vytvořte výpočetní prostředky, které spustí 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í. Tento krok je popsán v další části.
Opětovné tré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énovat model. Trénovací skript Pythonu se spustí v prostředku Azure Machine Learning Compute a získáte nový soubor modelu, který je uložený v historii spuštění. Vzhledem k tomu, že trénování je v projektu AI nejvíce náročné na výpočetní výkon, řešení používá Azure Machine Learning Compute.
Vyhodnoťte model. Jednoduchý test vyhodnocení porovná nový model s existujícím modelem. Povýší se jen v případě, že je nový model lepší. Jinak se model nezaregistruje a kanál se zruší.
Registrace modelu. Přetrénovaný model je zaregistrovaný v registru Azure ML Model. Tato služba poskytuje pro modely kontrolu verzí spolu se značkami metadat, aby je bylo možné snadno reprodukovat.
Kanál verze
Tento kanál ukazuje, jak zprovoznit bodovací image a bezpečně ji povýšit napříč různými prostředími. Tento kanál je rozdělený do dvou prostředí: QA a production:
Prostředí kontroly kvality
Trigger artefaktu modelu. Kanály verze se spustí pokaždé, když je k dispozici nový artefakt. Nový model registrovaný k Azure Machine Learning Správa modelů se zachází jako s artefaktem verze. V takovém případě se pro každý nový model aktivuje kanál.
Vytvořte bodovací image. Zaregistrovaný model se zabalí společně s hodnoticí skriptem a závislostmi Pythonu (souborConda 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í neprodukního prostředí. Tady se také nasadí bodovací image, která se většinou používá pro testování. Container Instances poskytuje snadný a rychlý způsob, jak otestovat image Dockeru.
Otestujte webovou službu. Jednoduchý test rozhraní API zajišťuje ú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 zajišťuje úspěšné nasazení image.
Aspekty zabezpečení
Kanál buildu v Azure DevOps lze škálovat pro aplikace libovolné velikosti. Kanály buildu mají maximální časový limit, který se liší v závislosti na agentovi, na které běží. Sestavení mohou běžet navždy na agentech v vlastním hostování (privátních agentech). U agentů hostovaných Microsoftem pro veřejný projekt může 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 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 provést 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í dlouhotrých testů mimo pracovní dobu
Kanál verze publikuje webovou službu vyhodnocování v reálném čase. Verze prostředí pro kontroly kvality se pro usnadnění Container Instances pomocí nástroje , ale můžete použít jiný cluster Kubernetes spuštěný v prostředí pro kontroly kvality a přípravu.
Škálování produkčního prostředí podle velikosti vašeho Azure Kubernetes Service clusteru. Velikost clusteru závisí na zatížení, které očekáváte u nasazené bodovací webové služby. Pro architektury bodování v reálném čase je propustnost klíčovou metrikou optimalizace. V případě scénářů bez hloubkového učení by měl být procesor dostatečný pro zvládnutí zatížení. V případě úloh hlubokého učení je ale rychlost kritickým bodem, poskytují grafické procesory 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 vs. procesory pro nasazení modelů hlubokého učení.
Škálování kanálu opětovného trénování nahoru a dolů v závislosti na počtu uzlů ve výpočetním prostředku Azure Machine Learning a použití možnosti automatického škálování ke správě clusteru. Tato architektura používá procesory. Pro úlohy hlubokého učení jsou grafické procesory lepší volbou a podporují je Azure Machine Learning Compute.
Aspekty správy
Monitorujte úlohu opětovného trénování. Kanály strojového učení orchestrují opětovné trénování napříč clusterem počítačů a poskytují snadný způsob, jak je monitorovat. Pomocí Azure Machine Learning uživatelského rozhraní a v části kanály vyhledejte protokoly. Alternativně se tyto protokoly také zapisou do objektu blob a je možné je odtud číst i pomocí nástrojů, jako je Průzkumník služby Azure Storage.
Protokolování. Azure Machine Learning poskytuje snadný způsob, jak se přihlásit ke každému 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í v Azure Machine Learning. Pro bohatší monitorování nakonfigurujte aplikační Přehledy používat protokoly.
Zabezpečení. Všechny tajné kódy a přihlašovací údaje se ukládají v Azure Key Vault a přistupuje se Azure Pipelines pomocí skupin proměnných.
Důležité informace o nákladech
Azure DevOps je zdarma pro open source 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četní prostředky jsou v této architektuře největšími náklady a její náklady se liší v závislosti na případu použití. Tato architektura používá Azure Machine Learning Compute, ale jsou k dispozici další možnosti. Azure Machine Learning náklady na virtuální počítače, které váš výpočetní cluster zálohují, nepřidávají žádné poplatky. Nakonfigurujte výpočetní cluster tak, aby měl minimálně 0 uzlů, aby v případě, že se zrovna nevyučuje, mohl škálovat na 0 uzlů a nená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 služby a další služby Machine Learning odhadnout pomocí cenové kalkulačky Azure.
Nasazení řešení
Pokud chcete nasadit tuto referenční architekturu, postupujte podle kroků popsaných v Začínáme v GitHub.
Další kroky
- Chcete se dozvědět víc? Projděte si související studijní postup: Microsoft Learn Zahájení životního cyklu strojového učení pomocí MLOps