Mistä on kyse FP16: ssa, FP32: ssa Pythonissa? Potentiaalinen liikekumppanini ja minä rakennamme syvällisen oppimisen asetuksia aikasarjojen kanssa työskentelyyn. Hän keksi ”FP16 ja FP32” etsiessään GPU: ta. Näyttää siltä, että hän puhuu liukuluku-arvoista 16 vs 32-bittinen. (Datapisteemme näyttävät tältä: ”5989.12345”, joten en ole varma, että 16-bittinen ei riitä.)

Onko FP16 erityistekniikkaa GPU: t käyttävät suorituskyvyn parantamiseen vai onko se vain hieno termi 16-bittisten float-arvojen käyttämiselle 32 standardin float-arvon sijaan?

Kommentit

  • Kyllä, FP16 tarkoittaa 16 bittiä GPU: n yhteydessä.

Vastaus

FP32 ja FP16 tarkoittavat 32- bittinen liukuluku ja 16-bittinen liukuluku. GPU: t keskittyivät alun perin FP32: een, koska nämä ovat 3D-peleille tarvittavia laskelmia. Nykyään monilla grafiikkasuoritimilla on natiivi FP16-tuki hermoverkkojen laskemisen nopeuttamiseksi. Jos tarkastelet joitain vertailuarvoja ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) huomaat, että FP16: ta tukevat GPU: t laskevat FP16: n lähes kaksi kertaa nopeammin kuin FP32. huomioon, että uudemmat kortit, jotka tukevat FP16: ta (kuten NVidia 2080 -sarja), ovat myös abo FP32: n 20% nopeampi kuin edeltäjänsä (1080), saat 140% lisäyksen FP16: n hermoverkkojen kouluttamiseen verrattuna aiempien korttien FP32: een.

Mutta on olemassa varoitus. Neuroverkko on kirjoitettava FP16: lla, ja sen on myös oltava sama tarkkuus. FP16: lla on pienempi tarkkuus suunnittelun mukaan, koska niillä on paljon vähemmän bittejä edustamaan samaa lukua. Jotkut haluavat käyttää tarkkoja sekamalleja ollakseen nopeita ja tarkkoja ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Viimeisessä linkissä näet kuitenkin, että nopeus on nopeampaa sekoitetun tarkkuuden saavuttamiseksi, mutta ei 2 kertaa nopeampi kuin puhtaalla FP16: lla. Voit myös teoriassa käyttää FP32-painoja ja muuntaa osan niistä FP16-painoiksi, mutta tarkkuus voi pudota.

Joten lopulta sinun on ymmärrettävä, voisitko kirjoittaa hermoverkon uudelleen käyttääksesi FP16: ta kokonaan tai osittain . Jos et pysty, et saa lisäetuja FP16-yhteensopivista korteista.

FP16: n enimmäisarvo on 65504 ja pienin on 5,96 × 10−8. Paras tarkkuus tuotteelle 5989.12345 on todennäköisesti 5988,0 (toistetaan biteillä https://www.h-schmidt.net/FloatConverter/IEEE754.html ) Jos tämä tarkkuus ja suuruus on ei riitä sinulle, voit skaalata tietosi ennen harjoittelua FP16: een sopivaksi ja sitten harjoitella kaksinkertaisella nopeudella. Tai käytä sekoitettuja tarkkuusmalleja, joissa syötteenä on FP32, ja vähennä sitten tarkkuutta myöhemmissä kerroksissa.

Kommentit

  • erittäin informatiivinen blogisisältö, thx siitä 🙂
  • Lisäsin myös todennäköisen numerosi esityksen FP16: een. Jos olet tyytyväinen vastaukseen, olisi hyvä, jos voisit tarkistaa vastauksen hyväksytyksi vastaukseksi ja myös äänestää tarvittaessa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *