부동소수점 형식 시각화
FP4, FP8, BF16, FP16, TF32, FP32, FP64의 비트 형식과 범위·정밀도 차이를 같은 화면에서 비교합니다.
형식별 비트 시각화
형식을 고른 뒤 10진수 입력, 원시 16진수 입력, 비트 토글을 오가며 값이 어떻게 양자화되는지 확인합니다. FP8은 E4M3와 E5M2를 전환할 수 있고, TF32는 FP32 입력을 10비트 가수로 반올림한 논리 형식으로 표시합니다.
형식 비교표
같은 “부동소수점”이라도 목적이 서로 다릅니다. FP64와 FP32는 범용 계산용이고, BF16과 TF32는 딥러닝 학습에서 범위와 처리량(Throughput)의 절충점으로 쓰입니다. FP8과 FP4는 모델 추론·양자화 경로에서 대역폭(Bandwidth)과 메모리 절감을 극단적으로 밀어붙일 때 등장합니다.
| 형식 | 비트 구성 | 표준 상태 | 대략 범위 | 핵심 특징 |
|---|---|---|---|---|
| FP64 | 1 / 11 / 52 |
IEEE 754 binary64 | 약 ±1.80 × 10308 | 배정밀도입니다. 자바스크립트 Number의 내부 표현과 같습니다. |
| FP32 | 1 / 8 / 23 |
IEEE 754 binary32 | 약 ±3.40 × 1038 | 범용 그래픽스·과학 계산·파일 포맷에서 가장 널리 쓰입니다. |
| FP16 | 1 / 5 / 10 |
IEEE 754 binary16 | ±65504 | 반정밀도입니다. 메모리 사용량은 작지만 지수 범위가 좁습니다. |
| BF16 | 1 / 8 / 7 |
비표준 bfloat16 | 약 ±3.39 × 1038 | FP32와 같은 8비트 지수부를 가져 범위는 넓고 정밀도는 낮습니다. |
| FP8 E4M3 | 1 / 4 / 3 |
비표준 FP8 | 최대 유한값 448 | 무한대를 직접 저장하지 않고 최대 유한값을 넓게 쓰는 AI 추론 중심 형식입니다. |
| FP8 E5M2 | 1 / 5 / 2 |
비표준 FP8 | 최대 유한값 57344 | 정밀도는 더 낮지만 지수 범위가 넓고 무한대/NaN을 표현할 수 있습니다. |
| FP4 E2M1 | 1 / 2 / 1 |
비표준 FP4 | 최대 유한값 6 | 극단적인 저정밀도 형식입니다. NaN과 무한대를 직접 담지 않습니다. |
| TF32 | 1 / 8 / 10 |
비표준 TensorFloat-32 | FP32와 같은 지수 범위 | FP32 입력을 10비트 가수로 줄여 Tensor Core 처리량을 높이는 연산 중심 형식입니다. |
혼합 정밀도 형식 이해
커널 개발자 입장에서는 이 형식들이 직접 커널 내부 계산에 쓰인다기보다, GPU/NPU/가속기 드라이버, 펌웨어(Firmware) 인터페이스, 사용자 공간(User Space) 런타임, 덤프(Dump) 포맷을 해석할 때 중요합니다. 예를 들어 BF16과 FP16은 텐서 버퍼(Buffer) 덤프를 읽을 때, FP8과 FP4는 모델 양자화 경로를 디버깅(Debugging)할 때, TF32는 연산 결과가 왜 FP32와 미세하게 다른지 설명할 때 자주 등장합니다.
- FP16은 저장 공간과 메모리 대역폭을 줄이는 데 좋지만, 지수 범위가 좁아 오버플로우와 언더플로우가 자주 발생합니다.
- BF16은 지수 범위를 FP32 수준으로 유지해 학습 안정성을 확보하는 대신, 가수 비트가 7비트뿐이라 미세한 차이는 쉽게 사라집니다.
- FP8은 같은 8비트라도 E4M3와 E5M2의 우선순위(Priority)가 다릅니다. E4M3는 정밀도를 조금 더 챙기고, E5M2는 범위를 더 챙깁니다.
- FP4는 저장과 전송 비용 절감이 목적입니다. 수치 해석 정확도를 기대하기보다, 양자화된 모델이 어느 정도까지 버티는지 보는 용도에 가깝습니다.
- TF32는 “파일에 저장되는 새 형식”이라기보다, FP32를 하드웨어가 내부 연산용으로 축약한 경로로 이해하는 편이 정확합니다.
특수 값과 예외 처리
IEEE 754 계열은 보통 ±0, 비정규수, ±∞, NaN을 갖지만, 저정밀도 AI 형식은 이 규칙을 일부 바꾸기도 합니다. 특히 FP8 E4M3와 FP4는 “IEEE 754 이름으로 묶기 어려운 이유”가 여기서 드러납니다.
| 형식 | 비정규수 | 무한대 | NaN | 이 도구의 처리 방식 |
|---|---|---|---|---|
| FP64 / FP32 / FP16 | 지원 | 지원 | 지원 | IEEE 754 규칙대로 표시합니다. |
| BF16 | 지원 | 지원 | 지원 | FP32를 BF16로 반올림한 뒤 결과를 표시합니다. |
| FP8 E5M2 | 지원 | 지원 | 지원 | FP8 E5M2 규칙에 따라 무한대와 NaN을 유지합니다. |
| FP8 E4M3 | 지원 | 직접 지원하지 않음 | 지원 | 범위를 넘는 값은 최대 유한값으로 포화하고, NaN은 대표 NaN 패턴으로 표시합니다. |
| FP4 E2M1 | 지원 | 지원하지 않음 | 지원하지 않음 | NaN은 0으로, 무한대는 최대 유한값으로 대체합니다. |
| TF32 | 논리적으로 표시 | 지원 | 지원 | FP32 값을 10비트 가수로 반올림한 논리 표현으로 보여 줍니다. |