Suorita PyTorch Lightning ja natiivi PyTorch DDP Amazon SageMaker Trainingissa, joka sisältää Amazon Search PlatoBlockchain Data Intelligencen. Pystysuuntainen haku. Ai.

Suorita PyTorch Lightning ja alkuperäinen PyTorch DDP Amazon SageMaker -koulutuksessa, joka sisältää Amazon Searchin

Niin paljon dataa, niin vähän aikaa. Koneoppimisen (ML) asiantuntijat, datatieteilijät, insinöörit ja harrastajat ovat kohdanneet tämän ongelman kaikkialla maailmassa. Luonnollisen kielen prosessoinnista tietokonenäköön, taulukoista aikasarjoihin ja kaikkeen siltä väliltä, ​​ikivanha ongelma optimoida nopeus, kun dataa käytetään niin monella grafiikkasuorittimella kuin mahdollista, on inspiroinut lukemattomia ratkaisuja. Tänään meillä on ilo julkistaa ominaisuuksia PyTorch-kehittäjille, jotka käyttävät alkuperäisiä avoimen lähdekoodin kehyksiä, kuten PyTorch-salama ja PyTorch DDP, joka virtaviivaistaa heidän polkunsa pilveen.

Amazon Sage Maker on täysin hallittu palvelu ML:lle, ja SageMaker mallikoulutus on optimoitu laskentaympäristö korkean suorituskyvyn mittakaavassa tapahtuvaa koulutusta varten. SageMaker-mallikoulutus tarjoaa etäharjoituskokemuksen saumattomalla ohjaustasolla, jonka avulla voit helposti kouluttaa ja toistaa ML-malleja korkealla suorituskyvyllä ja alhaisin kustannuksin. Olemme iloisia voidessamme julkistaa SageMaker-harjoitusportfolion uusia ominaisuuksia, jotka tekevät PyTorchin suorittamisesta mittakaavassa entistä helpompaa ja helpompaa:

  1. PyTorch Lightning voidaan nyt integroida SageMakerin hajautetun datan rinnakkaiskirjasto vain yhden rivin koodin vaihdolla.
  2. SageMaker mallikoulutus tukee nyt alkuperäistä PyTorch Distributed Data Parallel -tietoa NCCL-taustajärjestelmällä, minkä ansiosta kehittäjät voivat siirtyä SageMakeriin helpommin kuin koskaan ennen.

Tässä viestissä keskustelemme näistä uusista ominaisuuksista ja opimme myös kuinka Amazon Search on suorittanut PyTorch Lightningin optimoidun hajautetun harjoittelun taustaohjelmalla SageMakerissa mallin harjoitusajan nopeuttamiseksi.

Ennen kuin sukeltaa Amazon Search -tapaustutkimukseen, haluamme kertoa asiasta tuntemattomille SageMakerin hajautetun datan rinnakkaiskirjasto. Vuonna 2020 kehitimme ja julkaisimme mukautetun klusterikonfiguraation hajautettua gradienttilaskua varten mittakaavassa, mikä lisää klusterin yleistä tehokkuutta. Tämä esiteltiin Amazon Sciencessä nimellä Silli. Parametripalvelimien ja rengaspohjaisten topologioiden parhaat puolet käyttävät SageMaker Distributed Data Parallel (SMDDP) on optimoitu Amazonin elastinen laskentapilvi (Amazon EC2) verkkotopologia, mukaan lukien ALE. Suuremmille klusterikokoille SMDDP pystyy tarjoamaan 20–40 % suorituskyvyn parannuksia Horovodiin (TensorFlow) ja PyTorch Distributed Data Paralleliin verrattuna. Pienemmille klusterikokoille ja tuetuille malleille suosittelemme SageMaker Training Compiler, mikä voi vähentää kokonaistyöaikaa jopa 50 %.

Asiakkaiden valokeila: PyTorch Lightning SageMakerin optimoidussa taustaohjelmassa Amazon Searchilla

Amazon Search on vastuussa haku- ja löytökokemuksesta Amazon.com. Se tehostaa hakukokemusta asiakkaille, jotka etsivät tuotteita ostettaviksi Amazonista. Korkealla tasolla Amazon Search rakentaa indeksin kaikille Amazon.comissa myydyille tuotteille. Kun asiakas tekee kyselyn, Amazon Search käyttää sitten erilaisia ​​ML-tekniikoita, mukaan lukien syväoppimismalleja, sovittaakseen asiaankuuluvia ja kiinnostavia tuotteita asiakkaan kyselyyn. Sitten se asettaa tuotteet paremmuusjärjestykseen ennen kuin näyttää tulokset asiakkaalle.

Amazon Search -tutkijat ovat käyttäneet PyTorch Lightningia yhtenä tärkeimmistä kehyksistä kouluttaakseen syväoppimismalleja, jotka tehostavat haun sijoitusta PyTorchin päälle lisättyjen käytettävyysominaisuuksien ansiosta. SMDDP:tä ei tuettu PyTorch Lightningissa kirjoitetuissa syväoppimismalleissa ennen tätä uutta SageMaker-julkaisua. Tämä esti Amazon Searchin tutkijoita, jotka mieluummin käyttävät PyTorch Lightningia, skaalaamasta malliharjoitteluaan datan rinnakkaistekniikoilla, mikä hidasti merkittävästi heidän harjoitusaikaansa ja esti heitä testaamasta uusia kokeita, jotka vaativat enemmän skaalautuvaa koulutusta.

Ryhmän varhaiset benchmarking-tulokset osoittavat 7.3 kertaa nopeamman harjoitusajan näytemallille, kun sitä harjoiteltiin kahdeksalla solmulla, verrattuna yhden solmun harjoittelun perustilaan. Näissä benchmarkingissa käytetty perusmalli on monikerroksinen perceptronin hermoverkko, jossa on seitsemän tiheää täysin yhdistettyä kerrosta ja yli 200 parametria. Seuraavassa taulukossa on yhteenveto benchmarking-tuloksista ml.p3.16xlarge SageMaker -harjoitustapauksissa.

Tapausten määrä Harjoitusaika (minuuttia) parannus
1 99 Lähtötilanne
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Seuraavaksi sukeltaamme uusien julkaisujen yksityiskohtiin. Halutessasi voit käydä läpi vastaajamme esimerkkimuistikirja.

Suorita PyTorch Lightning SageMakerin hajautetun koulutuskirjaston avulla

Meillä on ilo ilmoittaa, että SageMaker Data Parallel integroituu nyt saumattomasti PyTorch Lightningiin SageMaker-koulutuksessa.

PyTorch Lightning on avoimen lähdekoodin kehys, joka yksinkertaistaa mukautettujen mallien kirjoittamista PyTorchissa. Jollain tapaa samalla tavalla kuin Keras teki TensorFlow'lle tai jopa väitetysti Hugging Facelle, PyTorch Lightning tarjoaa korkean tason API:n, jossa on abstraktioita suurelle osalle itse PyTorchin alemman tason toiminnoista. Tämä sisältää mallin määrittelyn, profiloinnin, arvioinnin, karsimisen, mallin rinnakkaisuuden, hyperparametrien määritykset, siirron oppimisen ja paljon muuta.

Aiemmin PyTorch Lightning -kehittäjät olivat epävarmoja siitä, kuinka harjoituskoodinsa siirretään saumattomasti korkean suorituskyvyn SageMaker GPU -klusteriin. Lisäksi he eivät voineet hyödyntää SageMaker Data Parallelin tuomia tehokkuuden lisäyksiä.

PyTorch Lightningin koodissa pitäisi yleisesti ottaen olla vain vähän tai ei ollenkaan koodimuutoksia, jotta nämä API:t voidaan yksinkertaisesti ajaa SageMaker Trainingissa. Esimerkkimuistikirjoissa käytämme DDPS-strategia ja DDPPplugin menetelmiä.

PyTorch Lightningin ja SageMaker Data Parallelin käyttäminen optimoidun taustajärjestelmänä on kolme vaihetta:

  1. Käytä tuettua AWS Deep Learning Container (DLC) peruskuvaksi tai luo valinnaisesti oma säilö ja asenna SageMaker Data Parallel -taustaohjelma itse. Varmista, että PyTorch Lightning on sisällytetty tarvittaviin pakkauksiin, kuten a requirements.txt tiedosto.
  2. Tee muutama pieni koodimuutos harjoitusskriptiisi, jotka mahdollistavat optimoidun taustajärjestelmän. Nämä sisältävät:
    1. Tuo SM DDP -kirjasto:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. PyTorch Lightning -ympäristön määrittäminen SageMakerille:
      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. Jos käytät PyTorch Lightningin versiota, joka on vanhempi kuin 1.5.10, sinun on lisättävä muutama vaihe.
      1. Lisää ensin ympäristömuuttuja:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Toiseksi, varmista, että käytät DDPPlugin, mielummin kuin DDPStrategy. Jos käytät uudempaa versiota, jonka voit helposti asettaa asettamalla requirements.txt vuonna source_dir työsi kannalta tämä ei ole välttämätöntä. Katso seuraava koodi:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Vaihtoehtoisesti voit määrittää prosessiryhmän taustaympäristöksi "smddp" vuonna DDPSTrategy esine. Jos kuitenkin käytät PyTorch Lightningia PyTorch DDP -taustajärjestelmän kanssa, jota myös tuetaan, poista tämä `process_group_backend`-parametria. Katso seuraava koodi:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Varmista, että sinulla on estimaattoriin merkitty jakomenetelmä, kuten distribution={"smdistributed":{"dataparallel":{"enabled":True} jos käytät Herring-taustaohjelmaa, tai distribution={"pytorchddp":{"enabled":True}.
  • Täydellinen luettelo sopivista parametreista löytyy distribution parametri, katso dokumentaatiomme tätä.

Nyt voit aloittaa SageMaker-koulutustyösi! Voit käynnistää harjoitustyösi Python SDK:n, Boto3:n, SageMaker-konsolin, AWS-komentoriviliitäntä (AWS CLI) ja lukemattomia muita menetelmiä. AWS:n näkökulmasta tämä on yksi API-komento: create-training-job. Käynnistätkö tämän komennon paikallisesta päätteestäsi, an AWS Lambda toiminto, an Amazon SageMaker Studio muistikirja, KubeFlow-putki tai mikä tahansa muu laskentaympäristö on täysin sinun.

Huomaa, että PyTorch Lightningin ja SageMaker Data Parallelin välistä integraatiota tuetaan tällä hetkellä vain PyTorchin uudemmissa versioissa 1.11 alkaen. Lisäksi tämä julkaisu on saatavilla vain SageMakerin AWS DLC:issä alkaen PyTorch 1.12. Varmista, että osoitat tätä kuvaa pohjana. Sisään us-east-1, tämä osoite on seuraava:

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

Sitten voit laajentaa Docker-säilöäsi käyttämällä tätä peruskuvana tai voit siirtää tämän muuttujana tiedostoon image_uri väite SageMaker koulutusarvioija.

Tämän seurauksena pystyt ajamaan PyTorch Lightning -koodiasi SageMaker Trainingin optimoiduissa grafiikkasuorittimissa parhaalla mahdollisella AWS:n suorituskyvyllä.

Suorita PyTorch Distributed Data Parallel SageMakerissa

Suurin ongelma PyTorch Distributed Data Parallel (DDP) ratkaisee on petollisen yksinkertainen: nopeus. Hyvän hajautetun koulutuskehyksen pitäisi tarjota vakautta, luotettavuutta ja mikä tärkeintä, erinomainen suorituskyky mittakaavassa. PyTorch DDP tarjoaa tämän tarjoamalla taskulamppukehittäjille sovellusliittymiä, jotka voivat kopioida mallinsa useilla GPU-laitteilla sekä yhden solmun että usean solmun asetuksissa. Tämän jälkeen kehys hallitsee eri objektien jakamista opetustietojoukosta kuhunkin mallikopioon ja laskee kunkin mallikopion gradientien keskiarvon synkronoidakseen ne jokaisessa vaiheessa. Tämä tuottaa yhden mallin täyden harjoitusajon jälkeen. Seuraava kaavio havainnollistaa tätä prosessia.

PyTorch DDP on yleinen suuria tietojoukkoja käyttävissä projekteissa. Kunkin tietojoukon tarkka koko vaihtelee suuresti, mutta yleinen ohje on skaalata tietojoukot, laskea koot ja mallikoot samanlaisissa suhteissa. Kutsutaan myös skaalauslakeja, näiden kolmen optimaalinen yhdistelmä on erittäin kiistanalainen ja vaihtelee sovellusten mukaan. AWS:ssä, joka perustuu useiden asiakkaiden kanssa työskentelyyn, näemme selkeästi tiedon rinnakkaisten strategioiden edut, kun tietojoukon kokonaiskoko on vähintään muutama kymmenkunta GB. Kun tietojoukot kasvavat entisestään, jonkin tyyppisen datan rinnakkaisstrategian toteuttaminen on kriittinen tekniikka yleisen kokeilun nopeuttamiseksi ja arvon lisäämiseen kuluvan ajan parantamiseksi.

Aikaisemmin asiakkailta, jotka käyttivät PyTorch DDP:tä hajautettuun koulutukseen tiloissa tai muissa laskentaympäristöissä, ei ollut kehystä, jonka avulla he voisivat helposti siirtää projektinsa SageMaker Trainingiin hyödyntääkseen korkean suorituskyvyn GPU:ita saumattomalla ohjaustasolla. Erityisesti heidän piti joko siirtää tietonsa rinnakkaiskehyksensä SMDDP:hen tai kehittää ja testata PyTorch DDP:n ominaisuuksia SageMaker Trainingissa manuaalisesti. Nykyään SageMaker Training tarjoaa saumattoman kokemuksen asiakkaille, jotka ottavat käyttöön PyTorch DDP -koodinsa.

Jotta voit käyttää tätä tehokkaasti, sinun ei tarvitse tehdä muutoksia harjoitusskripteihisi.

Näet tämän uuden parametrin seuraavassa koodissa. Vuonna distribution parametri, lisää vain pytorchddp ja aseta käyttöön 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"}}
)

Tämä uusi kokoonpano alkaa SageMaker Python SDK -versiosta 2.102.0 ja PyTorch DLC:n versiosta 1.11.

PyTorch DDP -kehittäjille, jotka tuntevat suosittuja torchrun puitteet, on hyödyllistä tietää, että tämä ei ole välttämätöntä SageMaker-harjoitusympäristössä, joka tarjoaa jo vankan vikasietokyvyn. Voit kuitenkin minimoida koodin uudelleenkirjoittamisen ottamalla aloituspisteeksi toisen käynnistysohjelman, joka suorittaa tämän komennon.

PyTorchin kehittäjät voivat nyt siirtää skriptinsä helposti SageMakeriin, mikä varmistaa, että heidän komentosarjansa ja säilönsä voivat toimia saumattomasti useissa laskentaympäristöissä.

Tämä valmistaa heidät hyödyntämään niitä tulevaisuudessa SageMakerin hajautetut koulutuskirjastot jotka tarjoavat AWS-optimoidut koulutustopologiat jopa 40 %:n nopeuttamiseen. PyTorch-kehittäjille tämä on yksi koodirivi! PyTorch DDP -koodille voit yksinkertaisesti asettaa taustaohjelman smddp alustuksessa (katso Muokkaa PyTorch-harjoituskomentosarjaa), kuten seuraavassa koodissa näkyy:

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

Kuten yllä näimme, voit myös asettaa taustaosan DDPStrategy että smddp käytettäessä Lightningia. Tämä voi johtaa jopa 40 % yleisnopeudet suurille ryhmille! Lisätietoja SageMakerin hajautetusta koulutuksesta on kohdassa on-demand-webinaarimme, tukemalla kannettavat tietokoneet, asiaankuuluva dokumentointija paperit.

Yhteenveto

Tässä viestissä esittelimme kaksi uutta ominaisuutta SageMaker Training -perheessä. Niiden avulla PyTorch-kehittäjien on paljon helpompi käyttää olemassa olevaa koodiaan SageMakerissa, sekä PyTorch DDP:ssä että PyTorch Lightningissa.

Näimme myös, kuinka Amazon Search käyttää SageMaker Trainingia syväoppimismalliensa ja erityisesti PyTorch Lightningin harjoittamiseen SageMaker Data Parallel -optimoidun kollektiivisen kirjaston taustalla. Hajautettuun koulutukseen siirtyminen auttoi Amazon Searchia saavuttamaan 7.3 kertaa nopeammat junaajat.


Tietoja kirjoittajista

Suorita PyTorch Lightning ja natiivi PyTorch DDP Amazon SageMaker Trainingissa, joka sisältää Amazon Search PlatoBlockchain Data Intelligencen. Pystysuuntainen haku. Ai.Emily Webber liittyi AWS:ään heti SageMakerin julkaisun jälkeen ja on yrittänyt kertoa siitä maailmalle siitä lähtien! Asiakkaille uusien ML-elämysten rakentamisen lisäksi Emily nauttii meditoinnista ja Tiibetin buddhalaisuuden opiskelusta.

Suorita PyTorch Lightning ja natiivi PyTorch DDP Amazon SageMaker Trainingissa, joka sisältää Amazon Search PlatoBlockchain Data Intelligencen. Pystysuuntainen haku. Ai. Karan Dhiman on ohjelmistokehitysinsinööri AWS:ssä Torontossa, Kanadassa. Hän on erittäin intohimoinen koneoppimistilasta ja ratkaisujen rakentamisesta hajautettujen tietojenkäsittelyn työkuormien nopeuttamiseksi.

Suorita PyTorch Lightning ja natiivi PyTorch DDP Amazon SageMaker Trainingissa, joka sisältää Amazon Search PlatoBlockchain Data Intelligencen. Pystysuuntainen haku. Ai.Vishwa Karia on ohjelmistokehitysinsinööri AWS Deep Enginessä. Hänen kiinnostuksen kohteet ovat koneoppimisen ja hajautettujen järjestelmien risteyskohdassa, ja hän on myös intohimoinen naisten voimaannuttamiseen tekniikassa ja tekoälyssä.

Suorita PyTorch Lightning ja natiivi PyTorch DDP Amazon SageMaker Trainingissa, joka sisältää Amazon Search PlatoBlockchain Data Intelligencen. Pystysuuntainen haku. Ai.Eiman Elnahrawy on Amazon Searchin johtava ohjelmistosuunnittelija, joka johtaa koneoppimisen kiihdyttämiseen, skaalaukseen ja automatisointiin liittyviä toimia. Hänen asiantuntemuksensa kattaa useita alueita, mukaan lukien koneoppiminen, hajautetut järjestelmät ja personointi.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen