EETQ

EETQ

Easy & Efficient Quantization for Transformers (EETQ) 라이브러리는 NVIDIA GPU에서 int8 가중치 전용(weight-only) 채널별 양자화를 지원해요. 여기에는 FasterTransformer와 TensorRT-LLM의 고성능 GEMM·GEMV 커널을 사용합니다. 어텐션 레이어는 FlashAttention2로 최적화합니다. 보정(calibration) 데이터셋이 필요 없고, 모델을 미리 양자화할 필요도 없어요. 채널별 양자화 덕분에 정확도 저하는 무시할 만한 수준입니다.

출처: 문서

본문

EETQ는 PEFT로 미세 조정(fine-tuning)하는 것도 추가로 지원해요.

EETQ를 릴리스 페이지나 소스 코드에서 설치합니다. EETQ를 쓰려면 CUDA 11.4+가 필요해요.

pip install --no-cache-dir https://github.com/NetEase-FuXi/EETQ/releases/download/v1.0.0/EETQ-1.0.0+cu121+torch2.1.2-cp310-cp310-linux_x86_64.whl
git clone https://github.com/NetEase-FuXi/EETQ.git
cd EETQ/
git submodule update --init --recursive
pip install .

EetqConfig에서 양자화 데이터 타입을 정의하면 모델을 그 자리에서(on-the-fly) 양자화할 수 있어요.

from transformers import AutoModelForCausalLM, EetqConfig

quantization_config = EetqConfig("int8")
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    dtype="auto",
    device_map="auto",
    quantization_config=quantization_config
)

양자화된 모델은 save_pretrained()로 저장한 뒤, from_pretrained()로 다시 재사용할 수 있습니다.

quant_path = "/path/to/save/quantized/model"
model.save_pretrained(quant_path)
model = AutoModelForCausalLM.from_pretrained(quant_path, device_map="auto")

더 알아보기 (Learn more)