O co chodzi w FP16, FP32 w Pythonie? Mój potencjalny partner biznesowy i ja tworzymy konfigurację Deep Learning do pracy z szeregami czasowymi. Wymyślił „FP16 i FP32”, znajdując GPU. Wygląda na to, że mówi o wartościach zmiennoprzecinkowych w 16 i 32-bitowych. (Nasze punkty danych wyglądają następująco: „5989.12345”, więc jestem prawie pewien, że 16 bitów to za mało).

Czy FP16 specjalna technika stosowana przez układy GPU w celu zwiększenia wydajności, czy jest to po prostu wymyślny termin na używanie 16-bitowych wartości zmiennoprzecinkowych zamiast 32 standardowych wartości zmiennoprzecinkowych?

Komentarze

  • Tak, FP16 oznacza 16 bitów w kontekście GPU.

Odpowiedź

FP32 i FP16 oznaczają 32- bit zmiennoprzecinkowy i 16-bitowy zmiennoprzecinkowy. Procesory graficzne pierwotnie skupiały się na FP32, ponieważ są to obliczenia potrzebne w grach 3D. Obecnie wiele procesorów graficznych ma natywną obsługę FP16, aby przyspieszyć obliczenia sieci neuronowych. Jeśli spojrzysz na niektóre testy porównawcze ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) zobaczysz, że GPU obsługujące FP16 prawie dwa razy szybciej obliczają FP16 niż FP32. Biorąc pod uwagę weź pod uwagę, że nowsze karty obsługujące FP16 (takie jak seria NVidia 2080) są również dostępne o 20% szybciej w przypadku FP32 w porównaniu do swojego poprzednika (1080) uzyskujesz wzrost o 140% w przypadku trenowania sieci neuronowych FP16 w porównaniu do FP32 na poprzednich kartach.

Ale jest zastrzeżenie. Twoja sieć neuronowa musi być napisana przy użyciu FP16 i powinna mieć taką samą dokładność. FP16 mają mniejszą dokładność z założenia, ponieważ mają znacznie mniej bitów reprezentujących tę samą liczbę. Niektórzy wybierają modele z mieszaną precyzją, aby działać szybko i dokładnie ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Ale widzisz w ostatnim łączu, że prędkość jest większa dla precyzji mieszanej, ale nie jest 2 razy większa niż w przypadku czystego FP16. Możesz również teoretycznie użyć wag FP32 i przekonwertować niektóre z nich na wagi FP16, ale dokładność może spaść.

Więc na końcu musisz zrozumieć, czy możesz przepisać swoją sieć neuronową, aby używać FP16 w całości lub częściowo . Jeśli nie możesz, nie odniesiesz żadnych dodatkowych korzyści z kart zgodnych z FP16.

Maksymalna wartość dla FP16 to 65504, a minimalna to 5,96 × 10-8. Najlepsza precyzja dla 5989.12345 to najprawdopodobniej 5988.0 (odtwarzana z bitami na https://www.h-schmidt.net/FloatConverter/IEEE754.html ). za mało, możesz skalować swoje dane przed treningiem, aby dopasować je do FP16, a następnie trenować z podwójną prędkością. Lub użyj modeli z mieszaną precyzją, w których masz FP32 jako dane wejściowe, a następnie zmniejsz precyzję w kolejnych warstwach.

Komentarze

  • zawartość bloga zawierająca wiele informacji, dzięki za to 🙂
  • Umieściłem również prawdopodobną reprezentację twojego numeru w FP16. Jeśli odpowiedź jest zadowalająca, dobrze byłoby, gdybyś mógł zaznaczyć odpowiedź jako zaakceptowaną, a także zagłosować za nią, jeśli chcesz.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *