vLLM에서 float16(BF16)이 효율적인 이유와 데이터 타입 종류

Soogyung Gwon·2026년 6월 13일

구름을잡아라

목록 보기
74/76

vLLM에서 dtype=float16(FP16) 또는 dtype=bfloat16(BF16)이 많이 사용되는 이유는 메모리 사용량과 추론 속도의 균형이 매우 좋기 때문이다.

왜 float16(FP16)이 효율적인가?

1. 메모리 사용량이 절반으로 감소한다

모델의 가중치는 일반적으로 float32로 저장되는 경우가 많다.

타입비트 수상대적 메모리 사용량
float3232bit100%
float1616bit50%
bfloat1616bit50%

예를 들어 8B 파라미터 모델을 사용할 경우:

  • FP32: 약 32GB
  • FP16: 약 16GB
  • BF16: 약 16GB

즉, 동일한 GPU에서:

  • 더 큰 모델을 실행할 수 있고
  • 더 큰 배치 크기를 사용할 수 있으며
  • 더 많은 KV Cache를 저장할 수 있다.

2. Tensor Core를 활용할 수 있다

현대 NVIDIA GPU는 FP16 연산을 매우 빠르게 수행하도록 설계되어 있다.

대표적인 GPU:

  • RTX 3090
  • RTX 4090
  • A100
  • H100
  • L40S

이러한 GPU는 Tensor Core를 사용하여 FP16 연산을 가속한다.

결과적으로:

  • 추론 속도 향상
  • 처리량(Throughput) 증가
  • 더 큰 배치 처리 가능

등의 이점을 얻을 수 있다.


3. 추론에서는 높은 정밀도가 크게 중요하지 않다

LLM은 이미 학습이 완료된 상태에서 주로 추론(Inference)에 사용된다.

따라서:

FP32 → FP16

으로 변경하더라도 대부분의 경우 출력 품질 차이가 거의 발생하지 않는다.

예를 들어:

  • Llama
  • Qwen
  • Gemma
  • Mistral

등의 모델은 FP16 환경에서도 매우 유사한 성능을 보여준다.


최근에는 BF16(BFloat16)이 더 많이 사용된다

최신 LLM에서는 FP16보다 BF16을 선호하는 경우가 많다.

FP16 구조

구성 요소비트
Sign1
Exponent5
Mantissa10

BF16 구조

구성 요소비트
Sign1
Exponent8
Mantissa7

BF16은 지수(Exponent)에 더 많은 비트를 할당한다.

결과적으로:

  • 표현 가능한 숫자 범위가 FP32와 거의 동일
  • Overflow 발생 가능성 감소
  • 학습 안정성 향상

이라는 장점이 있다.


왜 BF16이 LLM에서 인기가 많을까?

딥러닝에서는 다음과 같은 값들이 자주 등장한다.

0.000000001
1000000000

FP16은 이러한 극단적인 값을 충분히 표현하지 못해 Overflow 또는 Underflow가 발생할 수 있다.

반면 BF16은 FP32 수준의 표현 범위를 유지하므로:

  • Gradient 폭발
  • Activation Overflow
  • NaN 발생

등의 문제를 줄일 수 있다.

그래서 최근 LLM들은 대부분 BF16 기반으로 학습된다.


vLLM에서 사용할 수 있는 dtype

float32

--dtype float32

장점

  • 가장 높은 정밀도

단점

  • 메모리 사용량이 큼
  • 속도가 느림

주로 디버깅이나 연구 목적으로 사용한다.


float16 (FP16)

--dtype float16

장점

  • 메모리 절반 사용
  • 빠른 추론 속도
  • Tensor Core 활용 가능

단점

  • Overflow 발생 가능성 존재

구형 GPU와의 호환성이 좋다.


bfloat16 (BF16)

--dtype bfloat16

장점

  • FP16보다 안정적
  • 메모리 사용량 동일
  • 최신 LLM과 궁합이 좋음

단점

  • 일부 구형 GPU는 지원하지 않음

현재 가장 많이 사용되는 dtype이다.


auto

--dtype auto

모델 설정에 따라 자동으로 dtype을 선택한다.

예시:

  • BF16 모델 → BF16 사용
  • FP16 모델 → FP16 사용

특별한 이유가 없다면 가장 권장되는 옵션이다.


dtype과 양자화(Quantization)의 차이

많은 사람들이 dtype과 양자화를 혼동한다.

하지만 둘은 서로 다른 개념이다.

dtype

연산 시 사용하는 데이터 타입

예:

  • FP32
  • FP16
  • BF16

양자화

모델 가중치를 더 작은 비트로 저장하는 기법

예:

방식비트 수
FP3232
FP1616
BF1616
INT88
INT44

vLLM에서 지원하는 대표적인 양자화 방식

  • GPTQ
  • AWQ
  • FP8
  • INT8
  • BitsAndBytes
  • GGUF (일부 환경)

예시:

vllm serve model \
    --quantization awq

이 경우 FP16 대비 메모리 사용량을 크게 줄일 수 있다.


dtype 선택 시 실제 추천

환경추천 dtype
RTX 3090FP16 또는 BF16
RTX 4090BF16
A100BF16
H100BF16
모델 설정 그대로 사용auto
디버깅FP32
GPU 메모리 부족AWQ/GPTQ + FP16

정리

vLLM에서 FP16과 BF16이 널리 사용되는 이유는 메모리 사용량을 절반으로 줄이면서도 높은 추론 성능을 유지할 수 있기 때문이다.

특히 최근 LLM은 대부분 BF16으로 학습되므로 최신 GPU를 사용한다면 다음 옵션이 가장 일반적인 선택이다.

--dtype bfloat16

또는

--dtype auto

메모리가 부족한 경우에는 dtype을 낮추는 것보다 AWQ, GPTQ와 같은 양자화 기법을 함께 사용하는 것이 더 큰 효과를 얻을 수 있다.

profile
오랜시간 망설였던 코딩을 다시 해보려고 노력하고 있는 사람

0개의 댓글