딥 씨 모델의 FP16 (16 비트 부동 소수점)과 int8 (8 비트 정수) 정밀도의 주요 차이점은 주로 정확도, 동적 범위 및 계산 효율성을 중심으로 진행됩니다.
정확성
FP16은 일반적으로 int8에 비해 더 높은 정확도를 제공합니다. FP16은 부동 소수점 특성으로 인해 더 넓은 범위의 값과 더 미세한 차이를 나타낼 수 있으므로 정확한 계산이 필요한 모델에 특히 중요합니다. 대조적으로, INT8의 낮은 정밀도는 특히 모델 매개 변수 또는 활성화가 제한된 서명 된 8 비트 정수의 값을 초과하는 값을 갖는 시나리오에서 -128에서 127 사이의 값을 초과하는 시나리오에서 더 큰 양자화 오차를 초래할 수 있습니다 [1] [4].동적 범위
FP16의 동적 범위는 Int8의 동적 범위보다 상당히 넓습니다. FP16은 지수와 Mantissa에 비트를 할당하기 때문에 훨씬 더 큰 스펙트럼에서 값을 표현할 수있어 매우 작고 매우 많은 수의 효과를 효과적으로 처리 할 수 있습니다. 이에 비해 INT8의 고정 범위는 특히 출력 값이 크게 변할 수있는 복잡한 모델에서 적용 가능성을 제한합니다 [2] [3]. 예를 들어, INT8의 동적 범위는 $$ 2^8 $$의 동적 범위를 가지고 있지만 FP16은 훨씬 더 미묘한 데이터 표현을 효과적으로 허용하는 범위에서 값을 나타낼 수 있습니다 [2].계산 효율성
INT8은 계산 효율, 특히 에지 장치의 추론 작업에서 최적화됩니다. 정수 산술을 사용하면 일반적으로 전력이 적고 부동 소수점 작업에 비해 더 빠른 계산으로 이어질 수 있습니다. 이 효율성은 대기 시간과 에너지 소비가 중요한 요소 인 실시간 응용 프로그램에 모델을 배포하는 데 중요합니다 [1] [4]. 더욱이, INT8 Quantization은 메모리 사용량을 상당히 감소시켜 자원이 제한된 장치의 성능을 향상시킬 수 있습니다 [3] [5].요약하면, FP16은 복잡한 모델의 훈련 및 추론에 적합한 우수한 정확도와 동적 범위를 제공하는 반면, INT8은 운영 효율성과 속도가 탁월하므로 자원으로 제한된 환경에서 배치가 바람직합니다. 이러한 정밀도 사이의 선택은 종종 정확도의 필요성과 속도 및 효율의 필요성과 같은 응용 프로그램의 특정 요구 사항에 따라 다릅니다.
인용 :[1] https://arxiv.org/pdf/2303.17951.pdf
[2] https://www.baseten.co/blog/fp8- 효율적인-모델 ------8-bit-floating-point-numbers/
[3] https://itsabout.ai/understanding-data-types-in-ai-and-hpc-int8-fp16-bf16-bf32-fp32-tf32-fpp64-n-hardware-accelerators/
[4] https://massedcompute.com/faq-answers/?question=what+are+ the+differences+between+int8+and+fp16+precision+in+interms++Accuracy+ andspeed%3f
[5] https://www.baseten.co/blog/introduction-to-quantizing-ml-models/
[6] https://www.reddit.com/r/machinelearning/comments/114fgo8/d_is_fp16_use_in_deep_learning_or_fp32/
[7] https://forums.developer.nvidia.com/t/same-inference-feed-for-int8-bp16/66971
[8] https://forums.developer.nvidia.com/t/int8-vs-fp16-results/158139