Share via


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:

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