Numeerisen vakauden kompromissit
Milloin pienempi tarkkuus vaatii huolellisuutta
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. 🎯
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
- Mitä Tensor Cores laskevat
- Sekatarkkuus: FP16, BF16, TF32
- WMMA-fragmentti-API
- Numeerisen vakauden kompromissit