Osvědčené postupy pro hluboké učení v Azure Databricks

Tento článek obsahuje tipy pro hluboké učení v Azure Databricks a informace o integrovaných nástrojích a knihovnách navržených pro optimalizaci úloh hlubokého učení, jako jsou například následující:

Databricks Machine Učení poskytuje předem vytvořenou infrastrukturu hlubokého učení s modulem Databricks Runtime pro machine Učení, která zahrnuje nejběžnější knihovny hlubokého učení, jako jsou TensorFlow, PyTorch a Keras. Má také integrovanou předem nakonfigurovanou podporu GPU, včetně ovladačů a podpůrných knihoven.

Databricks Runtime ML zahrnuje také všechny možnosti pracovního prostoru Azure Databricks, jako je vytváření a správa clusteru, správa knihoven a prostředí, správa kódu pomocí Databricks Repos, podpora automatizace, včetně úloh Databricks a rozhraní API, a integrovaného MLflow pro sledování modelů a nasazování modelů a obsluhu modelů.

Správa prostředků a prostředí

Azure Databricks vám pomůže přizpůsobit prostředí hlubokého učení a zajistit konzistentní prostředí napříč uživateli.

Přizpůsobení vývojového prostředí

Databricks Runtime umožňuje přizpůsobit vývojové prostředí na úrovni poznámkového bloku, clusteru a úloh.

  • Používejte knihovny Pythonu s oborem poznámkového bloku nebo knihovny jazyka R s oborem poznámkového bloku, abyste mohli použít konkrétní sadu nebo verzi knihoven, aniž by to ovlivnilo ostatní uživatele clusteru.
  • Nainstalujte knihovny na úrovni clusteru pro standardizaci verzí pro tým nebo projekt.
  • Nastavte úlohu Azure Databricks, abyste zajistili, že se opakovaný úkol spustí v konzistentním neměnném prostředí.

Použití zásad clusteru

Můžete vytvořit zásady clusteru, které provedou datové vědce správnými volbami, jako je použití clusteru s jedním uzlem pro vývoj a použití clusteru automatického škálování pro velké úlohy.

Zvažte gpu A100 pro úlohy hlubokého učení.

Gpu A100 jsou efektivní volbou pro mnoho úloh hlubokého učení, jako je trénování a ladění velkých jazykových modelů, zpracování přirozeného jazyka, detekce a klasifikace objektů a moduly doporučení.

  • Databricks podporuje gpu A100 ve všech cloudech. Úplný seznam podporovaných typů GPU najdete v tématu Podporované typy instancí.
  • Gpu A100 mají obvykle omezenou dostupnost. Požádejte svého poskytovatele cloudu o přidělení prostředků nebo zvažte rezervaci kapacity předem.

Osvědčené postupy načítání dat

Cloudové úložiště dat se obvykle neoptimalizuje pro vstupně-výstupní operace, což může být náročné pro modely hlubokého učení, které vyžadují velké datové sady. Databricks Runtime ML zahrnuje Delta Lake a Petastorm pro optimalizaci propustnosti dat pro aplikace hlubokého učení.

Databricks doporučuje používat tabulky Delta Lake pro úložiště dat. Delta Lake zjednodušuje ETL a umožňuje efektivní přístup k datům. Zvláště u imagí pomáhá Delta Lake optimalizovat příjem dat pro trénování i odvozování. Referenční řešení pro aplikace imagí poskytuje příklad optimalizace ETL pro image pomocí Delta Lake.

Petastorm poskytuje rozhraní API, která umožňují připravit data ve formátu parquet pro použití tensorFlow, Kerasem nebo PyTorchem. Rozhraní API SparkConverter poskytuje integraci datového rámce Sparku. Petastorm také poskytuje horizontální dělení dat pro distribuované zpracování. Podrobnosti najdete v tématu Načtení dat pomocí Petastorm .

Osvědčené postupy pro trénování modelů hlubokého učení

Databricks doporučuje používat Databricks Runtime pro strojové Učení a sledování MLflow a automatické protokolování pro všechna trénování modelu.

Začínáme s clusterem s jedním uzlem

Cluster GPU s jedním uzlem (pouze ovladač) je obvykle nejrychlejší a cenově nejvýhodnější pro vývoj modelů hlubokého učení. Jeden uzel se 4 GPU bude pravděpodobně rychlejší pro trénování hlubokého učení, že každý z nich má 4 pracovní uzly s 1 GPU. Důvodem je to, že distribuované trénování způsobuje režii síťové komunikace.

Cluster s jedním uzlem je dobrou volbou při rychlém iterativním vývoji a pro trénování modelů na malých až středně velkých datech. Pokud je vaše datová sada dostatečně velká, aby trénování na jednom počítači zpomalilo, zvažte přechod na více GPU a dokonce i distribuované výpočetní prostředky.

Monitorování procesu trénování pomocí TensorBoardu a metrik clusteru

TensorBoard je předinstalovaný v Databricks Runtime ML. Můžete ho použít v poznámkovém bloku nebo na samostatné kartě. Podrobnosti najdete v TensorBoardu .

Metriky clusteru jsou k dispozici ve všech modulech runtime Databricks. Můžete prozkoumat využití sítě, procesoru a paměti a zkontrolovat kritické body. Podrobnosti najdete v metrikách clusteru.

Optimalizace výkonu pro hluboké učení

V Databricks můžete a měli byste použít techniky optimalizace výkonu hlubokého učení.

Předčasné zastavení

Počáteční zastavení monitoruje hodnotu metriky vypočítané v sadě ověření a zastaví trénování, když se metrika přestane zlepšovat. Jedná se o lepší přístup než odhadování řady epoch, které je potřeba dokončit. Každá knihovna hlubokého učení poskytuje nativní rozhraní API pro předčasné zastavení; Podívejte se například na rozhraní API pro předčasné zastavení zpětného volání pro TensorFlow/Keras a pro PyTorch Lightning. Příklad poznámkového bloku najdete v ukázkovém poznámkovém bloku TensorFlow Keras.

Ladění velikosti dávky

Ladění velikosti dávky pomáhá optimalizovat využití GPU. Pokud je velikost dávky příliš malá, výpočty nemůžou plně používat možnosti GPU. Metriky clusteru můžete použít k zobrazení metrik GPU.

Upravte velikost dávky ve spojení s rychlostí učení. Dobrým pravidlem je, že když zvětšíte velikost dávky o n, zvýšíte rychlost učení o sqrt(n). Při ručním ladění zkuste změnit velikost dávky faktorem 2 nebo 0,5. Pak pokračujte v optimalizaci výkonu ručně nebo testováním různých hyperparametrů pomocí automatizovaného nástroje, jako je Hyperopt.

Přenos učení

S využitím transferového učení začnete s dříve natrénovaným modelem a podle potřeby ji upravíte pro vaši aplikaci. Přenosové učení může výrazně zkrátit dobu potřebnou k trénování a ladění nového modelu. Další informace a příklad najdete v tématu Featurization (Featurizace), kde najdete informace o přenosu .

Přechod na distribuované trénování

Databricks Runtime ML zahrnuje HorovodRunner, spark-tensorflow-distributor, TorchDistributor a Hyperopt, které usnadňují přechod z jednoho uzlu na distribuované trénování.

HorovodRunner

Horovod je opensourcový projekt, který škáluje trénování hlubokého učení na více GPU nebo distribuované výpočty. HorovodRunner, vytvořený Databricks a zahrnutý v Databricks Runtime ML, je obálka Horovod, která poskytuje kompatibilitu Sparku. Rozhraní API umožňuje škálovat kód s jedním uzlem s minimálními změnami. HorovodRunner pracuje s TensorFlow, Kerasem a PyTorchem.

spark-tensorflow-distributor

spark-tensorflow-distributor je opensourcový nativní balíček v TensorFlow pro distribuované trénování s TensorFlow v clusterech Spark. Podívejte se na ukázkový poznámkový blok.

TorchDistributor

TorchDistributor je opensourcový modul v PySparku, který usnadňuje distribuované trénování pomocí PyTorchu v clusterech Spark, které umožňuje spouštět trénovací úlohy PyTorch jako úlohy Sparku. Podívejte se na distribuované trénování pomocí torchDistributoru.

Hyperopt

Hyperopt poskytuje adaptivní ladění hyperparametrů pro strojové učení. S třídou SparkTrials můžete paralelně vyladit parametry pro modely hlubokého učení napříč clusterem.

Osvědčené postupy pro odvozování

Tato část obsahuje obecné tipy k používání modelů pro odvozování s Azure Databricks.

  • Pokud chcete minimalizovat náklady, zvažte procesory i procesory optimalizované pro odvozování, jako je nc T4_v3-series. Neexistuje žádné jasné doporučení, protože nejlepší volba závisí na velikosti modelu, dimenzích dat a dalších proměnných.

  • Použití MLflow ke zjednodušení nasazení a obsluhy modelů. MLflow může protokolovat libovolný model hlubokého učení, včetně vlastní logiky předběžného zpracování a následného zpracování. Modely v katalogu Unity nebo modely zaregistrované v registru modelů pracovního prostoru je možné nasadit pro dávkové, streamované nebo online odvozování.

Online obsluha

Nejlepší volbou pro obsluhu s nízkou latencí je online obsluha za rozhraním REST API. Databricks poskytuje službu Model Serving pro odvozování online. Obsluha modelů poskytuje jednotné rozhraní pro nasazení, řízení a dotazování modelů AI a podporuje obsluhu následujících služeb:

  • Vlastní modely. Jedná se o modely Pythonu zabalené ve formátu MLflow. Mezi příklady patří modely scikit-learn, XGBoost, PyTorch a Hugging Face Transformer.
  • Nejmodernější otevřené modely, které zpřístupnilo rozhraní API základních modelů. Tyto modely jsou kurátorované základní architektury modelů, které podporují optimalizované odvozování. Základní modely, jako je Llama-2-70B-chat, BGE-Large a Mistral-7B, jsou například k dispozici pro okamžité použití s cenami plateb za token . U úloh, které vyžadují záruky výkonu a jemně vyladěné varianty modelů, je můžete nasadit se zřízenou propustností.
  • Externí modely. Jedná se o modely hostované mimo Databricks. Například základní modely jako OpenAI GPT-4, Anthropic Clauda a další. Koncové body, které tyto modely obsluhují, se můžou centrálně řídit a zákazníci pro ně můžou stanovit omezení rychlosti a řízení přístupu.

MLflow také poskytuje rozhraní API pro nasazení do různých spravovaných služeb pro odvozování online a také rozhraní API pro vytváření kontejnerů Dockeru pro vlastní obslužná řešení.

Mezi další běžné spravované služby pro odvozování online patří:

Odvození služby Batch a streamování

Dávkové vyhodnocování a bodování streamování podporuje vysoké propustnosti a nízké náklady s hodnocením latencí až za minuty. Další informace najdete v tématu Použití MLflow k odvozování modelů.

  • Pokud očekáváte přístup k datům pro odvozování více než jednou, před spuštěním úlohy odvozování zvažte vytvoření úlohy předběžného zpracování dat do tabulky Delta Lake. Díky tomu se náklady na ingestování a přípravu dat šíří mezi několik čtení dat. Oddělení předběžného zpracování od odvozování také umožňuje vybrat pro každou úlohu jiný hardware pro optimalizaci nákladů a výkonu. Můžete například použít procesory pro ETL a GPU pro odvozování.
  • Pomocí uživatelem definovaných funkcí Spark Pandas můžete škálovat dávkové a streamované odvozovací funkce napříč clusterem.