Ajánlott eljárások az Azure Databricksben végzett mély tanuláshoz
Ez a cikk tippeket tartalmaz az Azure Databricks mély tanulásához, valamint a mélytanulási számítási feladatok optimalizálására tervezett beépített eszközökkel és kódtárokkal kapcsolatos információkat, például az alábbiakat:
- Delta és Petastorm adatok betöltéséhez
- Horovod és Hyperopt a betanítás párhuzamosításához
- Pandas UDF-ek következtetéshez
A Databricks Machine Tanulás előre összeállított mélytanulási infrastruktúrát biztosít a Databricks Runtime for Machine Tanulás használatával, amely tartalmazza a leggyakoribb mélytanulási kódtárakat, mint a TensorFlow, a PyTorch és a Keras. Beépített, előre konfigurált GPU-támogatással is rendelkezik, beleértve az illesztőprogramokat és a támogató kódtárakat.
A Databricks Runtime ML az Azure Databricks-munkaterület összes funkcióját tartalmazza, például a fürtök létrehozását és kezelését, a kódtár- és környezetkezelést, a Databricks Git-mappákkal végzett kódkezelést, az automatizálási támogatást, beleértve a Databricks-feladatokat és API-kat, valamint integrált MLflow-t a modellfejlesztés nyomon követéséhez és a modellek üzembe helyezéséhez és kiszolgálásához.
Erőforrás- és környezetkezelés
Az Azure Databricks segít a mélytanulási környezet testreszabásában és a környezet konzisztensen tartásában a felhasználók számára.
A fejlesztési környezet testreszabása
A Databricks Runtime használatával testre szabhatja a fejlesztési környezetet a jegyzetfüzet, a fürt és a feladat szintjén.
- Jegyzetfüzet-hatókörű Python-kódtárak vagy jegyzetfüzet-hatókörű R-kódtárak használata a kódtárak meghatározott készletének vagy verziójának használatához anélkül, hogy más fürtfelhasználókat érintenének.
- Telepítse a kódtárakat a fürt szintjén a csapatok vagy projektek verzióinak szabványosításához.
- Állítson be egy Azure Databricks-feladatot, hogy az ismétlődő tevékenységek konzisztens, változatlan környezetben fussanak.
Fürtszabályzatok használata
Fürtszabályzatokat hozhat létre, amelyek az adattudósokat a megfelelő lehetőségekhez irányítják, például egyetlen csomópontos fürtöt használnak fejlesztésre, és automatikus skálázási fürtöt használnak nagy feladatokhoz.
A100 GPU-k használata mélytanulási számítási feladatokhoz
Az A100 GPU-k hatékony választás számos mélytanulási feladathoz, például a nagy nyelvi modellek betanításához és finomhangolásához, a természetes nyelvi feldolgozáshoz, az objektumészleléshez és -besoroláshoz, valamint a javaslatmotorokhoz.
- A Databricks minden felhőben támogatja az A100 GPU-kat. A támogatott GPU-típusok teljes listáját a Támogatott példánytípusok című témakörben találja.
- Az A100 GPU-k általában korlátozott rendelkezésre állással rendelkeznek. Lépjen kapcsolatba a felhőszolgáltatóval az erőforrás-kiosztásért, vagy fontolja meg a kapacitás előzetes lefoglalását.
Ajánlott adatbetöltési eljárások
A felhőalapú adattárolás általában nem I/O-ra van optimalizálva, ami kihívást jelenthet a nagy adathalmazokat igénylő mélytanulási modellek számára. A Databricks Runtime ML tartalmazza a Delta Lake-t és a Petastormot , hogy optimalizálja az adatátadást a mélytanulási alkalmazásokhoz.
A Databricks a Delta Lake-táblák használatát javasolja az adattároláshoz. A Delta Lake leegyszerűsíti az ETL-t, és lehetővé teszi az adatok hatékony elérését. Különösen képek esetén a Delta Lake segít optimalizálni a betöltést mind a betanításhoz, mind a következtetéshez. A képalkalmazások referenciamegoldása példaként szolgál az ETL optimalizálására a Delta Lake-t használó képekhez.
A Petastorm olyan API-kat biztosít, amelyekkel parquet formátumban készítheti elő az adatokat a TensorFlow, a Keras vagy a PyTorch általi használatra. A SparkConverter API Spark DataFrame-integrációt biztosít. A Petastorm adathardingot is biztosít az elosztott feldolgozáshoz. Részletekért lásd: Adatok betöltése a Petastorm használatával.
Ajánlott eljárások a mélytanulási modellek betanításához
A Databricks a Databricks Runtime for Machine Tanulás és az MLflow nyomon követését és automatikus használatát javasolja az összes modell betanításához.
Első lépés egy csomópontos fürttel
Az egycsomópontos (csak illesztőprogramokkal rendelkező) GPU-fürtök általában a leggyorsabbak és költséghatékonyak a mélytanulási modellek fejlesztéséhez. Egy 4 GPU-val rendelkező csomópont valószínűleg gyorsabb lesz a mélytanulás betanításához, amely 4 munkavégző csomópont 1 GPU-val. Ennek az az oka, hogy az elosztott betanítás hálózati kommunikációs többletterhelést okoz.
Az egycsomópontos fürt jó választás a gyors, iteratív fejlesztés és a kis- és közepes méretű adatok betanításához. Ha az adatkészlet elég nagy ahhoz, hogy egy gépen lassú legyen a betanítás, fontolja meg a több GPU-ra való áttérést, és akár az elosztott számítást is.
A TensorBoard és a fürt metrikáinak használata a betanítási folyamat figyeléséhez
A TensorBoard előre telepítve van a Databricks Runtime ML-ben. Használhatja egy jegyzetfüzetben vagy egy külön lapon. Részletekért lásd a TensorBoardot .
A fürtmetrikák minden Databricks-futtatókörnyezetben elérhetők. A szűk keresztmetszetek vizsgálatához megvizsgálhatja a hálózat, a processzor és a memóriahasználatot. Részletekért tekintse meg a fürtmetrikákat .
Teljesítmény optimalizálása mély tanuláshoz
A Databricks mélytanulási teljesítményoptimalizálási technikáit használhatja és érdemes is használnia.
Korai leállítás
A korai leállítás figyeli az érvényesítési készletre számított metrikák értékét, és leállítja a betanítást, ha a metrika nem javul. Ez jobb megközelítés, mint a jó számú befejezendő korszak kitalálása. Minden mélytanulási kódtár natív API-t biztosít a korai leállításhoz; Lásd például a TensorFlow/Keras earlyStopping visszahívási API-jait és a PyTorch Lightningot. Példajegyzetfüzetet a TensorFlow Keras-példajegyzetfüzetben talál.
Batch-méret finomhangolása
A kötegelt méretezés finomhangolása segít optimalizálni a GPU-kihasználtságot. Ha a köteg mérete túl kicsi, a számítások nem tudják teljes mértékben kihasználni a GPU-képességeket. A GPU-metrikák megtekintéséhez fürtmetrikákat használhat.
Állítsa be a köteg méretét a tanulási sebességgel együtt. Jó hüvelykujjszabály, ha a köteg méretét n-rel növeli, sqrt(n) használatával növeli a tanulási arányt. Manuális finomhangoláskor próbálja meg módosítani a köteg méretét 2 vagy 0,5 tényezővel. Ezután folytassa a finomhangolást a teljesítmény optimalizálásához manuálisan vagy különböző hiperparaméterek tesztelésével egy automatizált eszközzel, például a Hyperopttal.
Transzfertanulás
Az átadási tanulással egy korábban betanított modellel kell kezdenie, és szükség szerint módosítania kell azt az alkalmazáshoz. A tanulás átvitele jelentősen csökkentheti az új modellek betanításához és finomhangolásához szükséges időt. További információért és egy példáért tekintse meg a featurization for transfer learning című témakört.
Áthelyezés elosztott betanításra
A Databricks Runtime ML tartalmazza a HorovodRunnert, spark-tensorflow-distributor
a TorchDistributort és a Hyperoptot, hogy megkönnyítse az egycsomópontosról az elosztott betanításra való áttérést.
HorovodRunner
A Horovod egy nyílt forráskódú projekt, amely a mélytanulási képzést több GPU-ra vagy elosztott számításokra skálázza. A Databricks által készített HorovodRunner, amely a Databricks Runtime ML része, egy Horovod burkoló, amely Spark-kompatibilitást biztosít. Az API-val minimális módosításokkal skálázhatja az egycsomópontos kódot. A HorovodRunner a TensorFlow, a Keras és a PyTorch használatával dolgozik.
spark-tensorflow-distributor
spark-tensorflow-distributor
Egy nyílt forráskódú natív csomag a TensorFlow-ban a TensorFlow-nal való elosztott betanításhoz Spark-fürtökön. Tekintse meg a példajegyzetfüzetet.
TorchDistributor
A TorchDistributor egy nyílt forráskódú modul a PySparkban, amely lehetővé teszi a PyTorch és a Spark-fürtök elosztott betanítását, amely lehetővé teszi a PyTorch-betanítási feladatok Spark-feladatokként való elindítását. Lásd: Elosztott betanítás a TorchDistributor használatával.
Hyperopt
A Hyperopt adaptív hiperparaméter-finomhangolást biztosít a gépi tanuláshoz. A SparkTrials osztálysal iteratív módon hangolhatja a mélytanulási modellek paramétereit párhuzamosan egy fürtben.
A következtetés ajánlott eljárásai
Ez a szakasz általános tippeket tartalmaz a modellek Azure Databricks-lel való következtetéséhez.
A költségek minimalizálása érdekében vegye figyelembe a processzorokat és a következtetésre optimalizált GPU-kat, például az NC T4_v3-sorozatot. Nincs egyértelmű javaslat, mivel a legjobb választás a modell méretétől, az adatmérettől és más változóktól függ.
Az MLflow használatával egyszerűsítheti az üzembe helyezést és a modell kiszolgálását. Az MLflow bármilyen mélytanulási modellt naplózhat, beleértve az egyéni előfeldolgozási és utófeldolgozási logikát is. A Unity-katalógusban vagy a munkaterület-modellregisztrációs adatbázisban regisztrált modellek kötegelt, streamelhető vagy online következtetésre telepíthetők.
Online kiszolgálás
Az alacsony késésű kiszolgáláshoz a legjobb megoldás az online szolgáltatás a REST API mögött. A Databricks modellkiszolgálót biztosít az online következtetéshez. A Modellkiszolgáló egységes felületet biztosít az AI-modellek üzembe helyezéséhez, szabályozásához és lekérdezéséhez, és támogatja a következőket:
- Egyéni modellek. Ezek MLflow formátumban csomagolt Python-modellek. Ilyenek például a scikit-learn, az XGBoost, a PyTorch és az Ölelés Arc transzformátormodellek.
- A Foundation Model API-k által elérhetővé tett korszerű nyílt modellek. Ezek a modellek olyan válogatott alapmodell-architektúrák, amelyek támogatják az optimalizált következtetést. Az olyan alapmodellek, mint például a Llama-2-70B-chat, a BGE-Large és a Mistral-7B, azonnali használatra érhetők el a jogkivonatonkénti díjszabással. Teljesítménygaranciát és finomhangolt modellvariánsokat igénylő számítási feladatok esetén üzembe helyezheti őket kiosztott átviteli sebességgel.
- Külső modellek. Ezek a Databricksen kívül üzemeltetett modellek. Ilyenek például az OpenAI GPT-4-es modelljei, az antropikus Claude és mások. Az ezeket a modelleket kiszolgáló végpontok központilag szabályozhatók, és az ügyfelek sebességkorlátokat és hozzáférési vezérlőket hozhatnak létre számukra.
Alternatív megoldásként az MLflow API-kat biztosít a különböző felügyelt szolgáltatásokban való üzembe helyezéshez az online következtetéshez, valamint API-kat a Docker-tárolók egyéni kiszolgálási megoldásokhoz való létrehozásához.
Az online következtetéshez használt egyéb gyakori felügyelt szolgáltatások a következők:
Kötegelt és streamelési következtetés
A Batch és a streamelési pontozás támogatja a magas átviteli sebességet, az alacsony költségű pontozást akár percek alatt is. További információ: MLflow használata modellkövetkeztetéshez.
- Ha a következtetési adatokhoz többször is hozzá szeretne férni, érdemes lehet létrehozni egy előfeldolgozási feladatot, hogy az adatokat ETL-ként egy Delta Lake-táblába bontsa a következtetési feladat futtatása előtt. Így az adatok betöltésének és előkészítésének költsége az adatok több olvasása között oszlik meg. Az előfeldolgozás és a következtetés elkülönítése azt is lehetővé teszi, hogy az egyes feladatokhoz különböző hardvereket válasszon a költségek és a teljesítmény optimalizálása érdekében. Az ETL-hez és a GPU-khoz például cpu-kat használhat a következtetéshez.
- A Spark Pandas UDF-ekkel skálázhatja a kötegeket és a streamelési következtetést egy fürtben.
- Amikor naplóz egy modellt az Azure Databricksből, az MLflow automatikusan következtetési kódot biztosít a modell pandas UDF-ként való alkalmazásához.
- A következtetési folyamatot tovább optimalizálhatja, különösen nagy mélytanulási modellekhez. Példaként tekintse meg a kép ETL-jének referenciamegoldását.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: