Transformers documentation
여섯 중 네 개
여섯 중 네 개
Four Over Six는 NVIDIA Blackwell GPU에서 NVFP4 형식을 중심으로 빠르고 정확한 FP4 양자화를 수행하기 위한 라이브러리입니다. 저희의 프리프린트에 설명된 바와 같이, 이 방법은 각 블록의 최대치에 가까운 값에 대한 양자화 오차를 줄이기 위해 NVFP4 블록을 4 또는 6으로 적응적으로 스케일링합니다.

Four Over Six 구현은 NVIDIA Blackwell GPU에서 가장 효율적으로 실행됩니다. 다만, 구형 하드웨어나 CPU에서도 코드 변경 없이 Four Over Six를 실행할 수 있습니다. 이러한 경우 프레임워크가 FP32 행렬 곱셈으로 시뮬레이션을 수행하는 구현으로 자동으로 폴백됩니다.
4/6로 모델을 NVFP4로 양자화하려면, 다음과 같이 모델을 로드할 수 있습니다:
from transformers import AutoModelForCausalLM, FourOverSixConfig
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-8B",
device_map="auto",
quantization_config=FourOverSixConfig(),
)NVFP4 양자화 과정에서 일반적으로 사용되는 다양한 양자화 옵션을 지원합니다. 여기에는 사전 인쇄본에 설명된 무작위 하다마드 변환, 2D 블록 스케일링, 전치 입력, 확률적 반올림 등이 포함됩니다.
위에서 전달한 FourOverSixConfig에서 적절한 옵션을 설정하여 이를 사용할 수 있습니다.
아래에 표시된 바와 같이, module_config_overrides를 설정하여 개별 레이어에 사용자 정의 양자화 옵션을 지정하거나, modules_to_not_convert를 설정하여 양자화에서 제외할 수 있습니다.
학습
양자화된 선형 레이어에는 backward pass 구현이 포함되어 있어, 소수의 수정만으로도 많은 모델을 추가로 학습할 수 있습니다. keep_master_weights를 True로 설정하고, 필요에 따라 양자화에서 레이어를 제외하세요(네트워크의 마지막 몇 개 레이어를 고정밀로 유지하는 것이 중요한 경우가 많습니다):
from transformers import AutoModelForCausalLM, FourOverSixConfig
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-8B",
device_map="auto",
quantization_config=FourOverSixConfig(
keep_master_weights=True,
modules_to_not_convert=[
"lm_head",
"model.layers.34.self_attn.q_proj",
"model.layers.34.self_attn.k_proj",
"model.layers.34.self_attn.v_proj",
# Add more layers here, e.g. self_attn.o_proj, MLP layers
],
),
)