PyTorch Lightning 1.0: Fra 0–600k (Norsk)

Lyn avslører det endelige API-et, et nytt nettsted og et sniktitt på vår nye native plattform for opplæringsmodeller i stor skala på skyen.

(19. okt 2020)

Vi har jobbet hardt de siste par månedene med å finjustere API-en vår og polere docs , tar opp tutorials , og det er endelig på tide å dele med deg alle V1.0.0 av PyTorch Lightning. Vil du ha lynets svar på skaleringsmodeller på skyen? fortsett å lese.

Lightning DNA

AI-forskning har utviklet seg mye raskere enn noen enkelt rammeverk kan følge med. Feltet dyp læring utvikler seg kontinuerlig, mest i kompleksitet og skala. Lightning gir en brukeropplevelse designet for en verden av komplekse modellinteraksjoner mens du trekker bort alle de distraherende detaljene innen engineering, for eksempel multi-GPU og multi-TPU-trening, tidlig stopp, logging osv …

Rammeverk som PyTorch ble designet for en tid der AI-forskning hovedsakelig handlet om nettverksarkitekturer, et nn.Modul som kan definere rekkefølgen av operasjoner.

VGG16

Og disse rammene gjør en utrolig jobb med å tilby alle brikkene til å sette sammen ekstremt komplekse modeller for forskning eller produksjon. Men så snart modeller begynner å samhandle med hverandre, som en GAN, BERT eller en autoencoder, blir paradigmet ødelagt, og den enorme fleksibiliteten blir snart til en kjeleplate som er vanskelig å vedlikeholde når et prosjekt skalerer.

I motsetning til rammer som kom før, var PyTorch Lightning designet for å kapsle inn en samling modeller som interagerer sammen , det vi kaller dype læringssystemer. Lyn er bygget for de mer kompliserte forsknings- og produksjonssakene i dagens verden, der mange modeller samhandler med hverandre ved hjelp av kompliserte regler.

AutoEncoder system

Det andre nøkkelprinsippet til PyTorch Lightning er at maskinvare og «vitenskap» -koden må være separert. Lyn utviklet seg til å utnytte massiv beregning i skala uten å overflate noen av disse abstraksjonene til brukeren. Ved å gjøre denne separasjonen får du nye evner som ikke var mulig før som for eksempel feilsøking av 512 GPU-jobben på den bærbare datamaskinen din ved hjelp av CPUer uten å måtte endre koden.

Til slutt ble Lyn opprettet med visjonen om å bli et samfunnsdrevet rammeverk .

Å bygge gode dype læringsmodeller krever massevis av kompetanse og lite triks som får systemet til å fungere. Over hele verden implementerer hundrevis av utrolige ingeniører og doktorgrader den samme koden igjen og igjen. Lightning har nå et voksende bidragsfellesskap med over 300+ dyktige lærende mennesker rundt, som velger å tildele det samme energi og gjøre nøyaktig de samme optimaliseringene, men har i stedet tusenvis av mennesker som drar nytte av deres innsats.

Hva er nytt i 1.0.0

Lyn 1.0.0 signaliserer et stabilt og final API.

Dette betyr at de store forskningsprosjektene som er avhengige av lyn, kan være lett å vite at koden deres ikke vil gå i stykker eller endre seg fremover.

Research + Production

Lynets kjernestyrke er å muliggjøre toppmoderne teknologi AI-forskning skal skje i målestokk. Det er et rammeverk designet for profesjonelle forskere for å prøve de vanskeligste ideene til de største beregningsressursene uten å miste fleksibilitet.

Vi er glade for å kunngjøre at Lightning 1.0.0 nå er også gjør det trivielt å distribuere disse modellene i stor skala. All Lightning-koden sørger for at alt enkelt kan eksporteres til onnx og torchscript.

Så , dette betyr at teamet ditt med dataforskere, forskere osv. nå kan BE menneskene som også satte modeller i produksjon. De trenger ikke store team med maskinlæringsingeniører.

Dette er en hovedårsak til at ledende selskaper bruker lyn: som en måte å hjelpe dem med å kutte tid til produksjon dramatisk uten å miste fleksibilitet som er nødvendig for forskning .

Og dette er akkurat hva vårt bedriftstilbud gjør: Grid AI er vår innfødt plattform for opplæring av modeller i stor skala på skyen. Grid lar alle som bygger modeller for dyp læring gjenta på massiv beregning og deretter umiddelbart distribuere disse modellene i et skalerbart miljø som er i stand til å håndtere den største trafikken du kan kaste i et dyp læringssystem.

Registrer deg for tidlig tilgang her .

rutenett

Nettsted

Du vil også legge merke til at vi har sentralisert alle blogginnlegg , lynhurtige videoveiledninger , fellesskapsprosjekter og andre ressurser under helt ny hjemmeside for å vise frem alle ting Lyn!

Metrics

pytorch\_lightning.metrics er en Metrics API opprettet for enkel metrisk utvikling og bruk i PyTorch og PyTorch Lightning. Den oppdaterte API-en gir en innebygd metode for å beregne beregningen på tvers av flere GPUer (prosesser) for hvert trinn, mens du samtidig lagrer statistikk som lar deg beregne beregningen på slutten av en periode, uten å måtte bekymre deg for noe av kompleksiteten knyttet til den distribuerte bakenden.

Den er nøye testet for alle kanttilfeller og inkluderer en voksende liste over vanlige metriske implementeringer, for eksempel Nøyaktighet , Presisjon , Recall , Fbeta , MeanSquaredError og mer.

Slik gjør du bruk .log i LightningModule

For å implementere den tilpassede beregningen din, klasser du bare underklassen Metric og implementerer \_\_init\_\_(), update() og compute() metoder. Alt du trenger å gjøre er å ringe add\_state() riktig for å implementere en tilpasset beregning med DDP. reset() kalles på metriske tilstandsvariabler som er lagt til ved bruk av add\_state().

Manuell vs automatisk optimalisering

Med Lightning trenger du ikke å bekymre deg for når du skal aktivere / deaktivere grader, gjøre et tilbakeblikk eller oppdatere optimaliserere så lenge du returnerer et tap med en vedlagt graf fra training\_step, automatiserer Lightning optimaliseringen.

For visse undersøkelser som GAN, forsterkningslæring eller noe med flere optimaliserere eller en indre sløyfe, kan du imidlertid slå av automatisk optimalisering og fullstendig kontrollere treningssløyfen selv.

Slå først av automatisk optimalisering:

trainer = Trainer(automatic\_optimization=False)

Nå eier du togslyngen!

Logging

Lyn gjør integrering med loggere superenkelt – bare ring log() -metoden hvor som helst på LightningModule, og den vil sende det loggede antallet til din logger. Vi bruker Tensorboard som standard, men du kan velge hvilken som helst støttet logger du ønsker.

Avhengig av hvor .log() kalles fra, Lightning bestemmer automatisk når loggingen skal foregå (på hvert trinn eller hver epoke), men selvfølgelig kan du overstyre standardadferden ved å bruke on\_step og on\_epoch alternativer. Innstilling av on\_epoch=True vil samle dine loggede verdier over hele treningsperioden.

Dataflyt

Vi utfaset EvalResult og TrainResult til fordel for forenkling av dataflyt og frakobling av logging fra data i trenings- og valideringsløkker.

Hver sløyfe (trening, validering, test) har tre kroker du kan implementere:

  • x\_step
  • x\_step\_end
  • x\_epoch\_end

For å illustrere hvordan data flyter, bruker vi treningssløyfen (dvs. x = trening)

outs = []
for batch in data:
out = training\_step(batch)
outs.append(out)training\_epoch\_end(outs)

Alt du returnerer i training\_step kan brukes som inngang til training\_epoch\_end.

Det samme gjelder validering og testtrinn: alt som returneres i validation\_step eller test\_step kan brukes som inngang til {validation/test}\_step\_end eller {validation/test}\_epoch\_end.I tilfelle du bruker DP- eller DDP2-distribuerte moduser (dvs. dele en gruppe på tvers av GPUer), bruk x\_step\_end for å samle manuelt (eller ikke implementere det for å la lyn automatisk) aggregat for deg).

Kontrollpunkt

Lyn lagrer nå automatisk et kontrollpunkt for deg i din nåværende arbeidskatalog, med tilstanden til din siste treningsperiode. Dette sørger for at du kan fortsette opplæringen i tilfelle den ble avbrutt.

Du kan tilpasse kontrollpunktadferden for å overvåke et hvilket som helst antall trenings- eller valideringstrinn. Hvis du for eksempel vil oppdatere sjekkpunktene dine basert på valideringstapet ditt:

  1. Beregn hvilken beregning eller annen mengde du vil overvåke, for eksempel valideringstap.
  2. Logg mengden ved hjelp av log() -metoden, med en nøkkel som val\_loss.
  3. Initialiserer

    ModelCheckpoint tilbakeringing, og sett monitor for å være nøkkelen til antallet.

  4. Send tilbakeringingen til checkpoint\_callback Trenerflagg.

Les om alle API-endringer, inkludert mange feilrettinger, i våre versjonsmerknader .

Takk

Vi feirer ikke V1.0.0 uten det utrolige arbeidet til vårt strålende kjerneteam som jobber døgnet rundt for å få alle små detaljer riktig, konstant støtte fra PyTorch-teamet , og selvfølgelig våre fellesskapsmedlemmer. Vi vil personlig takke alle som bidro med PR eller gjennomgikk dem, sendte tilbakemeldinger og problemer, svarte i forumet vårt eller i vårt slappe samfunn. Denne er for dere alle!

registrer deg her

Vil du lære mer om lyn? Gå til nettstedet , les docene , eller bli med vårt aller første virtuelle møte- Ask Me Anything with William Falcon , skaper av lyn! Møtet vil finne sted 21. oktober 2020, kl. 13 EST, så ta med lunsj eller middag, og kom og lær mer om nye funksjoner, rutenett eller noe annet du alltid ønsket å vite, men aldri spurte. Registrer deg her .