FBGEMM
FBGEMM
FBGEMM (Facebook GEneral Matrix Multiplication)은 작은 배치 크기를 위한 저정밀(low-precision) 행렬 곱셈 라이브러리로, 행별 양자화(row-wise quantization)나 이상치 인지 양자화(outlier-aware quantization)처럼 정확도 손실을 줄이는 기법을 지원합니다. FBGEMM을 쓰면 모델 가중치를 8비트/채널, 활성화를 8비트/토큰으로 양자화할 수 있어요 (fp8 또는 w8a8이라고도 불러요).
출처: 문서
본문
[!TIP] H100처럼 컴퓨트 캐퍼빌리티 9 이상의 GPU가 필요합니다.
최신 버전을 확실히 쓰기 위해 아래 명령으로 FBGEMM_GPU 패키지를 설치합니다.
pip install --upgrade accelerate fbgemm-gpu torch
설치에 문제가 있다면 나이틀리 릴리스를 설치해 보세요.
FbgemmFp8Config를 만들고 from_pretrained()에 넘기면 모델을 fp8로 양자화합니다.
from transformers import FbgemmFp8Config, AutoModelForCausalLM
quantization_config = FbgemmFp8Config()
quantized_model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Meta-Llama-3-8B",
dtype="auto",
device_map="auto",
quantization_config=quantization_config
)
save_pretrained()와 from_pretrained()를 사용하면 양자화된 모델을 저장하고 불러올 수 있어요.
quant_path = "/path/to/save/quantized/model"
quantized_model.save_pretrained(quant_path)
model = AutoModelForCausalLM.from_pretrained(quant_path, device_map="auto")
더 알아보기 (Learn more)
FBGEMM에 대해 더 자세히 알고 싶다면 Open-sourcing FBGEMM for state-of-the-art server-side inference 블로그 포스트를 읽어 보세요.
- FBGEMM GitHub 저장소: 라이브러리 소스 코드와 이슈