4️⃣Quantization

Quantization 양자화 기본 이론

  1. 기본은 모델의 파라미터 구성을 압축하는 것 입니다.

  1. 압축 시에 연결을 제거하는 가지치기 Pruning 방법론 사용합니다.

  1. Knowledge Distillation (지식 전이) 방식은 원래 모델(Instructor)을 사용하여 더 작은 모델(Student)을 훈련모델을 압축 할 수 있습니다.

  1. Quantization의 기본 원리는 모델 파라미터의 데이터 형식을 더 작게 만드는 것 입니다. (Low Precision)

  1. 실수형(Floating Point)는 bit 별로 FP32, F16, BF16으로 표현되며, 정수형(Integer)는 int32, int16, int8으로 표현됩니다.

Pytorch: Data Types and Sizes 실습

머신러닝 모델의 매개변수를 저장하는 데 사용되는 일반적인 데이터 유형에 대해 알아봅니다.

Integers

Floating Points

Downcasting

ML Models with Different Data Types

다양한 데이터 유형으로 ML 모델을 로드합니다.

모델에 있는 매개변수의 데이터 유형을 검사하는 함수를 만듭니다.

Model Casting: float16

Cast the model into a different precision.

매개변수의 데이터 유형을 검사합니다.

모델을 사용하여 간단한 추론을 실행합니다.

Model Casting: bfloat16

이제 logits_fp32와 logits_bf16의 차이를 비교해 보겠습니다.

LLM Models in Different Data Types

모델의 메모리 사용량을 확인합니다.

bfloat16에서 동일한 모델을 로드합니다.

Model Performance: float32 vs bfloat16

이제 두 모델의 생성 결과를 비교해 보겠습니다.

Default Data Type

  • 허깅페이스 트랜스포머 라이브러리의 경우, 모델을 로드할 기본 데이터 유형은 float32입니다.

  • '기본 데이터 유형'을 원하는 것으로 설정할 수 있습니다.

마찬가지로 기본 데이터 유형을 float32로 재설정할 수 있습니다.


LLM 양자화 주요 방법론:

  1. Linear Quantization (선형 양자화)

  2. LLM.INT8 (8-bit만 해당t)

  3. QLoRA(4-bit만 해당)

  4. HQQ(최대 2-bit)

Fine-tune Quantization 종류

Fine-tuning Quantization Model

  • 양자화에서 정확도가 그대로 재현

  • 특정 사용 사례 및 애플리케이션에 맞게 모델의 Fine-tuning 동시에 가능

QAT: Fine-tune with Quantization Aware Training

  • 정량화된 버전이 최적의 성능을 발휘할 수 있도록 모델을 미세 조정 합니다.

  • Post Training Quantization(PTQ) 기법과는 호환되지 않습니다.

  • Linear Quantization(선형 양자화) 방법은 PTQ의 예입니다.

PEFT(Parameters efficient fine-tuning)

  • 전체 미세 조정과 동일한 성능을 유지하면서 모델의 학습 가능한 매개변수 수를 대폭 줄일 수 있습니다.

  • 대표적으로 PEFT +QLoRA 활용: https://pytorch.org/blog/finetune-llms/

QLoRA 방법론

  1. QLoRA는 사전 학습 된 기본 가중치(그림의 blue 컬러)를 4비트 정밀도로 정량화합니다.

  2. Low Rank Adaptor(LoRA) 가중치의 정밀도(그림의 orang 컬러)와 일치합니다.

  3. 모델은 사전 학습된 가중치(blue)와 어댑터 가중치(orange)의 활성화를 추가할 수 있습니다.

  4. 이 두 활성화의 합은 네트워크의 다음 계층에 입력으로 제공될 수 있습니다.

-> QLoRA를 사용하면 더 효율적인 미세 조정 + 더 작은 모델을 얻을 수 있습니다!

/images/lora-qlora-and-qa-lora-efficient-adaptability-in-large-language-models-through-low-rank-matrix-factorization.gif

Quantization Theory 실습

Linear Quantization(선형 양자화)에 대하여 알아보겠습니다.

Without Quantization

Quantize the model (8-bit precision)

Freeze the model

Try running inference on the quantized model

Linear Quantization과 Downcasting 방법의 차이점을 요약하면 다음과 같습니다:

  • 모델을 다운캐스팅할 때는 모델의 파라미터를 보다 간결한 데이터 유형(bfloat16)으로 변환합니다. 추론하는 동안 모델은 이 데이터 유형으로 계산을 수행하고 활성화는 이 데이터 유형으로 이루어집니다. 다운캐스팅은 bfloat16 데이터 유형으로 작동할 수 있지만 더 작은 데이터 유형에서는 모델 성능이 저하될 수 있으며, 정수 데이터 유형(이 단원의 int8과 같은)으로 변환하는 경우에는 작동하지 않을 수 있습니다.

  • linear quantization를 사용하여 추론 중에 압축된 데이터 유형에서 원래의 FP32 데이터 유형으로 다시 변환함으로써 양자화된 모델이 원래 모델에 훨씬 가까운 성능을 유지할 수 있도록 했습니다. 따라서 모델이 예측을 할 때 행렬 곱셈은 FP32로, 활성화는 FP32로 수행합니다. 이를 통해 이 예제에서는 int8과 같이 bfloat16보다 작은 데이터 유형으로 모델을 정량화할 수 있습니다.

Last updated