한 줄 정의

NVFP4는 NVIDIABlackwell 세대에서 밀고 있는 4비트 부동소수점 포맷이야. 숫자 하나를 E2M1, 즉 부호 1비트, 지수 2비트, 가수 1비트로 담고, 그 위에 스케일을 붙여 모델 가중치와 활성값을 더 작게 움직이게 해.

그래서 NVFP4는 그냥 INT4 압축이 아니야. FP4 계열 안에서도 16개 값마다 FP8 E4M3 스케일을 붙이고, 텐서 전체에는 FP32 전역 스케일을 두는 Blackwell양자화 경로에 가까워.

어떻게 작동하나

NVFP4 값 자체는 매우 좁아. NVIDIA TE 문서 기준 E2M1 값은 크기 기준 약 ±6까지만 표현해. 이 값을 그대로 쓰면 큰 텐서의 동적 범위를 담기 어렵기 때문에 스케일을 같이 저장한다.

핵심 식은 x = x_e2m1 * s_block * s_global이야. x_e2m1은 4비트 값이고, s_block은 16개 연속 원소가 공유하는 FP8 E4M3 스케일이고, s_global은 텐서 전체에 적용되는 FP32 스케일이야. 이 구조 덕분에 값은 4비트로 줄이면서도 블록마다 서로 다른 범위를 맞출 수 있어.

NVIDIA 블로그는 이 차이를 MXFP4와 비교해 설명해. MXFP4는 32개 값 블록에 power-of-two 스케일을 붙이는 쪽이고, NVFP4는 16개 값 블록에 FP8 스케일을 둬. 블록이 더 작고 스케일이 더 촘촘하니 작은 값 차이를 보존할 여지가 늘어나지만, 그만큼 런타임과 커널 경로가 맞아야 해.

TE 쪽에서는 가중치에 기본적으로 16x16 2D scaling을 쓰고, 활성값과 gradient에는 1D scaling을 쓴다고 설명해. 또 예시는 SM100, 즉 Blackwell 이후 GPU를 요구해. 그러니까 CUDA가 된다는 말과 NVFP4가 된다는 말은 같은 말이 아니야.

왜 중요한가

NVFP4가 중요한 이유는 추론에서 메모리와 대역폭 병목을 직접 건드리기 때문이야. NVIDIA 블로그는 NVFP4가 4비트 값에 16개 값당 FP8 스케일을 붙여 약 4.5 bits/value를 쓰고, 모델 메모리 footprint를 FP16 대비 약 3.5배, FP8 대비 약 1.8배 줄인다고 제시해.

다만 이 숫자는 “항상 3.5배 빨라진다”는 말이 아니야. 파일이 작아지고 GPU가 덜 읽어도, 병목이 어텐션 backend, KV cache, CPU 왕복, 토크나이저, 네트워크에 있으면 체감은 작을 수 있어. 속도는 prefill과 decode를 나눠서 보고, 품질은 BF16 또는 FP8 기준선과 같은 평가셋에서 다시 재야 해.

운영자가 봐야 할 질문은 세 가지야.

  • 내 GPU가 Blackwell NVFP4 경로를 실제로 타나.
  • vLLM, TensorRT-LLM, TE 같은 런타임이 해당 모델의 NVFP4 커널을 지원하나.
  • 정확도 회귀, NaN/Inf, 포화값 증가, p95 지연시간 악화가 기준선을 넘지 않나.

이 세 가지를 못 보면 NVFP4는 “작은 파일”이라는 힌트만 주고, 운영 판단은 아직 끝나지 않은 상태야.

Gemma 4 26B A4B 사례

Hugging Facenvidia/Gemma-4-26B-A4B-NVFP4는 NVFP4가 실제 모델 카드에서 어떻게 보이는지 보여 주는 좋은 사례야. 이 카드Gemma 4 26B A4B IT를 NVIDIA Model Optimizer로 NVFP4 양자화한 체크포인트이고, vLLM 추론용으로 설명돼 있어.

모델 구조부터 갈라 봐야 해. 카드 기준 이 모델은 25.2B total parameters, 3.8B active parameters, 30 layers, 1024 sliding window, 256K context, 8 active / 128 total + 1 shared expert 구성이야. 여기서 A4B MoE는 매 토큰에서 켜지는 계산량을 말하고, NVFP4는 그 가중치와 활성값을 어떤 정밀도로 저장하고 계산할지에 관한 선택이야.

Hugging Face 카드평가 표는 BF16 baseline과 NVFP4를 나란히 둬. 예를 들어 GPQA Diamond80.30%79.90%, MMLU Pro85.00%84.80%, LiveCodeBench pass@1은 80.50%79.80%, IFEval은 96.60%96.40%로 적혀 있어. 이 표는 해당 체크포인트의 모델 카드 수치이지, 모든 NVFP4 모델이 같은 폭으로 유지된다는 뜻은 아니야.

배포 조건도 같이 봐야 해. 모델 카드inference engine을 vLLM, 테스트 하드웨어를 B200으로 적고, 현재 이 모델의 vLLM은 TP=1만 동작한다고 설명해. 전문가 혼합 backend도 VLLM_CUTLASSMarlin 같은 선택지가 걸려 있어서, 같은 모델 이름이라도 backend가 달라지면 속도와 안정성이 바뀔 수 있어.

실무 적용 기준

NVFP4를 켜볼 만한 조건은 꽤 좁아.

  • Blackwell 계열 GPU와 맞는 드라이버, CUDA, 컨테이너가 준비돼 있어.
  • 모델 카드나 배포 문서가 NVFP4 체크포인트와 지원 런타임을 명시해.
  • BF16 또는 FP8 기준선에서 같은 prompt 묶음, 같은 batch, 같은 context 길이로 비교할 수 있어.
  • p50/p95 지연시간, tokens/sec, 최대 VRAM, 품질 지표를 같이 기록할 수 있어.

AI Muninn의 DGX Spark 글은 현장 감각을 잡는 데 도움이 돼. 그 글은 DGX Spark GB10에서 Gemma 4 26B A4B NVFP4vLLM 0.19로 돌려 52 tok/s decode, 16.5GB model memory, 82GB KV cache 여유, 3개 동시 요청 114.6 tok/s aggregate throughput을 보고해. 하지만 이건 특정 장비, 특정 vLLM 버전, 특정 MoE backend, 특정 패치 조합의 결과야.

그래서 실무에서는 NVFP4를 “비용을 낮출 수 있는 후보”로 두고, 바로 기본값으로 고정하지 않는 편이 좋아. DeepGEMM의 FP4 커널, vLLM의 NVFP4 checkpoint, TensorRT-LLM의 Model Optimizer 경로는 서로 다른 층위의 이야기야. 이름에 FP4가 붙었다고 같은 성능이나 같은 위험을 공유한다고 보면 판단이 틀어져.

중단 신호는 미리 정해 둬야 해. NaN/Inf, 반복 증가, 긴 출력에서 속도 급락, 기준 대비 품질 회귀, MoE backend 경고, KV cache 부족이 보이면 NVFP4 적용 범위를 줄이거나 BF16/FP8 기준선으로 되돌려야 해. NVFP4의 장점은 작게 움직이는 데 있지만, 그 작아진 숫자를 제대로 복원하고 계산할 조건까지 맞아야 의미가 있어.