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 Mozaikstreamelés az adatok betöltéséhez
- Optuna a betanítás párhuzamossá ására
- Pandas UDF-ek következtetéshez
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.
- Használja a jegyzetfüzet-hatókörű Python-kódtárakat vagy a jegyzetfüzet-hatókörű R-kódtárakat, hogy a kódtárak meghatározott készletét vagy verzióját használhassa anélkül, hogy ez más fürtfelhasználókat érintene.
- 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 támogatott példánytípusokcí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 és a Mosaic Streaming szolgáltatásokat az adatátviteli sebesség mélytanulási alkalmazásokhoz való optimalizálása érdekében.
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 bevitelt mind a modell betanításához, mind a következtetésekhez. 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ötegméret 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 Optuna.
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 Catalogban lévő modellek vagy a Munkaterület Modellregisztrációs adatbázisába regisztrált modellek tételes, folyamatos vagy online következtetésre is 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:
- Azure Container Instance (ACI)
- Azure Kubernetes Service (AKS)
- MLflow az Azure Machine Learning használatával
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ó: Modellek telepítése kötegelt következtetéshez és előrejelzé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.