Writer: Joonwon Jang
Contact: [email protected]
0. Floating Point
- 컴퓨터에서 실수를 표현하는 방법으로, 수를 Exponent(지수)와 Fraction(가수)로 분리하여 표현.
- IEEE 754 표준은 floating 포인트 수를 표현하는 데 널리 사용되는 표준.
- 해당 표준에서는 다양한 정밀도를 제공.
-
floating example (FP32)
- 십진수 -0.5625
- 이진수 -0.1001
- Sign: 1 (음수는 1임)
- Exponent: 127(bias) + (-1) = 126
- 0 -127 최소 정규화 지수
- ... ... 음수 지수
- 126 -1 음수 지수
- 127 0 1 (2^0) → 1과 2 사이의 모든 수
- 128 +1 양수 지수 → 2^1 = 2를 사용하는 순간 = 지수가 1이 되는 순간
- ... ... 양수 지수
- 254 +127 최대 정규화 지수
- 255 특수값 무한대, NaN 등
- Fraction: 0010 0…
- fp32: 1 01111110 00100000000000000000000
-
FP16
→ fp32 대비 Exponent와 Fraction을 둘다 줄여 DL모델의 inference시 연구자들이 주로 사용하는 precision. (일반적으로 fp32으로 모델학습, fp16으로 inference을 하나 실험적으로 fp32대비 분명한 성능하락 확인)
→ sign (1) | exponent(5) | fraction (10)
→ 비트가 줄기 때문에 더 적은 메모리를 사용한다.
→ BF16은 fp16과 다르게 자릿수를 대표하는 exponent를 fp32와 동일한 8비트로 설정함으로써 더 넓은 범위의 수를 표현할 수 있음.
→ sign (1) | exponent(8) | fraction (7)