DevOps pro strojové učení

Dokončeno

DevOps a MLOps

DevOps se popisuje jako sjednocení lidí, procesů a produktů, které našim koncovým uživatelům umožňují průběžné doručování hodnot, a to společností Donovan Brown in What is DevOps? (Co je DevOps).< a1/>

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é vedou vývojáře při vytváření robustních a reprodukovatelných aplikací. Cílem použití principů DevOps je rychle poskytovat hodnotu koncovému uživateli.

Pokud chcete snadněji poskytovat hodnotu integrací modelů strojového učení do kanálů transformace dat nebo aplikací v reálném čase, můžete využít implementace principů DevOps. Učení o DevOps vám pomůže organizovat a automatizovat 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é koncovým uživatelům poskytují hodnotu.

MLOps overview of three processes

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é zodpovídá datový vědec. Datový vědec provede:

    • Průzkumná analýza dat (EDA)
    • Příprava atributů
    • Trénování a ladění modelů
  • Vývoj softwaru se týká vývoje softwaru, který zahrnuje:

    1. Plán: Definujte požadavky modelu a metriky výkonu.
    2. Vytvoření: 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 odkazuje na operace a zahrnuje:

    1. Verze: Nasaďte model do produkčního prostředí.
    2. Konfigurace: Standardizace konfigurací infrastruktury pomocí infrastruktury jako kódu (IaC).
    3. Monitorování: Sledujte metriky a zajistěte, aby model a infrastruktura fungovaly podle očekávání.

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

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 vytvoříte také reprodukovatelné modely, které jsou spolehlivé a konzistentní napříč prostředími.

Zejména pokud chcete model pravidelně v průběhu času vylepšit, automatizace umožňuje rychle provádět všechny nezbytné aktivity, aby se zajistilo, že model v produkčním prostředí je 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í.

Průběžná integrace

Průběžná integrace se zabývá aktivitami 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 kontinuální integrace zahrnovat:

  • Refaktoring průzkumného kódu v poznámkových blocích Jupyter do skriptů Pythonu nebo R
  • Linting to check for any programmatic or styleistic errors in the Python or R scripts. Zkontrolujte například, jestli řádek ve skriptu obsahuje méně než 80 znaků.
  • Testování částí pro kontrolu výkonu obsahu skriptů Zkontrolujte například, jestli model generuje přesné předpovědi testovací datové sady.

K testování lintování a jednotek můžete použít automatizační nástroje, 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é potřebujete k nasazení modelu do produkčního prostředí, pokud možno automatizaci co nejvíce.

Pokud chcete nasadit model do produkčního prostředí, budete ho nejdřív chtít 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šechno funguje podle očekávání.

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

Pokud chcete spolupracovat 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.

Zdrojový ovládací prvek

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

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

Poznámka:

Pokud možno neukládat trénovací data do úložiště. Místo toho se trénovací data ukládají v databázi nebo datovém jezeře a Azure Machine Učení 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 v úložišti GitHub.

Hostováním veškerého relevantního kódu v úložišti můžete snadno spolupracovat na kódu a sledovat všechny změny, které člen týmu provede. Každý člen může pracovat na vlastní verzi kódu. Uvidíte všechny předchozí změny a změny si můžete prohlédnout, než se potvrdí do hlavního úložiště.

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

Agilní plánování

Vzhledem k tomu, že chcete model rychle nasadit 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 izolujete práci 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 zlepší jakýkoli kód. Ať už se jedná o kód používaný pro zkoumání dat a modelů, nebo 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.

Aby se zabránilo příliš mnoho času na trénování modelu, může agilní plánování pomoci určit rozsah projektu a pomoci zajistit, aby všichni byli v souladu s kratšími výsledky.

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 bude váš tým používat infrastrukturu jako kód (IaC). Když vytrénujete a nasazujete modely v Azure, znamená to, že definujete všechny prostředky Azure potřebné v procesu v kódu a kód se uloží do úložiště.

Tip

Seznámení s DevOps prozkoumáním modulů Microsoft Learn na cestě transformace DevOps