Worum geht es in FP16, FP32 in Python? Mein potenzieller Geschäftspartner und ich bauen ein Deep Learning-Setup für die Arbeit mit Zeitreihen auf. Er fand „FP16 und FP32“, als er eine GPU fand. Es sieht so aus, als würde er über Gleitkommawerte in 16 gegenüber 32 Bit sprechen. (Unsere Datenpunkte sehen folgendermaßen aus: „5989.12345“, daher bin ich mir ziemlich sicher, dass 16 Bit nicht ausreichen.)

Ist FP16 Eine spezielle Technik, mit der GPUs die Leistung verbessern, oder ist es nur ein ausgefallener Begriff für die Verwendung von 16-Bit-Float-Werten anstelle von 32 Standard-Floats?

Kommentare

  • Ja, FP16 bedeutet im Kontext der GPU 16 Bit.

Antwort

FP32 und FP16 bedeuten 32- Bit-Gleitkomma- und 16-Bit-Gleitkomma-GPUs konzentrierten sich ursprünglich auf FP32, da dies die für 3D-Spiele erforderlichen Berechnungen sind. Heutzutage unterstützen viele GPUs FP16 nativ, um die Berechnung neuronaler Netze zu beschleunigen. Wenn Sie sich einige Benchmarks ansehen ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) Sie werden feststellen, dass GPUs, die FP16 unterstützen, FP16 fast doppelt so schnell berechnen wie FP32 Konto, dass neuere Karten, die FP16 unterstützen (wie NVidia 2080-Serie), auch abo sind Wenn FP32 20% schneller ist als sein Vorgänger (1080), erhalten Sie eine Steigerung von 140%, um neuronale FP16-Netze im Vergleich zu FP32 auf früheren Karten zu trainieren.

Es gibt jedoch eine Einschränkung. Ihr neuronales Netzwerk muss mit FP16 geschrieben werden und die gleiche Genauigkeit aufweisen. FP16 haben konstruktionsbedingt eine geringere Genauigkeit, da sie viel weniger Bits haben, um dieselbe Zahl darzustellen. Einige verwenden Modelle mit gemischter Präzision, um schnell und genau zu sein ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Aber Sie sehen im letzten Link, dass die Geschwindigkeit für gemischte Präzision schneller ist, aber nicht zweimal schneller als bei Verwendung von reinem FP16. Sie könnten theoretisch auch FP32-Gewichte verwenden und einige davon in FP16-Gewichte konvertieren, aber die Genauigkeit könnte sinken.

Am Ende müssen Sie also verstehen, ob Sie Ihr neuronales Netzwerk neu schreiben können, um FP16 ganz oder teilweise zu verwenden . Wenn Sie dies nicht können, erhalten Sie keine zusätzlichen Vorteile von FP16-kompatiblen Karten.

Der Maximalwert für FP16 beträgt 65504 und der Minimalwert 5,96 × 10−8. Die beste Genauigkeit für 5989.12345 ist höchstwahrscheinlich 5988.0 (gespielt mit Bits auf https://www.h-schmidt.net/FloatConverter/IEEE754.html ), wenn diese Genauigkeit und Größe gleich ist Nicht genug für Sie, dann könnten Sie Ihre Daten vor dem Training auf das FP16 skalieren und dann mit doppelter Geschwindigkeit trainieren. Oder verwenden Sie Modelle mit gemischter Genauigkeit, bei denen Sie FP32 als Eingabe haben, und reduzieren Sie dann die Genauigkeit in späteren Ebenen.

Kommentare

  • Hochinformativer Blog-Inhalt, danke dafür 🙂
  • Ich habe auch eine wahrscheinliche Darstellung Ihrer Nummer in das RP16 aufgenommen. Wenn Sie mit der Antwort zufrieden sind, wäre es gut, wenn Sie die Antwort als akzeptierte Antwort überprüfen und auch eine positive Bewertung abgeben könnten, wenn Sie möchten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.