CUDA Academy · Oppitunti

Numeerisen vakauden kompromissit

Milloin pienempi tarkkuus vaatii huolellisuutta

Oppitunti 4/413 vaihetta

Numeerisen vakauden kompromissit on ilmainen CUDA Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/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 CUDA Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. CUDA Academy-kurssilla on yhteensä 4 oppituntia.

Nopeudella on hintansa

Pienemmän tarkkuuden Tensor Core -laskenta on nopeaa, mutta bittien vähäisempi määrä lisää pyöristysvirheitä. Numeerinen vakaus tarkoittaa sitä, että tulokset pidetään luotettavina. ⚖️

Mitä pyöristysvirhe tarkoittaa

Jokainen pienemmän tarkkuuden arvo pyöristetään lähimpään esitettävissä olevaan lukuun. Tämä pieni pyöristysvirhe on harmiton kerran, mutta voi kasaantua monien vaiheiden aikana.

FP16:n alivuoto

FP16:n kapea arvoalue saa pienet luvut putoamaan nollaan. Tätä kutsutaan alivuodoksi. Gradientit ja pienet painot voivat yksinkertaisesti kadota koulutuksen aikana.

FP16:n ylivuoto

Sama kapea arvoalue aiheuttaa ylivuodon: suuri arvo muuttuu äärettömäksi. Yksi virheellinen summa voi sen jälkeen turmella kaiken myöhemmän laskennan.

Loss scaling apuun

Yleinen ratkaisu on loss scaling: kasvattakaa arvot ennen FP16-laskentaa, jotta ne poistuvat alivuotoalueelta, ja skaalatkaa ne sen jälkeen takaisin pienemmiksi.

Miksi leveä akkumulaatio auttaa

Tensor Cores käyttää akkumulaatioon FP32:ta syystä. Leveämpi akkumulaattori estää tuhansia pieniä summauksia ajautumasta pahasti.

BF16 kiertää alueongelmat

Koska BF16 säilyttää FP32:n eksponentin, yli- ja alivuotoja tapahtuu harvoin. Sen heikkous on pienempi tarkkuus, ei supistunut arvoalue.

Katastrofaalinen kumoutuminen

Kahden lähellä toisiaan olevan luvun vähentäminen pyyhkii merkitsevät numerot pois. Tätä kutsutaan kumoutumiseksi. Pieni tarkkuus tekee jäljelle jäävästä virheestä paljon näkyvämmän.

Säilyttäkää kriittiset osat FP32:ssa

Turvallinen toimintatapa on sekamuotoinen tarkkuus: tehkää suuret kertolaskut FP16:lla tai BF16:lla, mutta pitäkää herkät summat, normit ja päivitykset FP32:ssa.

Tarkistakaa tarkkuus aina

Älkää koskaan olettako, että nopea kernel on oikein. Verratkaa sitä FP32-vertailutulokseen ja tarkistakaa, että virhe pysyy hyväksyttävän toleranssin rajoissa.

Virheen mittaaminen

Yksinkertainen tarkistus on itseisarvoinen erotus luotettuun tulokseen verrattuna. Verratkaa tätä virhettä valitsemaanne pieneen raja-arvoon.

float err = fabsf(gpu_result - cpu_result);

Pikatarkistus

Miksi Tensor Cores suorittaa osasummien akkumulaation FP32:ssa, vaikka syötteet ovat FP16-muodossa?

Kertaus

Opitte tarkkuuden kompromissit: varokaa FP16:n yli- ja alivuotoa, käyttäkää loss scaling -menetelmää ja FP32-akkumulaatiota sekä tarkistakaa tulokset aina vertailutulosta vasten. 🎯

Aloita maksutta

Opi C++ 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 ”Numeerisen vakauden kompromissit” ilmainen?

Kyllä – oppitunnin ”Numeerisen vakauden kompromissit” 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 CUDA Academy-kurssin, päivitä CoddyKit PROhon. CUDA Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Numeerisen vakauden kompromissit”?

Milloin pienempi tarkkuus vaatii huolellisuutta Harjoittelet CUDA Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni CUDA Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin CUDA Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Numeerisen vakauden kompromissit”-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ä CUDA Academy-oppitunnilla?

Kyllä. Jokainen CUDA 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

  1. Mitä Tensor Cores laskevat
  2. Sekatarkkuus: FP16, BF16, TF32
  3. WMMA-fragmentti-API
  4. Numeerisen vakauden kompromissit
← Takaisin: CUDA Academy