Megosztás a következőn keresztül:


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 Mozaik AI előre összeállított mélytanulási infrastruktúrát biztosít a Databricks Runtime for Machine Learning szolgáltatással, 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.

GPU-ütemezés

A GPU-k elosztott mélytanulási betanításhoz és következtetéshez való maximalizálásához optimalizálja a GPU-ütemezést. Lásd a GPU ütemezé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 Mozaikstreamelést , hogy optimalizálja az adatok átviteli sebességét 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 Databricks a Mozaik streamelést javasolja a PyTorch vagy a Mosaic Composer adatbetöltéséhez, különösen akkor, ha elosztott számítási feladatokat tartalmaz. A rendelkezésre álló StreamingDataset és StreamingDataLoader API-k megkönnyítik a nagy adathalmazok betanítását, miközben maximalizálják a helyességi garanciákat, a teljesítményt, a rugalmasságot és a könnyű használatot egy elosztott környezetben. További részletekért tekintse meg az adatok betöltése a Mozaik streameléssel című témakört.

Ajánlott eljárások a mélytanulási modellek betanításához

A Databricks a Databricks Runtime for Machine Learning és az MLflow nyomon követését és automatikus használatát javasolja minden modellbetanításhoz.

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öz, például az Optuna használatával.

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 TorchDistributort, a DeepSpeedet és a Rayt, hogy megkönnyítse az egycsomópontosról az elosztott betanításra való áttérést.

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.

Optuna

Az Optuna adaptív hiperparaméter-finomhangolást biztosít a gépi tanuláshoz.

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. Például a generatív AI-modellek, például az OpenAI GPT-4, 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.