Sekatarkkuus autocastilla ja GradScalerilla
Puolitarkkuuslaskentaa suuria nopeusetuja varten
Sekatarkkuus autocastilla ja GradScalerilla on ilmainen Deep Learning Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Deep Learning Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.
Mitä mixed precision tarkoittaa
Oletusarvoisesti PyTorch suorittaa laskennan 32-bittisillä liukuluvuilla. Mixed precision suorittaa monia operaatioita sen sijaan 16-bittisinä, mikä on nopeampaa ja käyttää huomattavasti vähemmän muistia.
Miksi half precision on nopeampaa
Nykyaikaisissa näytönohjaimissa on 16-bittiseen laskentaan optimoituja erityisiä tensoriytimiä. Niille syötetty half precision -data voi nopeuttaa koulutusta kaksin- tai kolminkertaiseksi lähes ilman tarkkuuden heikkenemistä.
16 bitin haittapuoli
Half precisionin lukuarvoalue on pieni, joten hyvin pienet gradienttiarvot voivat pyöristyä nollaksi. Tämä huomaamaton alivuoto pysäyttää oppimisen, ellet puutu siihen.
Tutustu autocastiin
Kun sijoitat forward passin autocast-kontekstiin, PyTorch valitsee jokaiselle operaatiolle turvallisen tarkkuuden automaattisesti. Tensoreita ei tarvitse muuntaa käsin.
with torch.autocast(device_type='cuda'):
out = model(x)Mitä autocast sisältää
Sijoita vain forward pass ja loss autocastin sisään. Backward-kutsu jää lohkon ulkopuolelle, jossa PyTorch käsittelee tarkkuuden puolestasi.
with torch.autocast(device_type='cuda'):
out = model(x)
loss = loss_fn(out, y)Tutustu GradScaleriin
GradScaler korjaa alivuodon kertomalla häviön suurella kertoimella ennen backward-kutsua, jolloin pienet gradientit pysyvät riittävän suurina säilyäkseen 16-bittisinä.
scaler = torch.cuda.amp.GradScaler()Skaalaa häviö
Kutsu scaler.scale(loss).backward() komennon loss.backward() sijaan. Skaalain suurentaa häviön ensin, jotta tuloksena olevat gradientit eivät häviä.
scaler.scale(loss).backward()Suorita askel skaalain avulla
Suorita optimointi käyttämällä scaler.step-kutsua. Se palauttaa gradientit huomaamatta normaaliin kokoonsa ennen päivityksen käyttämistä.
scaler.step(optimizer)Päivitä skaalauskerroin
Viimeistele jokainen askel kutsumalla scaler.update(). Se kasvattaa skaalausta, kun kaikki toimii vakaasti, ja pienentää sitä, jos se havaitsee ylivuodon.
scaler.update()AMP:n koko askel
Yhdessä nämä kutsut muodostavat yhden selkeän AMP-iteraation: gradienttien nollaus, autocast-eteenpäinvienti, skaalattu taaksepäinvienti, skaalainaskel ja lopuksi päivitys.
optimizer.zero_grad()
with torch.autocast(device_type='cuda'):
loss = loss_fn(model(x), y)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()Milloin sitä kannattaa käyttää
Sekatarkkuus on parhaimmillaan uudehkolla NVIDIA-näytönohjaimella ja suurilla erillä. Tavallisella suorittimella siitä on vain vähän hyötyä, joten säästä se varsinaisiin harjoitusajoihin.
Pikatarkistus
Otit autocastin käyttöön, mutta pienet gradientit katoavat edelleen. Mikä työkalu korjaa tämän?
Kertaus
Kääri eteenpäinvienti autocast-kutsuun nopeaa 16-bittistä laskentaa varten ja käytä sitten GradScaleria skaalaamiseen, askeleen suorittamiseen ja päivittämiseen, jotta pienet gradientit säilyvät. ⚡
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Sekatarkkuus autocastilla ja GradScalerilla” ilmainen?
Kyllä – oppitunnin ”Sekatarkkuus autocastilla ja GradScalerilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Deep Learning Academy-kurssin, päivitä CoddyKit PROhon. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Sekatarkkuus autocastilla ja GradScalerilla”?
Puolitarkkuuslaskentaa suuria nopeusetuja varten Harjoittelet Deep Learning Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Deep Learning Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Deep Learning Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Sekatarkkuus autocastilla ja GradScalerilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Deep Learning Academy-oppitunnilla?
Kyllä. Jokainen Deep Learning Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Sekatarkkuus autocastilla ja GradScalerilla
- Gradienttien kerryttäminen suuria eriä varten
- Profiloikaa pullonkaula
- Vähentäkää GPU-muistin käyttöä