Python의 FP16, FP32는 무엇입니까? 잠재적 인 비즈니스 파트너와 저는 시계열 작업을위한 딥 러닝 설정을 구축하고 있습니다. 그는 GPU를 찾는 동안 “FP16 및 FP32″를 내놓았습니다. 16 비트와 32 비트의 부동 소수점 값에 대해 이야기하는 것 같습니다. (우리의 데이터 포인트는 “5989.12345”와 같으므로 16 비트로는 충분하지 않습니다.)
FP16 GPU가 성능을 향상시키기 위해 사용하는 특수 기술입니까, 아니면 32 개의 표준 부동 소수점 대신 16 비트 부동 소수점 값을 사용하는 멋진 용어입니까?
댓글
- 예, FP16은 GPU 컨텍스트에서 16 비트를 의미합니다.
Answer
FP32 및 FP16은 32를 의미합니다. 비트 부동 소수점 및 16 비트 부동 소수점. GPU는 원래 3D 게임에 필요한 계산이기 때문에 FP32에 초점을 맞췄습니다. 오늘날 많은 GPU는 신경망 계산 속도를 높이기 위해 FP16을 기본 지원합니다. 일부 벤치 마크를 살펴보면 ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) FP16을 지원하는 GPU가 FP32보다 FP16 계산 속도가 거의 두 배 빠르다는 것을 알 수 있습니다. FP16을 지원하는 최신 카드 (예 : NVidia 2080 시리즈)도 이전 카드 (1080)에 비해 FP32의 경우 20 % 더 빠릅니다. 이전 카드의 FP32에 비해 FP16 신경망을 훈련하는 데 140 % 증가했습니다.
하지만주의 할 점이 있습니다. 신경망은 FP16을 사용하여 작성해야하며 정확도도 동일해야합니다. FP16은 동일한 수를 나타내는 비트가 훨씬 적기 때문에 설계 상 정확도가 낮습니다. 일부는 빠르고 정확하기 위해 혼합 정밀도 모델을 사용합니다 ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). 그러나 마지막 링크에서 혼합 정밀도의 경우 속도가 더 빠르지 만 순수한 FP16을 사용할 때보 다 2 배 빠르지는 않습니다. 이론적으로 FP32 가중치를 사용하고 일부를 FP16 가중치로 변환 할 수도 있지만 정확도가 떨어질 수 있습니다.
결국 FP16을 완전히 또는 부분적으로 사용하도록 신경망을 다시 작성할 수 있는지 이해해야합니다. . 그렇게 할 수 없다면 FP16 호환 카드의 추가 혜택을받을 수 없습니다.
FP16의 최대 값은 65504이고 최소값은 5.96 × 10-8입니다. 5989.12345의 최고 정밀도는 5988.0 일 가능성이 높습니다 ( https://www.h-schmidt.net/FloatConverter/IEEE754.html 에서 비트로 재생). FP16에 맞게 훈련하기 전에 데이터를 확장 한 다음 두 배의 속도로 훈련 할 수 있습니다. 또는 입력으로 FP32가있는 혼합 정밀도 모델을 사용하고 이후 레이어에서 정밀도를 줄입니다.
댓글
- 높은 정보를 제공하는 블로그 콘텐츠입니다. 🙂
- 또한 귀하의 번호를 FP16에 포함 시켰습니다. 답변이 만족 스러우면 답변을 수락 된 답변으로 확인하고 원할 경우 찬성 할 수 있으면 좋을 것입니다.