Hvad handler det om FP16, FP32 i Python? Min potentielle forretningspartner og jeg bygger en Deep Learning Setup til at arbejde med tidsserier. Han kom med “FP16 og FP32”, mens han fandt en GPU. Det ser ud til, at han taler om flydende punktværdier i 16 vs 32bit. (Vores datapunkter ser sådan ud: “5989.12345”, så jeg er ret sikker på, at 16bit ikke er nok.)

Er FP16 en speciel teknik, GPUer bruger til at forbedre ydeevnen, eller er det bare et smukt udtryk for brug af 16-bit floatværdier i stedet for 32 standard floats?

Kommentarer

  • Ja, FP16 betyder 16 bits i GPU-sammenhæng.

Svar

FP32 og FP16 betyder 32- bit floating point og 16-bit floating point. GPUer fokuserede oprindeligt på FP32, fordi det er de beregninger, der er nødvendige for 3D-spil. I dag har mange GPUer oprindelig understøttelse af FP16 for at fremskynde beregningen af neurale netværk. Hvis man ser på nogle benchmarks ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) vil du se, at GPUer, der understøtter FP16, næsten dobbelt så hurtig beregning af FP16 end FP32. konto, at nyere kort, der understøtter FP16 (som NVidia 2080-serien), også er abo ud 20% hurtigere til FP32 sammenlignet med deres forgænger (1080) får du en stigning på 140% for at træne FP16 neurale netværk sammenlignet med FP32 på tidligere kort.

Men der er en advarsel. Dit neurale netværk skal skrives ved hjælp af FP16, og det skal også have samme nøjagtighed. FP16 har lavere nøjagtighed ved design, fordi de har meget mindre bits til at repræsentere det samme antal. Nogle vælger at bruge modeller med blandet præcision for at være hurtige og nøjagtige ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Men du ser i det sidste link, at hastigheden er hurtigere for blandet præcision, men ikke er 2 gange hurtigere, som når du bruger ren FP16. Du kan også teoretisk bruge FP32-vægte og konvertere nogle af dem til FP16-vægte, men nøjagtigheden kan falde.

Så i sidste ende skal du forstå, om du kunne omskrive dit neurale netværk for at bruge FP16 helt eller delvist . Hvis du ikke kan, får du ikke yderligere fordele fra FP16-kompatible kort.

Den maksimale værdi for FP16 er 65504, og minimumet er 5,96 × 10−8. Den bedste præcision for 5989.12345 vil sandsynligvis være 5988.0 (spillet med bits på https://www.h-schmidt.net/FloatConverter/IEEE754.html ) Hvis denne præcision og størrelse er ikke nok for dig, så kan du skalere dine data inden træning for at passe til FP16 og derefter træne med dobbelt hastighed. Eller brug modeller med blandet præcision, hvor du har FP32 som input, og reducer derefter præcision i senere lag.

Kommentarer

  • meget informativt blogindhold, thx for det 🙂
  • Jeg inkluderede også en sandsynlig repræsentation af dit nummer i FP16. Hvis du er tilfreds med svaret, ville det være godt, hvis du kunne kontrollere svaret som det accepterede svar og også opstemme, hvis du vil.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *