Di cosa si tratta FP16, FP32 in Python? Io e il mio potenziale partner commerciale stiamo creando una configurazione di deep learning per lavorare con le serie temporali. Ha inventato “FP16 e FP32” mentre trovava una GPU. Sembra che stia parlando di valori in virgola mobile in 16 vs 32 bit. (I nostri punti dati hanno questo aspetto: “5989.12345”, quindi sono abbastanza sicuro che 16 bit non siano sufficienti.)

È FP16 una tecnica speciale che le GPU usano per migliorare le prestazioni o è solo un termine stravagante per usare valori float a 16 bit invece di 32 float standard?

Commenti

  • Sì, FP16 significa 16 bit nel contesto della GPU.

Risposta

FP32 e FP16 significano 32- bit floating point e 16 bit floating point. Le GPU originariamente si concentravano su FP32 perché questi sono i calcoli necessari per i giochi 3D. Oggigiorno molte GPU hanno il supporto nativo di FP16 per velocizzare il calcolo delle reti neurali. Se guardi alcuni benchmark ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) noterai che le GPU che supportano FP16 sono quasi due volte più veloci di calcolo FP16 rispetto a FP32. tenere conto che anche le schede più recenti che supportano FP16 (come la serie NVidia 2080) sono abo ut 20% più veloce per FP32 rispetto al loro predecessore (1080) si ottiene un aumento del 140% per addestrare le reti neurali FP16 rispetto a FP32 sulle schede precedenti.

Ma cè un avvertimento. La tua rete neurale deve essere scritta utilizzando FP16 e dovrebbe anche avere la stessa precisione. FP16 ha una precisione inferiore per progettazione, perché hanno molti meno bit per rappresentare lo stesso numero. Alcuni scelgono di utilizzare modelli di precisione mista per essere veloci e precisi ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Ma vedi nellultimo link che la velocità è più veloce per la precisione mista, ma non è 2 volte più veloce come quando usi FP16 puro. In teoria potresti anche utilizzare pesi FP32 e convertirne alcuni in pesi FP16, ma la precisione potrebbe diminuire.

Quindi alla fine devi capire se puoi riscrivere la tua rete neurale per utilizzare FP16 completamente o parzialmente . Se non è possibile, non si ottengono ulteriori vantaggi dalle schede compatibili con FP16.

Il valore massimo per FP16 è 65504 e il minimo è 5,96 × 10−8. La migliore precisione per 5989.12345 sarà molto probabilmente 5988.0 (riprodotta con bit su https://www.h-schmidt.net/FloatConverter/IEEE754.html ) Se questa precisione e grandezza è non abbastanza per te, potresti ridimensionare i tuoi dati prima dellallenamento per adattarli allFP16 e quindi allenarti con il doppio della velocità. Oppure utilizza modelli di precisione mista in cui hai FP32 come input e quindi riduci la precisione nei livelli successivi.

Commenti

  • Contenuto del blog altamente informativo, grazie a questo 🙂
  • Ho anche incluso una probabile rappresentazione del tuo numero nella FP16. Se sei soddisfatto della risposta, sarebbe bene se potessi controllare la risposta come risposta accettata e anche votare se lo desideri.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *