TL;DR
Nemotron 3.5 Lightning의 BF16 체크포인트를 NVFP4로 양자화하면 모델 크기를 66GB에서 22GB로 줄이고 최대 4배 높은 throughput을 확보할 수 있지만, 공격적인 PTQ만으로는 정확도 손실이 커질 수 있습니다. NVIDIA Model Optimizer의 QAD pipeline은 먼저 PTQ로 W4A16 Student를 만든 뒤, simulated quantization을 거친 Student의 logits를 고정된 BF16 Teacher의 logits에 KL Divergence로 맞추며 양자화 noise를 학습합니다. 공격적인 중간 체크포인트에서 median score recovery는 Checkpoint A 기준 96.33%에서 99.72%로, Checkpoint B 기준 95.84%에서 98.53%로 상승했습니다. 최종 체크포인트에서는 보수적인 PTQ 설정으로 전체 중앙값의 차이가 작았지만 Terminal-Bench v2.1과 SWE-Bench Multilingual 같은 agentic·coding benchmark에서 QAD가 PTQ를 앞섰습니다.
빠른 이해
새로운 점
PTQ 이후 Teacher의 출력 분포와 실제 양자화 noise를 함께 학습하는 QAD로 Nemotron 3.5 Lightning의 공격적인 NVFP4 압축을 가능하게 한 점입니다.
핵심 메커니즘
BF16 Teacher를 PTQ로 W4A16 NVFP4 Student로 변환하고, Student의 매 forward pass에 simulated quantization을 적용합니다. 동일 입력의 Teacher와 Student logits를 KL Divergence로 비교해 Student weight를 갱신하며, PTQ 보정 방식에 따라 quantization scale을 dynamic 또는 frozen 전략으로 처리합니다. 이 과정을 통해 BF16 66GB 모델을 22GB NVFP4 checkpoint로 압축하면서 양자화 noise에 적응한 출력 행동을 학습합니다.
핵심 수치
- 체크포인트 크기: BF16 66GB -> NVFP4 22GB- 기사 도입부 기준
- 추론 throughput: 최대 4배 향상- Nemotron 3.5 Lightning NVFP4 checkpoint 기준
- Checkpoint A median score recovery: PTQ 96.33% -> QAD 99.72%- 동일한 21.19GB 체크포인트, 11개 benchmark 중 10개 개선
- Checkpoint B median score recovery: PTQ 95.84% -> QAD 98.53%- 동일한 21.19GB 체크포인트
- 최종 Terminal-Bench v2.1: PTQ 22.05 -> QAD 25.84- BF16 24.44
- 최종 SWE-Bench Multilingual: PTQ 37.00 -> QAD 38.07- BF16 37.13
섹션별 상세
NVFP4 압축의 목표
두 단계 QAD 파이프라인

PTQ 레시피와 공격성 조절
import modelopt.torch.quantization as mtq # define forward loop with datasetdef forward_loop(model): for batch in calib_dataloader: model(batch) # Quantize base model to NVFP4 to create the PTQ student checkpoint# Example uses W4A16_NVFP4_CFG for quantizationmodel = mtq.quantize(model, mtq.W4A16_NVFP4_CFG, forward_loop=forward_loop)보정 데이터셋을 순회하는 forward loop을 정의한 뒤 NVIDIA Model Optimizer로 base model을 W4A16 NVFP4 Student 체크포인트로 양자화합니다.
Dynamic scale과 frozen scale

중간 체크포인트의 정확도 회복
최종 체크포인트와 재현 방법
# from tools/launchersource .env-slurmuv run launch.py --yaml examples/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/megatron_lm_qad.yaml --yesMegatron-LM용 QAD YAML launcher를 호출해 PTQ와 증류를 포함한 전체 파이프라인을 실행합니다.
task_1: # quantize the BF16 teacher into the NVFP4 student script: common/megatron_lm/quantize/quantize.sh args: - --seq-length 32768 --max-position-embeddings 1048576 - --calib-size 32 environment: - QUANT_CFG: MAMBA_MOE_NVFP4_CONSERVATIVE_CFG - TP: "1" - EP: "4"BF16 Teacher를 NVFP4 Student로 변환하는 PTQ 작업에서 32,768 시퀀스 길이와 32개 보정 샘플, MAMBA_MOE_NVFP4_CONSERVATIVE_CFG를 지정합니다.
task_2: # distill the NVFP4 student against the BF16 teacher script: common/megatron_lm/train/sft.sh args: - --seq-length 32768 --max-position-embeddings 1048576 - --micro-batch-size 1 --global-batch-size 16 - --train-samples 6400 # -> 400 iterations - --modelopt-enabled - --export-kd-teacher-load /cicd/megatron-lm-bf16/.../BF16-MCore - --lr 5.0e-6 --lr-decay-style constant --lr-warmup-samples 0 - --clip-grad 1.0 --weight-decay 0.0 - --attention-dropout 0.0 --hidden-dropout 0.0 environment: - DATASET: nvidia/Nemotron-Post-Training-Dataset-v2 - TP: "1" - EP: "4"고정된 BF16 Teacher를 기준으로 NVFP4 Student를 증류하며, 학습률 5.0e-6, 400 iterations, gradient clipping 1.0과 Nemotron-Post-Training-Dataset-v2를 사용합니다.
용어 해설
- 양자화 인식 증류(Quantization-Aware Distillation)
- — 양자화 과정에서 발생하는 오차를 고려해 저정밀도 Student 모델을 학습하는 방법입니다. 먼저 PTQ로 BF16 Teacher를 양자화한 뒤, 추론 시뮬레이션을 거친 Student의 출력 분포를 고정된 Teacher의 출력 분포에 맞춥니다. KL Divergence를 손실로 사용해 공격적인 양자화 뒤에도 원래 모델의 동작을 회복하는 데 의미가 있습니다.
- 사후 학습 양자화(Post-Training Quantization)
- — 학습이 끝난 모델의 가중치와 활성값을 낮은 비트 형식으로 변환하는 방법입니다. 보정 데이터로 각 텐서의 범위나 오차를 측정한 뒤 BF16 같은 고정밀 표현을 W4A16 또는 NVFP4 형식으로 매핑합니다. 추가 학습 없이 모델 크기와 메모리 사용량을 줄일 수 있지만, 공격적인 설정에서는 정확도 손실이 커질 수 있습니다.
- KL 발산(KL Divergence)
- — 두 확률 분포가 얼마나 다른지 측정하는 손실 함수입니다. QAD에서는 같은 입력에 대한 Teacher와 Student의 next-token logits를 확률 분포로 바꾼 뒤 Student 분포가 Teacher 분포를 따르도록 오차를 계산합니다. 정답 토큰 하나만 맞추는 대신 원래 모델의 전체 출력 행동을 보존하는 데 사용됩니다.
- NVFP4
- — NVIDIA가 사용하는 4비트 부동소수점 기반 저정밀도 형식으로, Nemotron 3.5 Lightning의 가중치와 일부 KV cache를 압축하는 데 적용됐습니다. 기사에서는 W4A16 설정으로 많은 가중치를 4비트로 저장해 BF16 체크포인트의 66GB 크기를 22GB 수준으로 줄였습니다. 낮은 정밀도에 따른 오차는 QAD 학습으로 보정합니다.
기술
- Nemotron 3.5 Lightning
- NVFP4
- W4A16
- Post-Training Quantization
- Quantization-Aware Distillation
- NVIDIA Model Optimizer
- Megatron-LM
- Megatron-Bridge
- KL Divergence
- Mamba
- KV cache
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
