Ce este totul despre FP16, FP32 în Python? Eu și potențialul meu partener de afaceri construim o configurație de învățare profundă pentru a lucra cu seriile cronologice. El a venit cu „FP16 și FP32” în timp ce găsea un GPU. Se pare că vorbește despre valorile în virgulă mobilă în 16 față de 32 biți. (Punctele noastre de date arată astfel: „5989.12345”, așa că sunt destul de sigur că 16 biți nu sunt suficient.)
Este FP16 o tehnică specială utilizată de GPU-uri pentru a îmbunătăți performanța sau este doar un termen extravagant pentru utilizarea valorilor flotante pe 16 biți în loc de 32 flotări standard?
Comentarii
- Da, FP16 înseamnă 16 biți în contextul GPU.
Răspuns
FP32 și FP16 înseamnă 32- virgulă mobilă și virgulă mobilă pe 16 biți. GPU-urile s-au concentrat inițial pe FP32 deoarece acestea sunt calculele necesare pentru jocurile 3D. În zilele noastre o mulțime de GPU-uri au suport nativ al FP16 pentru a accelera calculul rețelelor neuronale. Dacă te uiți la unele repere ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) veți vedea că GPU-urile care acceptă FP16 sunt aproape de două ori mai rapide la calcularea FP16 decât FP32. Țineți cont de faptul că cardurile mai noi care acceptă FP16 (precum seria NVidia 2080) sunt, de asemenea, abo Cu 20% mai rapid pentru FP32 comparativ cu predecesorul lor (1080), veți obține o creștere de 140% pentru a antrena rețelele neuronale FP16 comparativ cu FP32 pe cardurile anterioare.
Dar există o avertizare. Rețeaua dvs. neuronală trebuie să fie scrisă utilizând FP16 și trebuie să aibă, de asemenea, aceeași precizie. FP16 au o precizie mai mică prin design, deoarece au mult mai puțini biți pentru a reprezenta același număr. Unii aleg să folosească modele mixte de precizie pentru a fi rapide și exacte ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Dar vedeți în ultimul link că viteza este mai mare pentru o precizie mixtă, dar nu este de 2 ori mai rapidă ca atunci când utilizați FP16 pur. Puteți utiliza teoretic greutăți FP32 și puteți converti unele dintre ele în greutăți FP16, dar precizia ar putea scădea.
Deci, în final, trebuie să înțelegeți dacă ați putea rescrie rețeaua dvs. neuronală pentru a utiliza FP16 complet sau parțial. . Dacă nu puteți, nu obțineți niciun beneficiu suplimentar de pe cardurile compatibile FP16.
Valoarea maximă pentru FP16 este 65504, iar cea minimă este 5,96 × 10-8. Cea mai bună precizie pentru 5989.12345 va fi cel mai probabil 5988.0 (jucată cu biți pe https://www.h-schmidt.net/FloatConverter/IEEE754.html ) Dacă această precizie și magnitudine este nu este suficient pentru dvs., atunci puteți să vă scalați datele înainte de antrenament pentru a se potrivi cu FP16 și apoi să vă antrenați cu viteza dublă. Sau utilizați modele mixte de precizie unde aveți FP32 ca intrare și apoi reduceți precizia în straturile ulterioare.
Comentarii
- conținut de blog extrem de informativ, thx pentru asta 🙂
- Am inclus și o reprezentare probabilă a numărului dvs. în FP16. Dacă sunteți mulțumit de răspuns, ar fi bine dacă ați putea verifica răspunsul ca răspuns acceptat și, de asemenea, votați dacă doriți.