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í:
- Delta a Mosaic Streaming pro načtení dat
- Optuna pro paralelizaci trénování
- Definované funkce Pandas pro odvozování
Databricks Mosaic AI poskytuje předem vytvořenou infrastrukturu hlubokého učení s modulem Databricks Runtime pro strojové 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í složek Databricks Git, podpora automatizace, včetně úloh Databricks a rozhraní API, a integrovaného MLflow pro sledování modelů a nasazování modelů a obsluhu.
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.
Plánování GPU
Pokud chcete maximalizovat grafické procesory pro distribuované trénování a odvozování hlubokého učení, optimalizujte plánování GPU. Viz plánování GPU.
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 Streaming 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.
Databricks doporučuje pro načítání dat na platformě PyTorch nebo Puzzle Streaming, zejména pokud se týká distribuovaných úloh. Poskytnutá rozhraní API StreamingDataset a StreamingDataLoader pomáhají zjednodušit trénování velkých datových sad a současně maximalizovat záruky správnosti, výkon, flexibilitu a snadné použití v distribuovaném prostředí. Další podrobnosti najdete v tématu Načítání dat pomocí systému Mosaic Streaming .
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élogová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 Optuna.
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 TorchDistributor, DeepSpeed a Ray, které usnadňují přechod z jednoho uzlu na distribuované trénování.
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.
Optuna
Optuna poskytuje adaptivní ladění hyperparametrů pro strojové učení.
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 generující modely AI, jako je GPT-4 Od OpenAI, Anthropicův Claude 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ří:
- Azure Container Instance (ACI)
- Azure Kubernetes Service (AKS)
- MLflow se službou Azure Machine Learning
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.
- Když protokolujete model z Azure Databricks, MLflow automaticky poskytuje kód odvozování, který použije model jako uživatelem definované uživatelem pandas.
- Kanál odvozování můžete dále optimalizovat, zejména pro velké modely hlubokého učení. Příklad najdete v referenčním řešení pro ETL image.