Quantization

몽뭉뭉·2024년 2월 21일

koala 프로젝트

목록 보기
3/7
  • Post-Training Quantization(PTQ)
  • Quantization-Aware Training(QAT)

Accelerate - LLM을 sharding 해주는 패키지
이때 LLM을 sharding 한다는 것은 모델을 여러 조각으로 나눈다는 것을 의미하고 OOM을 피하기 위해 모델의 가중치를 다른 장치에 분산시키는 것이다.

모델 로딩 때 양자화 하는 방법

  • Post-Training Quantization(PTQ)
    PTQ는 이미 훈련된 모델에 적용되며, 추가적인 훈련 없이 모델의 가중치를 양자화합니다.

Quantization with 4bit-NormalFloat(NF4)

Normalization: 모델의 가중치를 정규화하여 특정 범위 내에 속하도록 합니다. 이는 더 흔한 값들을 효율적으로 표현할 수 있게 해줍니다.
Quantization: 가중치를 4비트로 양자화합니다. NF4에서는 양자화 수준이 정규화된 가중치에 대해 균등하게 배치되어 원래의 32비트 가중치를 효율적으로 표현합니다.
Dequantization: 가중치가 4비트로 저장되지만, 계산 시 역양자화되어 추론 동안 성능이 향상됩니다.

bnb_config=BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type='nf4',
    bnb_4bit_use_double_quant=True,
    bnb_4bit_compute_dtype=torch.bfloat16
)

load_in_4bit: 모델을 4비트로 로드할지
bnb_4bit_quant_type: NormalFloat 4비트로 양자화할지
bnb_4bit_use_double_quant: 이중양자화를 할지
bnb_4bit_compute_dtype: 데이터타입

GPTQ는 GPT 모델을 위한 후훈련 양자화(PTQ) 방법
이 방법은 모든 가중치를 4비트 양자화로 압축하려고 시도하고 int4 가중치가 GPU의 전역 메모리가 아닌 통합 커널에서 역양자화되기 때문에 메모리 사용량을 4배 절약할 수 있고 추론시간도 단축 시킬 수 있다.


모델 서빙 시 양자화 하는 방법

  • Quantization-Aware Training(QAT)
    QAT는 훈련 과정에서 양자화를 고려하여 모델을 훈련시키는 방법으로, 모델의 정확도 손실을 최소화하려는 목적

0개의 댓글