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 블로그 포스트를 읽어 보세요.