Käivitage PyTorch Lightning ja natiivne PyTorch DDP rakenduses Amazon SageMaker Training, mis sisaldab Amazon Search PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.

Käivitage PyTorch Lightning ja natiivne PyTorch DDP rakenduses Amazon SageMaker Training, mis sisaldab Amazon Searchi

Nii palju andmeid, nii vähe aega. Masinõppe (ML) eksperdid, andmeteadlased, insenerid ja entusiastid on selle probleemiga kokku puutunud kogu maailmas. Alates loomuliku keele töötlemisest kuni arvutinägemiseni, tabelitest kuni aegridadeni ja kõige selle vahele jääva igivana probleem kiiruse optimeerimise kohta andmete käitamisel nii paljude GPU-dega kui võimalik, on inspireerinud lugematuid lahendusi. Täna on meil hea meel teatada funktsioonidest PyTorchi arendajatele, kes kasutavad natiivseid avatud lähtekoodiga raamistikke, nagu PyTorchi välk ja PyTorch DDP, mis lihtsustab nende teed pilve poole.

Amazon SageMaker on ML-i täielikult hallatav teenus ja SageMakeri mudelikoolitus on optimeeritud arvutuskeskkond suure jõudlusega koolituse jaoks. SageMakeri mudelikoolitus pakub kaugõppekogemust sujuva juhtimistasandiga, et hõlpsasti treenida ja reprodutseerida ML-mudeleid suure jõudlusega ja madalate kuludega. Meil on hea meel teatada SageMakeri koolitusportfelli uutest funktsioonidest, mis muudavad PyTorchi mastaabis käitamise veelgi lihtsamaks ja juurdepääsetavamaks:

  1. PyTorch Lightningi saab nüüd integreerida SageMakeri hajutatud andmete paralleelteek ainult üherealise koodivahetusega.
  2. SageMakeri mudelikoolitus toetab nüüd natiivset PyTorchi hajutatud andmeparalleeli koos NCCL-taustaprogrammiga, võimaldades arendajatel SageMakerile üle minna lihtsamalt kui kunagi varem.

Selles postituses käsitleme neid uusi funktsioone ja õpime ka seda, kuidas Amazon Search on käivitanud PyTorch Lightningi koos SageMakeri optimeeritud hajutatud treeningtaustaprogrammiga, et kiirendada mudelitreeningu aega.

Enne Amazon Searchi juhtumiuuringusse sukeldumist sooviksime neile, kes pole tuttavad, anda tausta SageMakeri hajutatud andmete paralleelteek. 2020. aastal töötasime välja ja lansseerisime kohandatud klastri konfiguratsiooni mastaabis hajutatud gradiendi laskumiseks, mis suurendab klastri üldist tõhusust. Seda tutvustati Amazon Science'is Heeringas. Kasutades parimaid parameetriservereid ja rõngapõhiseid topoloogiaid, on SageMaker Distributed Data Parallel (SMDDP) optimeeritud Amazon Elastic Compute Cloud (Amazon EC2) võrgu topoloogia, sealhulgas EFA. Suuremate klastri suuruste korral suudab SMDDP pakkuda 20–40% läbilaskevõimet võrreldes Horovodi (TensorFlow) ja PyTorchi hajutatud andmetega paralleelselt. Väiksemate klastri suuruste ja toetatud mudelite jaoks soovitame SageMakeri koolituse kompilaator, mis võib vähendada üldist tööaega kuni 50%.

Klientide tähelepanu keskpunktis: PyTorch Lightning SageMakeri optimeeritud taustaprogrammis Amazon Searchiga

Amazon Search vastutab otsingu- ja avastamiskogemuse eest Amazon.com. See suurendab otsingukogemust klientidele, kes otsivad Amazonist tooteid. Kõrgel tasemel loob Amazon Search indeksi kõigi Amazon.com-is müüdavate toodete jaoks. Kui klient sisestab päringu, kasutab Amazon Search mitmesuguseid ML-tehnikaid, sealhulgas süvaõppe mudeleid, et sobitada asjakohased ja huvitavad tooted kliendi päringuga. Seejärel järjestab ta tooted enne tulemuste näitamist kliendile.

Amazon Searchi teadlased on kasutanud PyTorch Lightningit ühe peamise raamistikuna, et koolitada süvaõppe mudeleid, mis võimaldavad otsingu järjestamist tänu PyTorchile lisatud kasutatavusfunktsioonidele. Enne seda uut SageMakeri käivitamist PyTorch Lightningis kirjutatud süvaõppemudelite puhul SMDDP-d ei toetatud. See takistas Amazon Searchi teadlastel, kes eelistavad kasutada PyTorch Lightningut, oma mudelitreeningut skaleerimast andmete paralleelsete tehnikate abil, aeglustades oluliselt nende treeninguaega ja takistades neil katsetada uusi eksperimente, mis nõuavad rohkem skaleeritavat koolitust.

Meeskonna varasemad võrdlusuuringu tulemused näitavad kaheksal sõlmel treenimisel näidismudeli jaoks 7.3 korda kiiremat treeninguaega võrreldes ühe sõlmega treeningu algtasemega. Nendes võrdlusuuringutes kasutatav lähtemudel on mitmekihiline pertseptron-närvivõrk, millel on seitse tihedat täielikult ühendatud kihti ja üle 200 parameetri. Järgmine tabel võtab kokku ml.p3.16xlarge SageMakeri koolitusjuhtumite võrdlusuuringu tulemused.

Juhtumite arv Treeningu aeg (minutites) paranemine
1 99 Baseline
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Järgmisena sukeldume uute väljalaskmiste üksikasjadesse. Kui soovite, võite meie kirjavahetuse kaudu läbi astuda näidismärkmik .

Käivitage PyTorch Lightning koos SageMakeri hajutatud koolitusteegiga

Meil on hea meel teatada, et SageMaker Data Parallel integreerub SageMakeri koolituse raames nüüd sujuvalt PyTorch Lightningiga.

PyTorch Lightning on avatud lähtekoodiga raamistik, mis lihtsustab PyTorchis kohandatud mudelite kirjutamist. Mõnes mõttes sarnaselt sellega, mida Keras tegi TensorFlow või isegi vaieldamatult Hugging Face jaoks, pakub PyTorch Lightning kõrgetasemelist API-d abstraktsioonidega suure osa PyTorchi enda madalama taseme funktsioonide jaoks. See hõlmab mudeli määratlemist, profiilide koostamist, hindamist, kärpimist, mudeli paralleelsust, hüperparameetrite konfiguratsioone, ülekande õppimist ja palju muud.

Varem ei olnud PyTorch Lightningi arendajad kindlad, kuidas oma koolituskoodi sujuvalt üle viia suure jõudlusega SageMakeri GPU-klastritesse. Lisaks ei saanud nad kuidagi ära kasutada SageMaker Data Paralleli pakutud tõhususe kasvu.

PyTorch Lightningi puhul peaks üldiselt olema koodimuutusi vähe või üldse mitte, et neid API-sid SageMakeri koolitusel lihtsalt käitada. Näidismärkmike puhul kasutame DDPS-strateegia ja DDPPplugin meetodid.

PyTorch Lightningi koos SageMaker Data Paralleli optimeeritud taustaprogrammina kasutamiseks on kolm sammu:

  1. Kasutage toetatud AWS-i süvaõppe konteiner (DLC) oma põhipildina või soovi korral looge oma konteiner ja installige SageMaker Data Parallel taustaprogramm ise. Veenduge, et PyTorch Lightning oleks teie vajalikes pakettides, näiteks koos a requirements.txt faili.
  2. Tehke oma treeningskriptis mõned väikesed koodimuudatused, mis võimaldavad optimeeritud taustaprogrammi. Need sisaldavad:
    1. Importige SM DDP teek:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. PyTorch Lightningi keskkonna seadistamine SageMakeri jaoks:
      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. Kui kasutate PyTorch Lightningu versiooni, mis on vanem kui 1.5.10, peate lisama veel mõned sammud.
      1. Esmalt lisage keskkonnamuutuja:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Teiseks veenduge, et kasutate DDPPlugin, Mitte aga DDPStrategy. Kui kasutate uuemat versiooni, mida saate hõlpsalt seadistada, asetades requirements.txt aasta source_dir teie töö jaoks pole see vajalik. Vaadake järgmist koodi:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Soovi korral määrake oma protsessirühma taustaprogramm järgmiselt "smddp" aasta DDPSTrategy objektiks. Kui aga kasutate PyTorch Lightningit PyTorch DDP taustaprogrammiga, mida samuti toetatakse, eemaldage see lihtsalt `process_group_backend` parameeter. Vaadake järgmist koodi:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Veenduge, et teil oleks hinnangus märgitud jaotusmeetod, näiteks distribution={"smdistributed":{"dataparallel":{"enabled":True} kui kasutate Herringi taustaprogrammi või distribution={"pytorchddp":{"enabled":True}.
  • Sobivate parameetrite täieliku loendi leiate jaotisest distribution parameetrit, vaadake meie dokumentatsiooni siin.

Nüüd saate alustada oma SageMakeri koolitustööga! Treeningtöö saate käivitada Pythoni SDK, Boto3, SageMakeri konsooli, AWS-i käsurea liides (AWS CLI) ja lugematul hulgal muid meetodeid. AWS-i vaatenurgast on see nii üks API käsk: create-training-job. Olenemata sellest, kas käivitate selle käsu kohalikust terminalist, AWS Lambda funktsioon, an Amazon SageMaker Studio sülearvuti, KubeFlow torujuhe või mõni muu arvutuskeskkond on täielikult teie otsustada.

Pange tähele, et PyTorch Lightningi ja SageMaker Data Paralleli vahelist integreerimist toetatakse praegu ainult PyTorchi uuemate versioonide puhul alates versioonist 1.11. Lisaks on see väljalase saadaval ainult SageMakeri AWS-i DLC-des alates PyTorch 1.12-st. Osutage kindlasti sellele pildile oma alusena. sisse us-east-1, see aadress on järgmine:

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

Seejärel saate oma Dockeri konteinerit laiendada, kasutades seda põhipildina, või edastada selle muutujana faili image_uri argument SageMaker koolituse hindaja.

Selle tulemusel saate käitada oma PyTorch Lightningi koodi SageMaker Trainingi optimeeritud GPU-del, pakkudes parimat AWS-i jõudlust.

Käivitage PyTorch Distributed Data Parallel rakenduses SageMaker

Suurim probleem PyTorchi hajutatud andmeparalleel (DDP) lahendab on petlikult lihtne: kiirus. Hea hajutatud koolitusraamistik peaks tagama stabiilsuse, töökindluse ja mis kõige tähtsam, suurepärase jõudluse kogu ulatuses. PyTorch DDP aitab seda saavutada, pakkudes taskulampide arendajatele API-sid, et kopeerida oma mudeleid mitme GPU-seadmega nii ühe sõlme kui ka mitme sõlme seadetes. Seejärel haldab raamistik erinevate objektide jagamist koolitusandmestikust iga mudeli koopiani, keskmistades iga mudeli koopia gradientide, et neid igal etapil sünkroonida. See toodab ühe mudeli pärast kogu treeningu lõppu. Seda protsessi illustreerib järgmine diagramm.

PyTorch DDP on levinud projektides, mis kasutavad suuri andmekogumeid. Iga andmestiku täpne suurus on väga erinev, kuid üldine juhis on andmekogude skaleerimine, suuruse arvutamine ja mudeli suurused sarnastes suhetes. Nimetatud ka skaleerimise seadused, on nende kolme optimaalne kombinatsioon vägagi vaieldav ja varieerub olenevalt rakendustest. AWS-is, mis põhineb mitme kliendiga töötamisel, näeme selgelt andmete paralleelsete strateegiate eeliseid, kui andmestiku üldine suurus on vähemalt mõnikümmend GB. Kui andmekogumid muutuvad veelgi suuremaks, on teatud tüüpi andmete paralleelstrateegia rakendamine kriitilise tähtsusega tehnika üldise katse kiirendamiseks ja väärtuse leidmiseks kuluva aja parandamiseks.

Varem polnud klientidel, kes kasutasid PyTorch DDP-d ruumides või muudes arvutuskeskkondades hajutatud koolituseks, raamistikku, mis võimaldaks hõlpsalt oma projekte SageMaker Trainingile migreerida, et kasutada ära suure jõudlusega graafikaprotsessoreid sujuva juhtimistasandiga. Täpsemalt, nad pidid kas migreerima oma andmed paralleelse raamistiku SMDDP-sse või arendama ja testima PyTorch DDP võimalusi SageMakeri koolitusel käsitsi. Täna pakub SageMaker Training hea meelega PyTorchi DDP-koodi kasutuselevõtu klientidele sujuvat kogemust.

Selle tõhusaks kasutamiseks ei pea te oma treeningskriptides muudatusi tegema.

Seda uut parameetrit näete järgmises koodis. Aastal distribution parameeter, lihtsalt lisage pytorchddp ja määrake lubatud kui 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"}}
)

See uus konfiguratsioon algab SageMaker Python SDK versioonidest 2.102.0 ja PyTorchi DLC versioonist 1.11.

PyTorch DDP arendajatele, kes tunnevad populaarset tõrvik raamistikus, on kasulik teada, et see pole vajalik SageMakeri koolituskeskkonnas, mis juba pakub tugevat veataluvust. Koodi ümberkirjutamise minimeerimiseks võite sisestada sisenemispunktina teise käivitusskripti, mis seda käsku käivitab.

Nüüd saavad PyTorchi arendajad hõlpsasti oma skripte SageMakerisse teisaldada, tagades, et nende skriptid ja konteinerid saaksid sujuvalt töötada mitmes arvutuskeskkonnas.

See valmistab neid ette tulevikus ära kasutama SageMakeri hajutatud koolitusraamatukogud mis pakuvad AWS-i jaoks optimeeritud treeningtopoloogiaid kuni 40% kiirendamiseks. PyTorchi arendajate jaoks on see üks koodirida! PyTorchi DDP-koodi jaoks saate lihtsalt taustaprogrammi seadistada smddp initsialiseerimisel (vt Muutke PyTorchi koolitusskripti), nagu on näidatud järgmises koodis:

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

Nagu eespool nägime, saate määrata ka rakenduse taustaprogrammi DDPStrategy et smddp välgu kasutamisel. See võib kaasa tuua kuni 40% üldised kiirendused suurte klastrite jaoks! SageMakeri hajutatud koolituse kohta lisateabe saamiseks vt meie tellitav veebiseminar, toetades märkmikud, asjakohane dokumentatsioonja dokumendid.

Järeldus

Selles postituses tutvustasime SageMaker Trainingu perekonna kahte uut funktsiooni. Need muudavad PyTorchi arendajatel palju lihtsamaks oma olemasoleva koodi kasutamise SageMakeris, nii PyTorch DDP kui ka PyTorch Lightningis.

Samuti näitasime, kuidas Amazon Search kasutab SageMakeri koolitust oma süvaõppemudelite ja eriti PyTorch Lightningi koolitamiseks koos taustaprogrammina SageMaker Data Parallel optimeeritud kollektiivse raamatukoguga. Üleminek hajutatud koolitusele aitas Amazon Searchil saavutada 7.3 korda kiirema rongiaja.


Autoritest

Käivitage PyTorch Lightning ja natiivne PyTorch DDP rakenduses Amazon SageMaker Training, mis sisaldab Amazon Search PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Emily Webber liitus AWS-iga vahetult pärast SageMakeri käivitamist ja on sellest ajast saati üritanud sellest maailmale rääkida! Lisaks klientidele uute ML-kogemuste loomisele naudib Emily mediteerimist ja Tiibeti budismi õppimist.

Käivitage PyTorch Lightning ja natiivne PyTorch DDP rakenduses Amazon SageMaker Training, mis sisaldab Amazon Search PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai. Karan Dhiman on Kanadas Torontos asuva AWS-i tarkvaraarenduse insener. Ta on väga kirglik masinõpperuumi ja hajutatud andmetöötluse töökoormuse kiirendamise lahenduste loomise vastu.

Käivitage PyTorch Lightning ja natiivne PyTorch DDP rakenduses Amazon SageMaker Training, mis sisaldab Amazon Search PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Vishwa Karia on AWS Deep Engine'i tarkvaraarenduse insener. Tema huvid on masinõppe ja hajutatud süsteemide ristumiskohas ning samuti on ta kirglik naiste mõjuvõimu suurendamiseks tehnoloogia ja tehisintellektiga.

Käivitage PyTorch Lightning ja natiivne PyTorch DDP rakenduses Amazon SageMaker Training, mis sisaldab Amazon Search PlatoBlockchain Data Intelligence'i. Vertikaalne otsing. Ai.Eiman Elnahrawy on Amazon Searchi peamine tarkvarainsener, kes juhib masinõppe kiirendamise, skaleerimise ja automatiseerimise alal. Tema teadmised hõlmavad mitut valdkonda, sealhulgas masinõpet, hajutatud süsteeme ja isikupärastamist.

Ajatempel:

Veel alates AWS-i masinõpe