Ladění hyperparametrů pro modely strojového učení v Pythonu

Blob Storage
Container Registry
Machine Learning
Storage
Data Science Virtual Machine

Tato referenční architektura ukazuje doporučené postupy pro ladění hyperparametrů modelů Pythonu. Hyperparametry jsou nastavitelné parametry, které umožňují řídit proces trénování modelu. Azure Machine Learning umožňuje automatizovat ladění hyperparametrů a spouštět experimenty paralelně a efektivně optimalizovat hyperparametry.

V této referenční architektuře jsou popsané dva scénáře: optimalizace hyperparametrů modelů scikit-learn a modelů hlubokého učení s grafickými procesory. Dvě referenční implementace pro tuto architekturu jsou k dispozici na GitHub, jedna pro trénování modelů scikit-learn na modelech Azure a jedna pro trénování modelů hlubokého učení v modelech Azure.

Architecture diagram: tuning hyperparameters for Python models on Azure

Scénář: Párování nejčastějších dotazů ke službě Stack Overflow

Problém vyřešený se shoduje s nejčastějšími dotazy. Tento scénář používá podmnožinu dat otázek Stack Overflow, která obsahují původní otázky označené jako JavaScript, jejich duplicitní otázky a odpovědi. Naladí kanál scikit-learn, který předpovídá pravděpodobnost, že duplicitní otázka odpovídá jedné z původních otázek.

Zpracování v tomto scénáři kanálu Azure Machine Learning zahrnuje následující kroky:

  1. Trénovací skript Pythonu se odešle do Azure Machine Learning.

  2. Skript běží v kontejnerech Dockeru, které se vytvářejí na každém uzlu.

  3. Tento skript načte trénovací a testovací data z Azure Storage.

  4. Skript trénuje model z trénovacích dat pomocí jeho kombinace trénovacích parametrů.

  5. Výkon modelu se vyhodnotí na testovacích datech a zapíše se do Azure Storage.

  6. Nejlepší model je zaregistrovaný v Azure Machine Learning.

Scénář: Detekce výpadku zásob

Tento scénář ukazuje, jak vyladit model Masky detekce objektů RCNN, který je možné nasadit jako webovou službu, aby poskytoval předpovědi prázdných prostorů na regálech obchodu. Obrázky podobné regálům maloobchodního obchodu naplněné produkty se používají k predikci prázdných prostorů, které pomáhají odhalit produkty na skladě tím, že se mohou tyto předpovědi vzít s jinými zdroji informací, jako jsou planogramy a databáze. V tomto scénáři je pokryta pouze prázdná předpověď místa. Použitá datová sada se distribuuje pod licencí CC-BY 4.0 .

Zpracování v tomto scénáři zahrnuje následující kroky:

  1. Trénovací skript Pythonu se odešle do Azure Machine Learning.

  2. Skript běží v kontejnerech Dockeru vytvořených na každém uzlu tak, že natáhne vlastní image uloženou na Azure Container Registry.

  3. Skript trénuje model z trénovacích dat uložených v Azure Storage pomocí jeho kombinace trénovacích parametrů.

  4. Výkon modelu se vyhodnotí na testovacích datech a zapíše se do Azure Storage.

  5. Nejlepší model je zaregistrovaný v Azure Machine Learning.

Další aspekty distribuovaného trénování modelů hlubokého učení s grafickými procesory najdete v tématu Distribuované trénování modelů hlubokého učení v Azure.

Architektura

Tato architektura se skládá z několika cloudových služeb Azure, které škáluje prostředky podle potřeby. Služby a jejich role v tomto řešení jsou popsané níže.

Microsoft Data Science Virtual Machine (DSVM) je image virtuálního počítače nakonfigurovaná pomocí nástrojů používaných pro analýzu dat a strojové učení. K dispozici jsou verze Windows Serveru i Linuxu. Tato referenční implementace používá edice DSVM dsVM v Ubuntu.

Azure Machine Learning slouží k trénování, nasazování, automatizaci a správě modelů strojového učení v cloudovém měřítku. Používá se v této architektuře ke správě přidělení a používání prostředků Azure popsaných níže.

Azure Machine Learning Compute je prostředek používaný k trénování a testování modelů strojového učení a umělé inteligence ve velkém měřítku v Azure. Cílem výpočetních prostředků v tomto scénáři je cluster uzlů, které jsou přiděleny na vyžádání na základě možnosti automatického škálování. Každý uzel je virtuální počítač, který spouští trénovací úlohu pro konkrétní sadu hyperparametrů .

Azure Container Registry ukládá image pro všechny typy nasazení kontejnerů Dockeru. Tyto kontejnery se vytvářejí na každém uzlu a používají se ke spuštění trénovacího skriptu Pythonu. Image použitá v clusteru Machine Learning Compute se vytvoří Machine Learning v místních poznámkových blocích pro ladění hyperparametrů a pak se odešle do služby Container Registry.

Azure Blob Storage přijímá trénovací a testovací datové sady z Machine Learning, které používá trénovací skript Pythonu. Storage se připojí jako virtuální jednotka ke každému uzlu clusteru Machine Learning Compute.

Otázky výkonu

Každá sada hyperparametrů běží na jednom uzlu Machine Learning cílového výpočetního objektu. Pro scénář 1 je každý uzel virtuální počítač úrovně Standard D4 v2, který má čtyři jádra. Tento scénář používá klasifikátor LightGBM pro strojové učení, architekturu pro zvýšení přechodu. Tento software může běžet na všech čtyřech jádrech současně, což zrychluje každé spuštění faktorem až čtyři. Tímto způsobem trvá celé ladění hyperparametrů až jednu čtvrtinu času, než by to trvalo, kdyby bylo spuštěno v cíli Machine Learning Compute na základě virtuálních počítačů Standard D1 v2, které mají pouze jedno jádro. Pro scénář 2 je každý uzel standard NC6 s jedním GPU a každý spuštění ladění hyperparametrů bude používat jeden GPU na každém uzlu.

Maximální počet Machine Learning výpočetních uzlů ovlivňuje celkovou dobu běhu. Doporučený minimální počet uzlů je nula. Při tomto nastavení zahrnuje doba, kterou trvá spuštění úlohy, několik minut pro automatické škálování aspoň jednoho uzlu do clusteru. Pokud se ladění hyperparametrů spustí krátkou dobu, vertikální navýšení kapacity úlohy se ale přidá k režii. Například úloha může běžet za méně než pět minut, ale vertikální navýšení kapacity na jeden uzel může trvat dalších pět minut. V takovém případě nastavení minimálního na jeden uzel ušetří čas, ale přidá se k nákladům.

Důležité informace o monitorování a protokolování

Odešlete konfiguraci spuštění HyperDrivu , která vrátí objekt Spustit, který můžete použít k monitorování průběhu spuštění. Sledujte průběh pomocí widgetu RunDetails Jupyter nebo pomocí Azure Portal.

Widget RunDetails Jupyter

Pomocí objektu Spustit s widgetem RunDetails Jupyter můžete pohodlně monitorovat průběh řízení front a při spouštění podřízených úloh. Zobrazuje také hodnoty primární statistiky, které se protokolují v reálném čase.

portál Azure

Vytiskněte objekt Spustit a zobrazte odkaz na stránku spuštění v Azure Portal takto:

Run object used to display a link to the run information in Azure portal

Na této stránce můžete monitorovat stav spuštění a jeho podřízených spuštění. Každé podřízené spuštění má protokol ovladačů obsahující výstup trénovacího skriptu, který se spustil.

Důležité informace o nákladech

Náklady na spuštění ladění hyperparametrů závisí lineárně na volbě velikosti Machine Learning výpočetních virtuálních počítačů, jestli se používají uzly s nízkou prioritou a maximální počet uzlů povolených v clusteru.

Průběžné náklady, pokud se cluster nepoužívá, závisí na minimálním počtu uzlů požadovaných clusterem. Při automatickém škálování clusteru systém automaticky přidává uzly až k povolenému maximálnímu počtu úloh. Uzly se odeberou až na požadované minimum, pokud už nejsou potřeba. Pokud může cluster automaticky škálovat až na nula uzlů, nebude nic stát, když se nepoužívá.

Další informace o Azure Machine Learning a nákladech najdete v tématu Plánování správy nákladů pro Azure Machine Learning.

Důležité informace o zabezpečení

Omezení přístupu k Azure Blob Storage

Tato architektura používá klíče účtu úložiště pro přístup k úložišti objektů blob. Pokud chcete mít další kontrolu a ochranu, zvažte místo toho použití sdíleného přístupového podpisu (SAS). Tím se udělí omezený přístup k objektům v úložišti, aniž byste museli pevně zakódovat klíče účtu nebo je uložit ve formátu prostého textu. Použití SAS také pomáhá zajistit, aby účet úložiště měl správné zásady správného řízení a že přístup je udělen pouze lidem, kteří ho mají mít.

V případě scénářů s citlivějšími daty se ujistěte, že jsou chráněné všechny klíče úložiště, protože tyto klíče udělují úplný přístup ke všem vstupním a výstupním datům z úlohy.

Šifrování neaktivních uložených dat a pohybu

Ve scénářích, které používají citlivá data, zašifrujte neaktivní uložená data v úložišti. Pokaždé, když se data přesunou z jednoho umístění na další, pomocí protokolu TLS (Transport Layer Security) zabezpečte přenos dat. Další informace najdete v průvodci zabezpečením Azure Storage.

Zabezpečení dat ve virtuální síti

V případě produkčních nasazení zvažte nasazení clusteru do podsítě virtuální sítě, kterou zadáte. Podsíť umožňuje výpočetním uzlům v clusteru bezpečně komunikovat s jinými virtuálními počítači nebo s místní sítí. Koncové body služby s úložištěm objektů blob můžete také použít k udělení přístupu z virtuální sítě nebo použití systému souborů NFS s jedním uzlem uvnitř virtuální sítě s Azure Machine Learning.

Nasazení

Pokud chcete nasadit referenční implementaci pro tuto architekturu, postupujte podle kroků popsaných v GitHub úložišť:

Další kroky

Související články o Centru architektury Azure:

Další informace o školení: