Sdílet prostřednictvím


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 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 a rozhraní API Lakeflow a integrovaná MLflow pro sledování 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ž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 Mosaic 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 obrazové aplikace poskytuje příklad optimalizace ETL pro obrázky s využitím Delta Lake.

Databricks doporučuje Mosaic Streaming pro načítání dat na platformě PyTorch nebo Mosaic Composer, 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šechny tréninky 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í než 4 pracovní uzly, každý s 1 GPU. Důvodem je to, že distribuovaný výcvik způsobuje náklady na síťovou komunikaci.

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 běhových prostředích 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í

Metoda předčasného zastavení sleduje hodnotu metriky vypočítané na ověřovací sadě a zastaví trénink, 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 zpětného volání EarlyStopping pro TensorFlow/Keras a 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í.

Distributor pochodní

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énink pomocí TorchDistributor.

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 grafické karty optimalizované pro inferenci, 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 lze nasadit k dávkovému, streamovému nebo online odvozování.

Online služba

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 API základního modelu. 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 online predikce a rozhraní API pro vytváření kontejnerů Docker pro vlastní obslužná řešení.

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

Dávkové a streamovací inferování

Dávkové a streamovací skórování podporuje vysokou propustnost a nízké náklady s latencí jen v řádu minut. Další informace najdete v tématu Nasazení modelů pro dávkové odvozování a predikce.

  • 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. Náklady na načítání a přípravu dat se tímto způsobem rozloží mezi několik procesů č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í Spark Pandas UDFs můžete škálovat dávkové a streamované inference napříč clusterem.
    • Když protokolujete model z Azure Databricks, MLflow automaticky poskytuje kód odvozování, který použije model jako pandas UDF (uživatelem definovaná funkce).
    • 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.