Run PyTorch Lightning and native PyTorch DDP on Amazon SageMaker Training, featuring Amazon Search PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Futtassa a PyTorch Lightninget és a natív PyTorch DDP-t az Amazon SageMaker Training programban, amely az Amazon Search szolgáltatást is tartalmazza

Annyi adat, olyan kevés idő. A gépi tanulás (ML) szakértői, adattudósok, mérnökök és rajongók világszerte találkoztak ezzel a problémával. A természetes nyelvi feldolgozástól a számítógépes látásig, a táblázatoktól az idősorokig és minden, ami a kettő között van, a sebesség optimalizálásának ősrégi problémája, amikor az adatokat annyi GPU-n futtatja, amennyit csak lehet, számtalan megoldást inspirált. Ma örömmel jelentjük be a natív nyílt forráskódú keretrendszereket használó PyTorch fejlesztők számára készült funkciókat, mint pl. PyTorch Lightning és a PyTorch DDP, amely leegyszerűsíti a felhőhöz vezető utat.

Amazon SageMaker egy teljesen felügyelt szolgáltatás az ML számára, a SageMaker modellképzés pedig egy optimalizált számítási környezet a nagy teljesítményű képzéshez. A SageMaker modellképzés távoli képzési élményt kínál egy zökkenőmentes vezérlősíkkal, amellyel könnyen betanítható és reprodukálható az ML modellek nagy teljesítményű és alacsony költséggel. Örömmel jelentjük be a SageMaker képzési portfóliójának új funkcióit, amelyek még könnyebbé és elérhetőbbé teszik a PyTorch nagyszabású futtatását:

  1. A PyTorch Lightning mostantól integrálható A SageMaker elosztott adatok párhuzamos könyvtára csak egysoros kódváltással.
  2. SageMaker modell képzés most már támogatja a natív PyTorch Distributed Data Parallel NCCL-háttérrendszert, amely lehetővé teszi a fejlesztők számára, hogy minden eddiginél könnyebben áttérjenek a SageMakerre.

Ebben a bejegyzésben megvitatjuk ezeket az új funkciókat, és azt is megtudjuk, hogyan futtatta az Amazon Search a PyTorch Lightninget a SageMaker optimalizált elosztott képzési hátterével, hogy felgyorsítsa a modell betanítási idejét.

Mielőtt belemerülnénk az Amazon Search esettanulmányába, azoknak, akik nem ismerik, szeretnénk egy kis háttérrel szolgálni A SageMaker elosztott adatok párhuzamos könyvtára. 2020-ban kifejlesztettünk és elindítottunk egy egyéni fürtkonfigurációt az elosztott gradiens skálázáshoz, amely növeli a klaszter általános hatékonyságát. Hering. A paraméterszerverek és a gyűrűalapú topológiák legjobbjait használva a SageMaker Distributed Data Parallel (SMDDP) a Amazon rugalmas számítási felhő (Amazon EC2) hálózati topológia, beleértve EFA. Nagyobb fürtméretek esetén az SMDDP 20–40%-os átviteli teljesítménynövekedést képes elérni a Horovod (TensorFlow) és a PyTorch Distributed Data Parallel rendszerhez képest. Kisebb fürtméretekhez és támogatott modellekhez javasoljuk a SageMaker képzési fordító, amely akár 50%-kal is csökkentheti a teljes munkaidőt.

Az ügyfelek reflektorfénye: PyTorch Lightning a SageMaker optimalizált háttérrendszerén az Amazon Search segítségével

Az Amazon Search felelős a keresési és felfedezési élményért Amazon.com. Ez biztosítja a keresési élményt az Amazonon vásárolható termékeket kereső ügyfelek számára. Magas szinten az Amazon Search indexet épít az Amazon.com-on értékesített összes termékhez. Amikor az ügyfél beír egy lekérdezést, az Amazon Search különféle ML technikákat alkalmaz, beleértve a mély tanulási modelleket is, hogy releváns és érdekes termékeket illesszen az ügyfél lekérdezéséhez. Ezután rangsorolja a termékeket, mielőtt megjeleníti az eredményeket a vásárlónak.

Az Amazon Search tudósai a PyTorch Lightninget használták az egyik fő keretrendszerként a mély tanulási modellek betanításához, amelyek a PyTorch mellett hozzáadott használhatósági funkcióknak köszönhetően a Search rangsorolását biztosítják. Az SMDDP nem támogatott a PyTorch Lightningben írt mély tanulási modelleknél az új SageMaker elindítása előtt. Ez megakadályozta, hogy a PyTorch Lightninget előnyben részesítő Amazon Search tudósok adatpárhuzamos technikákkal skálázzák modellképzésüket, jelentősen lelassítva a képzési időt, és megakadályozva őket abban, hogy olyan új kísérleteket teszteljenek, amelyek skálázhatóbb képzést igényelnek.

A csapat korai benchmarking eredményei azt mutatják, hogy egy mintamodell esetében 7.3-szor gyorsabb betanítási idő nyolc csomóponton, mint egy egy csomópontos képzési alapvonalon. A benchmarkingban használt alapmodell egy többrétegű perceptron neurális hálózat hét sűrű, teljesen összekapcsolt réteggel és több mint 200 paraméterrel. Az alábbi táblázat összefoglalja az ml.p3.16xlarge SageMaker képzési példányokon elért benchmarking eredményét.

Példányok száma Edzésidő (perc) Javulás
1 99 kiindulási
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Ezután az új bevezetések részleteibe merülünk. Ha úgy tetszik, átléphet a levelezésünkön példafüzet .

Futtassa a PyTorch Lightninget a SageMaker elosztott képzési könyvtárával

Örömmel jelentjük be, hogy a SageMaker Data Parallel mostantól zökkenőmentesen integrálódik a PyTorch Lightning rendszerbe a SageMaker képzésen belül.

A PyTorch Lightning egy nyílt forráskódú keretrendszer, amely leegyszerűsíti az egyéni modellek PyTorchban történő írását. Bizonyos szempontból hasonlóan ahhoz, amit Keras tett a TensorFlow vagy akár a Hugging Face esetében, a PyTorch Lightning magas szintű API-t biztosít absztrakciókkal magának a PyTorch alacsonyabb szintű funkcióinak nagy részére. Ez magában foglalja a modell meghatározását, a profilalkotást, az értékelést, a visszavágást, a modell párhuzamosságát, a hiperparaméter-konfigurációkat, az átviteli tanulást stb.

Korábban a PyTorch Lightning fejlesztői bizonytalanok voltak abban, hogyan lehet zökkenőmentesen migrálni a képzési kódjukat a nagy teljesítményű SageMaker GPU-fürtökre. Ezen túlmenően nem tudták kihasználni a SageMaker Data Parallel által bevezetett hatékonyságnövekedést.

A PyTorch Lightning esetében általánosságban elmondható, hogy minimális kódmódosításokra van szükség ahhoz, hogy ezeket az API-kat a SageMaker Trainingen egyszerűen futtathassuk. A példafüzetekben a DDPS-stratégia és a DDPPplugin mód.

A PyTorch Lightning és a SageMaker Data Parallel optimalizált háttérprogramként való használatához három lépés szükséges:

  1. Használjon támogatott AWS Deep Learning Container (DLC) alapképként, vagy opcionálisan létrehozhat saját tárolót és telepítse saját maga a SageMaker Data Parallel háttérprogramot. Győződjön meg arról, hogy a PyTorch Lightning tartalmazza a szükséges csomagokat, például a requirements.txt fájlt.
  2. Végezzen néhány kisebb kódmódosítást a képzési szkriptjében, amelyek lehetővé teszik az optimalizált háttérprogramot. Ezek tartalmazzák:
    1. Importálja az SM DDP könyvtárat:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Állítsa be a PyTorch Lightning környezetet a SageMaker számára:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. Ha a PyTorch Lightning 1.5.10-nél régebbi verzióját használja, akkor hozzá kell adnia néhány további lépést.
      1. Először adja hozzá a környezeti változót:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Másodszor, győződjön meg arról, hogy használja DDPPlugin, Ahelyett DDPStrategy. Ha újabb verziót használ, amelyet egyszerűen beállíthat a requirements.txt a source_dir a munkádhoz, akkor erre nincs szükség. Lásd a következő kódot:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Opcionálisan definiálja a folyamatcsoport hátterét a következőként "smddp" a DDPSTrategy tárgy. Ha azonban a PyTorch Lightninget a szintén támogatott PyTorch DDP háttérprogrammal használja, egyszerűen távolítsa el ezt a `process_group_backend` paramétert. Lásd a következő kódot:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Győződjön meg arról, hogy a becslőben szerepel egy elosztási módszer, mint pl distribution={"smdistributed":{"dataparallel":{"enabled":True} ha a Herring háttérprogramot használja, vagy distribution={"pytorchddp":{"enabled":True}.
  • A megfelelő paraméterek teljes listája a distribution paramétert, lásd dokumentációnkat itt.

Most elindíthatja SageMaker képzési munkáját! Az edzésmunkát elindíthatja a Python SDK-n, a Boto3-on, a SageMaker konzolon, a AWS parancssori interfész (AWS CLI), és számtalan más módszer. Az AWS szemszögéből ez egyetlen API-parancs: create-training-job. Akár a helyi terminálról indítja el ezt a parancsot, egy AWS Lambda funkció, an Amazon SageMaker Studio notebook, KubeFlow-folyamat vagy bármilyen más számítási környezet teljes mértékben Önön múlik.

Felhívjuk figyelmét, hogy a PyTorch Lightning és a SageMaker Data Parallel közötti integráció jelenleg csak a PyTorch újabb verzióiban támogatott, 1.11-től kezdődően. Ezenkívül ez a kiadás csak a SageMaker AWS DLC-iben érhető el a PyTorch 1.12-től kezdődően. Ügyeljen arra, hogy erre a képre mutasson alapként. Ban ben us-east-1, ez a cím a következő:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Ezután kibővítheti a Docker-tárolót, ezt használva alapképként, vagy átadhatja ezt változóként a fájlba image_uri érve a SageMaker edzésbecslő.

Ennek eredményeként a PyTorch Lightning kódot a SageMaker Training optimalizált GPU-jain futtathatja, az AWS-en elérhető legjobb teljesítménnyel.

Futtassa a PyTorch Distributed Data Parallel programot a SageMakeren

The biggest problem PyTorch elosztott adatpárhuzamos (DDP) megoldja megtévesztően egyszerű: sebesség. A jó elosztott képzési keretrendszernek stabilitást, megbízhatóságot, és ami a legfontosabb, kitűnő teljesítményt kell biztosítania. A PyTorch DDP ezt azáltal biztosítja, hogy API-kat biztosít a fáklyafejlesztők számára, hogy több GPU-eszközön replikálhassák modelljeiket, mind egy csomópontos, mind több csomópontos beállításokban. A keretrendszer ezután kezeli a különböző objektumok felosztását a betanítási adatkészlettől az egyes modellpéldányokig, átlagolva a színátmeneteket az egyes modellpéldányokhoz, hogy minden lépésben szinkronizálja azokat. Ez egy modellt állít elő a teljes edzési futás teljes befejezésekor. A következő diagram ezt a folyamatot szemlélteti.

A PyTorch DDP gyakori a nagy adatkészleteket használó projektekben. Az egyes adatkészletek pontos mérete nagymértékben változhat, de általános irányelv az adatkészletek méretezése, a számítási méretek és a modellméretek hasonló arányú méretezése. Más néven léptékezési törvények, e három optimális kombinációja nagyon vita tárgya, és az alkalmazásoktól függően változik. Az AWS-nél a több ügyféllel végzett munka alapján egyértelműen láthatjuk az adatokkal párhuzamos stratégiák előnyeit, ha az adatkészlet teljes mérete legalább néhány tíz GB. Amikor az adatkészletek még nagyobbak lesznek, bizonyos típusú adatpárhuzamos stratégia megvalósítása kritikus technika az átfogó kísérlet felgyorsítása és az értékteremtési idő javítása érdekében.

Korábban azoknak az ügyfeleknek, akik a PyTorch DDP-t használták az elosztott képzéshez a helyszínen vagy más számítási környezetben, nem volt olyan keretrendszer, amely lehetővé tette volna a projektjeik egyszerű áttelepítését a SageMaker Training rendszerbe, hogy kihasználhassák a zökkenőmentes vezérlősíkkal rendelkező, nagy teljesítményű GPU-kat. Pontosabban, vagy migrálniuk kellett az adatok párhuzamos keretrendszerét az SMDDP-re, vagy manuálisan kellett fejleszteniük és tesztelniük a PyTorch DDP képességeit a SageMaker Trainingen. Ma a SageMaker Training örömmel nyújt zökkenőmentes élményt a PyTorch DDP-kódjukat alkalmazó ügyfelek számára.

Ennek hatékony használatához nem kell módosítania a képzési szkripteket.

Ezt az új paramétert a következő kódban láthatja. Ban,-ben distribution paramétert, egyszerűen adja hozzá pytorchddp és állítsa engedélyezve mint true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Ez az új konfiguráció a SageMaker Python SDK 2.102.0-s verziójával és a PyTorch DLC 1.11-es verziójával kezdődik.

PyTorch DDP fejlesztőknek, akik ismerik a népszerű fáklyafutás keretrendszerben, hasznos tudni, hogy ez nem szükséges a SageMaker képzési környezetben, amely már eleve robusztus hibatűrést biztosít. A kód újraírásának minimalizálása érdekében azonban belépési pontként hozhat létre egy másik indítószkriptet, amely ezt a parancsot futtatja.

Mostantól a PyTorch fejlesztők könnyedén áthelyezhetik szkripteiket a SageMakerbe, így biztosítva, hogy szkriptjeik és tárolóik zökkenőmentesen futhassanak több számítási környezetben.

Ez felkészíti őket arra, hogy a jövőben kihasználják A SageMaker elosztott képzési könyvtárai amelyek AWS-re optimalizált képzési topológiákat biztosítanak, amelyek akár 40%-os gyorsulást tesznek lehetővé. A PyTorch fejlesztők számára ez egy sor kód! PyTorch DDP kód esetén egyszerűen beállíthatja a háttérrendszert smddp az inicializálásnál (lásd PyTorch képzési parancsfájl módosítása), a következő kód szerint:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

Mint fentebb láttuk, beállíthatja a hátterét is DDPStrategy nak nek smddp a Lightning használatakor. Ez akár 40%-os általános gyorsulás nagy fürtökhöz! Ha többet szeretne megtudni a SageMaker elosztott képzéséről, lásd igény szerinti webináriumunk, támogató laptopok, ide vonatkozó dokumentációés papírok.

Következtetés

Ebben a bejegyzésben két új funkciót mutattunk be a SageMaker Training családon belül. Ezek sokkal könnyebbé teszik a PyTorch fejlesztők számára a meglévő kódjuk használatát a SageMaker-en, a PyTorch DDP és a PyTorch Lightning egyaránt.

Megmutattuk azt is, hogy az Amazon Search hogyan használja a SageMaker Training-et mélytanulási modelljeik, és különösen a PyTorch Lightning segítségével a SageMaker Data Parallel optimalizált kollektív könyvtárral háttérként. Az elosztott képzésre való áttérés összességében hozzájárult ahhoz, hogy az Amazon Search 7.3-szor gyorsabb vonatozási időt érjen el.


A szerzőkről

Run PyTorch Lightning and native PyTorch DDP on Amazon SageMaker Training, featuring Amazon Search PlatoBlockchain Data Intelligence. Vertical Search. Ai.Emily Webber közvetlenül a SageMaker elindítása után csatlakozott az AWS-hez, és azóta is próbálja elmondani a világnak! Azon kívül, hogy új ML-élményeket építhet az ügyfelek számára, Emily élvezi a meditációt és a tibeti buddhizmus tanulmányozását.

Run PyTorch Lightning and native PyTorch DDP on Amazon SageMaker Training, featuring Amazon Search PlatoBlockchain Data Intelligence. Vertical Search. Ai. Karan Dhiman szoftverfejlesztő mérnök az AWS-nél, Torontóban, Kanadában. Nagyon szenvedélyes a gépi tanulási terület és az elosztott számítási munkaterhelés felgyorsítására szolgáló megoldások kidolgozása.

Run PyTorch Lightning and native PyTorch DDP on Amazon SageMaker Training, featuring Amazon Search PlatoBlockchain Data Intelligence. Vertical Search. Ai.Vishwa Karia az AWS Deep Engine szoftverfejlesztő mérnöke. Érdeklődése a gépi tanulás és az elosztott rendszerek metszéspontjában rejlik, és szenvedélyesen törekszik arra is, hogy a nőket a technológia és a mesterséges intelligencia terén erősítse.

Run PyTorch Lightning and native PyTorch DDP on Amazon SageMaker Training, featuring Amazon Search PlatoBlockchain Data Intelligence. Vertical Search. Ai.Eiman Elnahrawy az Amazon Search vezető szoftvermérnöke, aki a gépi tanulás gyorsításával, méretezésével és automatizálásával kapcsolatos erőfeszítéseket vezeti. Szakértelme több területre is kiterjed, beleértve a gépi tanulást, az elosztott rendszereket és a személyre szabást.

Időbélyeg:

Még több AWS gépi tanulás