Mnoho modelů strojového učení ve velkém měřítku s využitím služby Azure Machine Učení

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

Tento článek popisuje architekturu pro mnoho modelů, které používají strojové Učení a výpočetní clustery. Poskytuje skvělou všestrannost pro situace, které vyžadují komplexní nastavení.

Doprovodný článek, mnoho modelů strojového učení ve velkém měřítku v Azure pomocí Sparku, používá Apache Spark v Azure Databricks nebo Azure Synapse Analytics.

Architektura

Diagram architektury pro mnoho modelů strojového učení ve velkém měřítku v Azure se službou Azure Machine Učení

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

Workflow

  1. Příjem dat: Azure Data Factory načítá data ze zdrojové databáze a zkopíruje je do Azure Data Lake Storage. Pak ho uloží do počítače Učení úložiště dat jako tabulková datová sada.
  2. Kanál trénování modelu:
    1. Příprava dat: Trénovací kanál načítá data z úložiště dat a podle potřeby je dále transformuje. Také seskupí data do datových sad pro trénování modelů.
    2. Trénování modelů: Kanál trénuje modely pro všechny datové sady vytvořené během přípravy dat. Používá ParallelRunStep třídy k trénování více modelů paralelně. Po natrénování modelu ho kanál zaregistruje do počítače Učení spolu s testovacími metrikami.
  3. Kanál povýšení modelu:
    1. Vyhodnocení modelů: Kanál povýšení vyhodnocuje natrénované modely před jejich přesunutím do produkčního prostředí. Kanál DevOps použije obchodní logiku k určení, jestli model splňuje kritéria nasazení. Může například zkontrolovat, že přesnost testovacích dat je vyšší než 80 procent.
    2. Registrace modelů: Kanál povýšení zaregistruje modely, které jsou způsobilé k produkčnímu počítači Učení pracovnímu prostoru.
  4. Model kanálu dávkového bodování:
    1. Příprava dat: Kanál dávkového bodování načítá data z úložiště dat a podle potřeby dále transformuje každý soubor. Seskupí také data do datových sad pro bodování.
    2. Modely skóre: Kanál používá třídu ParallelRunStep k hodnocení více datových sad paralelně. Vyhledá vhodný model pro každou datovou sadu v Učení Machine tím, že vyhledá značky modelu. Pak stáhne model a použije ho k určení skóre datové sady. Používá třídu DataTransferStep k zápisu výsledků zpět do Azure Data Lake a pak předává předpovědi z Azure Data Lake do Synapse SQL pro obsluhu.
  5. Vyhodnocování v reálném čase: Azure Kubernetes Service (AKS) může v případě potřeby provádět vyhodnocování v reálném čase. Vzhledem k velkému počtu modelů by měly být načteny na vyžádání, nikoli předem načteny.
  6. Výsledky:
    1. Předpovědi: Kanál dávkového bodování ukládá předpovědi do Synapse SQL.
    2. Metriky: Power BI se připojí k předpovědím modelu, aby se načetly a agregují výsledky prezentace.

Komponenty

  • Azure Machine Učení je služba strojového učení na podnikové úrovni pro rychlé sestavování a nasazování modelů. Poskytuje uživatelům na všech úrovních dovedností návrháře s nízkým kódem, automatizovaném strojovém učení (AutoML) a hostovaným prostředím poznámkového bloku Jupyter, které podporuje různé prostředí IDEs.
  • Azure Databricks je cloudový nástroj pro přípravu dat založený na Apache Sparku. Může zpracovávat a transformovat obrovské množství dat a zkoumat je pomocí modelů strojového učení. Úlohy můžete psát v jazyce R, Python, Java, Scala a Spark SQL.
  • Azure Synapse Analytics je analytická služba, která sjednocuje integraci dat, skladování podnikových dat a analýzu velkých objemů dat.
  • Synapse SQL je distribuovaný dotazovací systém pro T-SQL, který umožňuje scénáře datových skladů a virtualizace dat a rozšiřuje T-SQL na řešení scénářů streamování a strojového učení. Nabízí bezserverové i vyhrazené modely prostředků.
  • Azure Data Lake Storage je široce škálovatelná a zabezpečená služba úložiště pro vysoce výkonné analytické úlohy.
  • Azure Kubernetes Service (AKS) je plně spravovaná služba Kubernetes pro nasazování a správu kontejnerizovaných aplikací. AKS zjednodušuje nasazení spravovaného clusteru AKS v Azure tím, že přesměruje provozní režii do Azure.
  • Azure DevOps je sada vývojářských služeb, které poskytují komplexní správu životního cyklu aplikací a infrastruktury. DevOps zahrnuje sledování práce, správu zdrojového kódu, sestavení a CI/CD, správu balíčků a testovací řešení.
  • Microsoft Power BI je kolekce softwarových služeb, aplikací a konektorů, které spolupracují na tom, aby nesouvisející zdroje dat přeměnily na koherentní, vizuálně imerzivní a interaktivní přehledy.

Alternativy

  • Zdrojová data můžou pocházet z jakékoli databáze.
  • K nasazení odvozování v reálném čase můžete použít spravovaný online koncový bod nebo AKS.

Podrobnosti scénáře

Mnoho problémů se strojovým učením je pro řešení jednoho modelu strojového učení příliš složité. Ať už se jedná o predikci prodeje pro každou položku každého obchodu, nebo modelování údržby stovek ropy, může model pro každou instanci zlepšit výsledky mnoha problémů se strojovým učením. Tento vzor mnoha modelů je společný v nejrůznějších odvětvích a má mnoho případů použití z reálného světa. S využitím služby Azure Machine Učení může kompletní kanál mnoha modelů zahrnovat trénování modelů, nasazení dávkového odvozování a nasazení v reálném čase.

Řešení mnoha modelů vyžaduje při trénování a vyhodnocování jinou datovou sadu pro každý model. Pokud má například úkol předpovědět prodeje pro každou položku každého obchodu, bude každá datová sada určená pro jedinečnou kombinaci úložiště položek.

Potenciální případy použití

  • Maloobchod: Řetězec obchodu s potravinami musí vytvořit samostatný model prognózy výnosů pro každou prodejnu a položku s celkovým počtem více než 1 000 modelů na obchod.
  • Dodavatelský řetězec: Pro každou kombinaci skladu a produktu potřebuje distribuční společnost optimalizovat inventář.
  • Restaurace: Řetězec s tisíci franšíz musí předpovědět poptávku po každém.

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.

  • Oddíly dat, které data rozdělují, jsou klíčem k implementaci modelu mnoha modelů. Pokud chcete pro každé úložiště jeden model, datová sada obsahuje všechna data pro jedno úložiště a existuje tolik datových sad, kolik existuje. Pokud chcete modelovat produkty podle obchodu, bude k dispozici datová sada pro každou kombinaci produktů a obchodů. V závislosti na formátu zdrojových dat může být snadné rozdělit data do oddílů nebo může vyžadovat rozsáhlé náhodné prohazování a transformaci dat. Spark a Synapse SQL se velmi dobře škálují pro takové úlohy, zatímco Knihovna pandas Pythonu ne, protože běží jenom na jednom uzlu a procesu.
  • Správa modelů: Kanály trénování a bodování identifikují a vyvolávají správný model pro každou datovou sadu. K tomu vypočítají značky, které charakterizují datovou sadu, a pak pomocí značek vyhledá odpovídající model. Značky identifikují klíč oddílu dat a verzi modelu a můžou také poskytovat další informace.
  • Volba správné architektury:
    • Spark je vhodný v případě, že váš trénovací kanál má složité požadavky na transformaci a seskupování dat. Poskytuje flexibilní techniky rozdělení a seskupování pro seskupení dat podle kombinací charakteristik, jako je obchod s produkty nebo umístění produktu. Výsledky je možné umístit do datového rámce Sparku pro použití v dalších krocích.
    • Když jsou trénovací a bodovací algoritmy strojového učení jednoduché, možná budete moct rozdělit data do oddílů s knihovnami, jako je scikit-learn. V takových případech možná nebudete potřebovat Spark, abyste se vyhnuli možným složitostem, ke kterým může dojít při instalaci Azure Synapse nebo Azure Databricks.
    • Když už jsou trénovací datové sady vytvořené , například jsou v samostatných souborech nebo v samostatných řádcích nebo sloupcích, nepotřebujete Spark pro složité transformace dat.
    • Řešení strojového Učení a výpočetních clusterů poskytuje skvělou všestrannost pro situace, které vyžadují komplexní nastavení. Můžete například použít vlastní kontejner Dockeru nebo stáhnout soubory nebo stáhnout předem natrénované modely. Hluboké učení pro počítačové zpracování obrazu a přirozeného jazyka (NLP) jsou příklady aplikací, které by mohly vyžadovat takovou všestrannost.
  • Trénování a bodování Sparku: Při použití architektury Sparku můžete k paralelnímu trénování a vyhodnocování použít rozhraní API funkce Spark pandas.
  • Samostatná úložiště modelů: Pokud chcete chránit nasazené modely, zvažte jejich uložení do vlastního úložiště, do kterého se kanály trénování a testování nedotknou.
  • ParallelRunStep – třída: Třída Python ParallelRunStep je výkonná možnost spouštění mnoha modelů trénování a odvozování. Data se dají rozdělit různými způsoby a pak použít skript strojového učení na prvky oddílu paralelně. Stejně jako u jiných forem trénování strojového Učení můžete zadat vlastní trénovací prostředí s přístupem k balíčkům PyPI (Python Package Index) nebo pokročilejší vlastní prostředí Dockeru pro konfigurace, které vyžadují více než standardní PyPI. Můžete si vybrat z mnoha procesorů a grafických procesorů.
  • Online odvozování: Pokud se kanál načte a ukládá do mezipaměti všechny modely na začátku, můžou modely vyčerpat paměť kontejneru. Proto načtěte modely na vyžádání v metodě spuštění, i když může mírně zvýšit latenci.

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ů.

Pokud chcete lépe porozumět nákladům na provoz tohoto scénáře v Azure, použijte cenovou kalkulačku. Dobrými počátečními předpoklady jsou:

  • Obslužné modely jsou natrénované každý den, aby byly aktuální.
  • U datové sady 40 milionů řádků s 10 tisíci kombinacemi úložiště a produktů trvá trénování v Azure Databricks pomocí clusteru zřízeného s 12 virtuálními počítači, které používají Ls16_v2 instance, přibližně 30 minut.
  • Dávkové vyhodnocování se stejnou sadou dat trvá přibližně 20 minut.
  • Pomocí nástroje Machine Učení můžete nasadit odvozování v reálném čase. V závislosti na svazku požadavku zvolte odpovídající typ virtuálního počítače a velikost clusteru.
  • Cluster AKS se podle potřeby automaticky škáluje, což vede k tomu, že v průměru jsou aktivní dva uzly za měsíc.

Pokud chcete zjistit, jak se ceny pro váš případ použití liší, změňte proměnné tak, aby odpovídaly očekávané velikosti dat a obsluhovaly požadavky na načtení. U větších nebo menších trénovacích dat zvětšete nebo zmenšete velikost clusteru Azure Databricks. Pokud chcete během obsluhy modelu zpracovat více souběžných uživatelů, zvyšte velikost clusteru AKS.

Přispěvatelé

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

Hlavní autor:

Další kroky