부동소수점 형식 시각화

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와 미세하게 다른지 설명할 때 자주 등장합니다.

특수 값과 예외 처리

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비트 가수로 반올림한 논리 표현으로 보여 줍니다.

참고자료