DevOps pro strojové učení

Dokončeno

DevOps a MLOps

DevOps popisuje donovan Brown v tématu Co je DevOps? jako sjednocení lidí, procesů a produktů, které umožňuje nepřetržitě doručovat hodnotu koncovým uživatelům.

Abychom pochopili, jak se používá při práci s modely strojového učení, pojďme se podrobněji seznámit s některými základními principy DevOps.

DevOps je kombinace nástrojů a postupů, které vývojáře vedou při vytváření robustních a reprodukovatelných aplikací. Cílem použití principů DevOps je rychle poskytnout hodnotu koncovému uživateli.

Pokud chcete snadněji poskytovat hodnotu díky integraci modelů strojového učení do kanálů transformace dat nebo aplikací v reálném čase, bude pro vás implementace principů DevOps přínosná. Informace o DevOps vám pomůžou organizovat a automatizovat vaši práci.

Cílem operací strojového učení (MLOps) je vytváření, nasazování a monitorování robustních a reprodukovatelných modelů, které přinášejí hodnotu koncovému uživateli.

Přehled MLOps tří procesů

Existují tři procesy, které chceme kombinovat pokaždé, když mluvíme o operacích strojového učení (MLOps):

  • Ml zahrnuje všechny úlohy strojového učení, za které je datový vědec zodpovědný. Datový vědec provede:

    • Průzkumná analýza dat (EDA)
    • Příprava atributů
    • Trénování a ladění modelů
  • DEV označuje vývoj softwaru, který zahrnuje:

    1. Plán: Definujte požadavky modelu a metriky výkonu.
    2. Vytvořit: Vytvořte trénovací a bodovací skripty modelu.
    3. Ověření: Zkontrolujte kvalitu kódu a modelu.
    4. Balíček: Připravte se na nasazení přípravou řešení.
  • OPS označuje operace a zahrnuje:

    1. Vydání: Nasaďte model do produkčního prostředí.
    2. Konfigurace: Standardizujte konfigurace infrastruktury pomocí infrastruktury jako kódu (IaC).
    3. Monitorování: Sledujte metriky a ujistěte se, že model a infrastruktura fungují podle očekávání.

Pojďme si projít některé principy DevOps, které jsou pro MLOps nezbytné.

Principy DevOps

Jedním ze základních principů DevOps je automatizace. Automatizací úloh se snažíme rychleji nasazovat nové modely do produkčního prostředí. Prostřednictvím automatizace také vytvoříte reprodukovatelné modely, které budou spolehlivé a konzistentní napříč prostředími.

Zejména pokud chcete model pravidelně v průběhu času vylepšovat, automatizace vám umožní rychle provádět všechny potřebné činnosti, abyste zajistili, že model v produkčním prostředí bude vždy nejvýkonnější.

Klíčovým konceptem pro dosažení automatizace je CI/CD, což je zkratka pro kontinuální integraci a průběžné doručování.

Kontinuální integrace

Průběžná integrace zahrnuje aktivity vytváření a ověřování . Cílem je vytvořit kód a ověřit kvalitu kódu i modelu automatizovaným testováním.

S MLOps může průběžná integrace zahrnovat:

  • Refaktoring průzkumného kódu v poznámkových blocích Jupyter do skriptů Pythonu nebo R
  • Lintuje a kontroluje případné programové nebo stylistické chyby ve skriptech Pythonu nebo R. Zkontrolujte například, jestli řádek ve skriptu obsahuje méně než 80 znaků.
  • Testování jednotek pro kontrolu výkonu obsahu skriptů. Zkontrolujte například, jestli model generuje přesné předpovědi pro testovací datovou sadu.

K provádění lintování a testování jednotek můžete použít nástroje pro automatizaci, jako je Azure Pipelines v Azure DevOps, nebo GitHub Actions.

Průběžné doručování

Po ověření kvality kódu skriptů Pythonu nebo R použitých k trénování modelu budete chtít model přenést do produkčního prostředí. Průběžné doručování zahrnuje kroky, které je potřeba provést, abyste mohli model nasadit do produkčního prostředí, nejlépe co nejvíce automatizovat.

Pokud chcete model nasadit do produkčního prostředí, musíte ho nejdřív zabalit a nasadit do předprodukčního prostředí. Přípravou modelu v předprodukčním prostředí můžete zkontrolovat, jestli vše funguje podle očekávání.

Jakmile je nasazení modelu do přípravné fáze úspěšné a bez chyb, můžete schválit nasazení modelu do produkčního prostředí.

Ke spolupráci na skriptech Pythonu nebo R pro trénování modelu a veškerého potřebného kódu pro nasazení modelu do každého prostředí použijete správu zdrojového kódu.

Správa zdrojového kódu

Správa zdrojového kódu (nebo správa verzí) se nejčastěji dosahuje prací s úložištěm založeným na Gitu. Úložiště odkazuje na umístění, kam lze uložit všechny relevantní soubory softwarového projektu.

U projektů strojového učení budete pravděpodobně mít úložiště pro každý projekt, který máte. Úložiště bude mimo jiné zahrnovat poznámkové bloky Jupyter, trénovací skripty, hodnoticí skripty a definice kanálů.

Poznámka

Přednostně neuchováváte trénovací data do úložiště. Místo toho se trénovací data ukládají do databáze nebo datového jezera a Azure Machine Learning načítá data přímo ze zdroje dat pomocí úložišť dat.

Úložiště založená na Gitu jsou k dispozici pomocí Azure Repos v Azure DevOps nebo úložiště GitHub.

Díky hostování veškerého relevantního kódu v úložišti můžete snadno spolupracovat na kódu a sledovat změny provedené členem týmu. Každý člen může pracovat na své vlastní verzi kódu. Budete moct zobrazit všechny předchozí změny a před potvrzením do hlavního úložiště je můžete zkontrolovat.

Pokud chcete rozhodnout, kdo na které části projektu pracuje, doporučujeme použít agilní plánování.

Agilní plánování

Vzhledem k tomu, že chcete, aby se model rychle nasadil do produkčního prostředí, je agilní plánování ideální pro projekty strojového učení.

Agilní plánování znamená, že práci izolujete do sprintů. Sprinty jsou krátká časová období, během kterých chcete dosáhnout části cílů projektu.

Cílem je naplánovat sprinty, které rychle vylepší jakýkoli kód. Ať už se jedná o kód používaný ke zkoumání dat a modelů nebo k nasazení modelu do produkčního prostředí.

Trénování modelu strojového učení může být nikdy nekončící proces. Například jako datový vědec možná budete muset zlepšit výkon modelu kvůli posunu dat. Nebo budete muset model upravit tak, aby lépe odpovídal novým obchodním požadavkům.

Abyste se vyhnuli příliš mnoho času trénování modelu, může agilní plánování pomoct s vymezením rozsahu projektu a zajistit, aby se všichni sjednotili tím, že se dohodnou na krátkodobých výsledcích.

K plánování práce můžete použít nástroj, jako je Azure Boards v Azure DevOps nebo problémy s GitHubem.

Infrastruktura jako kód (IaC)

Použití principů DevOps na projekty strojového učení znamená, že chcete vytvářet robustní reprodukovatelná řešení. Jinými slovy, všechno, co děláte nebo vytváříte, byste měli být schopni opakovat a automatizovat.

K opakování a automatizaci infrastruktury potřebné k trénování a nasazení modelu použije váš tým infrastrukturu jako kód (IaC). Při trénování a nasazování modelů v Azure IaC znamená, že všechny prostředky Azure potřebné v procesu definujete v kódu a kód se uloží v úložišti.

Tip

Seznamte se blíže s DevOps tím, že prozkoumáte moduly Microsoft Learn na cestě k transformaci DevOps.