FP32, FP16, BF16, INT8의 차이점 정리

FP32는 32비트 단정밀도 부동소수점 수로, 계산의 기준으로 쓰입니다. FP16과 BF16은 둘 다 16비트이지만 비트 배분이 다릅니다. FP16은 가수에 많은 비트를 써서 정밀도를 확보하고, 표현 범위는 최대 65504로 좁아집니다. BF16은 지수부를 FP32와 같은 8비트로 해서 범위를 FP32 수준으로 유지하고, 그만큼 정밀도를 낮췄습니다. INT8은 8비트 정수로, 스케일을 곱해 실수를 근사하는 양자화에 쓰이며, AI 추론에서 메모리와 전력을 크게 줄일 수 있습니다.

비교 항목FP32FP16BF16INT8
비트 수32비트16비트16비트8비트
부호·지수·가수 비트 수1·8·231·5·101·8·7지수와 가수가 없음. 2의 보수 정수로 −128~127
표현 가능한 최댓값약 3.4 × 10³⁸65504약 3.4 × 10³⁸(FP32와 거의 같음)127(실수는 스케일을 곱해 표현)
최소 정규화 수약 1.2 × 10⁻³⁸약 6.1 × 10⁻⁵(2⁻¹⁴)약 1.2 × 10⁻³⁸없음(표현 가능한 값의 간격은 스케일로 결정)
정밀도 기준10진수로 약 7자리(1과 다음 수의 차이는 2⁻²³ ≈ 1.2 × 10⁻⁷)10진수로 약 3자리(2⁻¹⁰ ≈ 9.8 × 10⁻⁴)10진수로 2~3자리(2⁻⁷ ≈ 7.8 × 10⁻³)256단계의 눈금
FP32에서의 변환없음(기준)범위가 좁아 큰 값은 오버플로하고, 작은 값은 0이 될 수 있음상위 16비트를 꺼내 반올림하기만 하면 되며, 범위는 넘치지 않음스케일(과 영점)을 정해 양자화. 값의 범위를 조사하는 캘리브레이션이 필요
값 하나의 메모리4바이트2바이트2바이트1바이트
연산기 효율곱셈기가 커서 같은 면적에서의 곱셈 누산 수가 적음FP32보다 작은 연산기로 많은 곱셈 누산을 배치 가능FP16과 비슷함. 가수가 짧은 만큼 곱셈기는 더 작음곱셈기가 가장 작고 전력 효율이 좋음. 곱은 32비트 정수로 누산하는 경우가 많음
학습에서의 사용마스터 웨이트, 옵티마이저 상태, 곱의 누산혼합 정밀도 학습. 손실 스케일링으로 작은 기울기가 0이 되는 것을 방지혼합 정밀도 학습에서 널리 쓰임. 대부분 손실 스케일링이 불필요일반적으로 쓰지 않음(양자화 인식 학습에서는 양자화의 영향을 모사)
추론에서의 사용정밀도의 기준. 성능보다 정확도를 우선할 때GPU 등에서의 추론GPU나 AI 가속기에서의 추론양자화한 모델의 추론. 특히 엣지 NPU 등

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

FP32
정밀도가 필요한 계산, 학습의 마스터 웨이트나 곱의 누산, 낮은 정밀도 결과를 확인하는 기준.
FP16·BF16
AI 학습과 추론에서 메모리와 계산을 절반으로 줄이고 싶을 때. 범위를 중시하는 학습에는 BF16, 범위 안에 들어오는 값에서 정밀도를 중시한다면 FP16.
INT8
학습된 모델을 양자화해 추론을 빠르고 저전력으로 하고 싶을 때. 메모리나 전력이 제한된 엣지 기기에서의 추론.

자주 묻는 질문

AI 학습에서 FP16보다 BF16이 선호되는 경우가 많은 이유는 무엇인가요?

BF16은 지수부가 FP32와 같은 8비트이므로 표현 범위가 FP32와 거의 같습니다. FP16에서는 작은 기울기가 0이 되거나 큰 값이 오버플로하는 것을 막기 위해 손실 스케일링이 필요하지만, BF16에서는 대부분 필요 없고 FP32에서의 변환도 간단합니다. 정밀도는 낮아지지만 신경망 학습에서는 문제가 되기 어렵습니다.

FP16의 최댓값이 65504인 이유는 무엇인가요?

FP16은 지수부가 5비트(바이어스 15)이고, 모두 1인 값은 무한대와 NaN에 쓰이므로 지수의 최댓값은 2의 15제곱입니다. 가수 10비트를 모두 1로 한 (2 − 2⁻¹⁰) × 2¹⁵가 최대 유한값이며, 이것이 65504입니다.

INT8로 소수를 포함한 값을 어떻게 표현하나요?

실수 ≈ 스케일 × (정수 − 영점)의 형태로 근사합니다. 0을 중심으로 대칭으로 양자화하는 경우에는 영점을 0으로 하고, 스케일을 '값의 최대 절댓값 ÷ 127' 등으로 정합니다. 스케일은 텐서별이나 채널별로 둡니다.

INT8로 학습도 할 수 있나요?

일반적으로 학습에는 부동소수점 형식을 사용합니다. 학습에서는 기울기 값의 범위가 넓고, 가중치에 대한 작은 업데이트도 다뤄야 하기 때문입니다. INT8은 주로 학습된 모델을 양자화한 추론에 쓰이며, 양자화 인식 학습에서도 가중치 업데이트는 부동소수점으로 수행합니다.

이해도 확인

IEEE 754 단정밀도(32비트) 부동소수점수에서 부호·지수부·가수에 할당되는 비트 수의 조합은 무엇입니까?

  1. A1·11·20
  2. B1·8·23
  3. C1·5·26
정답과 해설 보기

정답: B. 1·8·23

단정밀도(FP32)는 부호 1비트, 지수부 8비트, 가수 23비트로 합계 32비트입니다. 정규화된 수에서는 가수의 맨 앞 1을 생략하므로 정밀도는 24비트분이 되며, 10진수로 약 7자리입니다. 배정밀도(FP64)는 부호 1·지수부 11·가수 52비트로, 지수부가 넓고 정밀도도 높습니다. 1·11·20은 배정밀도의 지수부 폭과 혼동한 조합이고, 1·5·26은 반정밀도의 지수부 폭과 혼동한 것입니다.

FP16(부호 1·지수부 5비트(바이어스 15)·가수 10비트)으로 나타낼 수 있는 최대 유한값은 얼마입니까?

  1. A32768
  2. B65536
  3. C65504
정답과 해설 보기

정답: C. 65504

지수부의 모두 1(31)은 무한대와 NaN에 사용되므로 최대 지수부는 30이고, 실제 지수는 30 − 15 = 15입니다. 가수가 모두 1일 때 값은 (1 + 1 − 2⁻¹⁰) × 2¹⁵ = (2 − 2⁻¹⁰) × 32768 = 65536 − 32 = 65504가 됩니다. 이를 넘는 결과는 무한대가 되므로 FP16 학습에서는 오버플로에도 주의해야 합니다. 32768은 가수가 0일 때의 2¹⁵, 65536은 2¹⁶으로 둘 다 최댓값이 아닙니다.

bfloat16이 AI 학습에서 사용되는 주된 이유는 무엇입니까?

  1. A지수부가 FP32와 같은 8비트라서 표현할 수 있는 수의 범위가 넓기 때문
  2. B가수부가 FP32보다 길어 정밀도가 높기 때문
  3. C정수 연산으로 계산할 수 있기 때문
정답과 해설 보기

정답: A. 지수부가 FP32와 같은 8비트라서 표현할 수 있는 수의 범위가 넓기 때문

bfloat16은 부호 1비트, 지수부 8비트, 가수부 7비트의 16비트 형식입니다. 지수부가 FP32와 같으므로 표현 범위가 거의 같아, 학습 중의 그래디언트처럼 매우 작거나 큰 값에서도 오버플로나 언더플로가 일어나기 어렵고, FP32 모델에서의 전환도 간단합니다. 정밀도는 낮지만 학습은 다소의 오차에 강해 문제가 되기 어렵고, 데이터양과 연산기 면적을 절반으로 줄일 수 있습니다. 가수부는 FP32보다 짧으며, 정수가 아니라 부동소수점 연산으로 계산합니다.

  1. FP16(반정밀도: 부호 1·지수부 5·가수 10비트)으로 신경망을 학습시킬 때 문제가 되기 쉬우며, 손실 값을 몇 배로 확대하여 계산하는 방법(로스 스케일링)으로 대처하는 것은 무엇입니까?
  2. AI 추론에서 가중치를 FP32에서 INT8로 변환(양자화)하는 주된 이점은 무엇입니까?
  3. AI 혼합 정밀도 학습에서 계산의 대부분을 FP16이나 bfloat16으로 수행하면서 가중치의 원래 값(마스터 가중치)을 FP32로 유지해 두는 주된 이유는 무엇입니까?

컴퓨터 산술 문제 풀기

주요 용어 설명

IEEE 754
부동소수점 수의 표현 방식과 연산 규칙을 정한 국제 규격. 단정밀도(32비트)·배정밀도(64비트) 등의 형식, 반올림 방법, 무한대와 NaN 같은 특수값을 정하여 계산 결과가 컴퓨터에 관계없이 일치하도록 한다.
bfloat16
부호 1비트, 지수 8비트, 가수 7비트의 16비트 부동소수점 형식. 지수가 FP32와 같아 표현 범위가 넓고, 정밀도는 낮지만 AI 학습에 쓰인다. FP16은 지수 5비트·가수 10비트로 정밀도는 높지만 범위가 좁다.
INT8
8비트 부호 있는 정수(−128~127). AI 추론에서 가중치와 활성화 값에 스케일을 곱해 INT8로 변환(양자화)하면 연산과 메모리가 크게 줄고 정수 소형 회로에서 고속으로 처리할 수 있다.
혼합 정밀도(Mixed Precision)
계산의 부분마다 다른 정밀도의 수치를 사용하는 것. 곱셈을 FP16 등으로 수행하고 누적을 FP32로 수행하여 속도와 정확도를 양립시킨다.
학습 후 양자화(Post-training Quantization)
학습이 끝난 모델의 가중치와 활성화를 대표 데이터로 값의 범위를 조사한 뒤 낮은 정밀도로 바꾸는 방법. PTQ.

관련 비교