본문 바로가기
데이터&AI/LLM

LLM모델의 양자화!!(Quantization): GPTQ 및 AWQ 방식 알아보

by 일등박사 2024. 10. 7.
728x90

 


오늘의 글 3줄요약!!

  • 양자화는 모델을 압축한다!!
  • 단순히 모델 다운받아 사용할거면 GPTQ가 완벽!!
  • 메모리를 아끼며 학습시키려면!! AWQ를 쓰자!!

 

OpenAI의 GPT가 LLM 모델의 대표가 되어가고있지만,

이는 유로상업 모델로 그 구조가 공개되어있지 않습니다!!

 

하지만!! Meta의 llama를 필두로해서 여러 오픈소스 모델이 공개되고있는데요!!

이런 오픈소스 모델은 엄청 큰!! 메모리와 계산 자원을 요구합니다.

 

이를 해결하기 위한 방법 중 하나가 양자화(Quantization)입니다.

쉽게 말해 LLM 모델을 압축한다고 이해하면 되겠죄~~?

원래 양자화란 아날로그 신호를 binary 한 양자(전자는 1에서 1.5 가 없이 바로 2로가죠!?)신호로 바꾸는데서 유래되었는데요!!

 

 

오늘은 LLM모델의 양자화에 대하여 알아보고,

양쟈화의 방식인 GPTQ와 AWQ를 알아겠습니다!!.


1. 양자화란 무엇인가?

양자화는 모델의 가중치(weight)활성화값(activation)기존의 32비트 부동소수점 값 대신, 8비트, 4비트, 또는 심지어 2비트와 같은 더 낮은 비트 값으로 변환하는 방식입니다.

이를 통해 연산 자원을 절약하고, 모델의 처리 속도를 높일 수 있습니다.

 

양자화의 장점 요약!! 적은 메모리로 빠르고 효율적으로 쓸수있다!!!

  • 메모리 절감: 더 작은 비트 표현으로 인해 메모리 사용량이 대폭 줄어듭니다.
  • 속도 향상: 더 작은 데이터 크기로 인해 연산이 간소화되고 빠르게 처리될 수 있습니다.
  • 에너지 효율성: 양자화된 모델은 적은 전력으로 실행 가능하므로 에너지 절감 효과를 얻을 수 있습니다.

예를 들면 여러 parameter중 하나의 값이 0.111111111111 이었다고할떄!! 이 값을  0.1로 바꿔주는것이라고 볼수 있지요!

여기에도 여러 방식이 있느데요!! 대표적인 방법 인 GPTQAWQ가 있습니다.

실제 오픈소스 모델을 보면 확인이 가능하지요~~

qwen2.5의 공개된 모델!!


2. GPTQ (Gradient Post-Training Quantization) 란!?

GPTQ는 모델 학습이 완료된 후, 사후 양자화(post-training quantization)를 적용하는 방식

GPTQ의 핵심은 양자화 후에도 모델의 성능을 유지하거나 최소한의 성능 저하만 발생하게 하는 것

GPTQ의 주요 특징:

  • "빠르다". 사후 양자화: 학습이 완료된 모델에 대해 양자화를 적용, 이로 인해 추가적인 학습 과정 없이 빠르게 양자화 수행 가능
  • "성능유지". 그라디언트 보정*: 양자화 과정에서 발생할 수 있는 정보 손실을 그라디언트(gradient)를 활용하여 보정. 이를 통해 모델의 정확도를 최대한 유지
  • "유연하다" . 적응형 정밀도: 쉽게말해 강약약강!! 중요한 부분에서는 약하게 양자화(압축)하고, 별로 안중요한 부분에서는 강하게 양자화(압축)함. GPTQ는 모델의 특정 레이어나 매개변수에 대해 비트 수를 다르게 설정하여, 더 중요한 부분에 높은 정밀도를 부여하는 방식으로 성능 저하를 최소화합니다.
* 그라디언트 보정(Gradient Correction) 더 알아보기!!

예를들어!!  0.11111인게 0.1로되는것이 아니라, 0.1로 되었을떄의 성능 감소를 감지하고 알맞은 그라디언트 보정을 통하여 0.105가 됩니다!!

 

 

이에 더하여!! GPTQ-int4, GPT-int8의 차이는 무엇을까요!?

GPTQ-int4GPTQ-int8의 차이는 양자화된 가중치의 비트 수 입니다!!

 

>> 비트 수 차이란?

  • GPTQ-int4(높은압축율): 가중치를 4비트로 양자화한 방식. 매우 적은 비트 수로 가중치를 표현, 메모리 절약연산 속도 향상 측면에서 큰 장점!!!!
  • GPTQ-int8 (높은압축률) : 가중치를 8비트로 양자화한 방식. 4비트보다는 메모리 절감 효과가 덜하지만, 여전히 32비트 부동소수점에 비해 메모리 사용량을 크게 줄일 수 있음.

>> 예시로 알아보기!! 0.11111111111 의 값을 각각의 방식으로 압축하면!??

  • GPTQ-int4(높은압축율): 4비트의 값인  0.125 또는 0.0625로 변환
  • GPTQ-int8 (높은압축률) :  0.109375 또는 0.1171875와 같은 값으로 양자화

결국!! 메모리 자원이 아주 부족한 경우에는 GPTQ-int4, 성능 저하를 최소화하면서도 메모리를 줄이고 싶다면 GPTQ-int8

 


3. AWQ (Activation Weight Quantization) !!

AWQ는 활성화값(activation)과 가중치(weight)를 함께 양자화하는 기법!!!

모델을 학습할 때 발생하는 연산 부하를 더욱 줄이는 방식입니다.

AWQ의 주요 특징:

  • 동적 양자화: 활성화값도 함께 양자화하여 모델이 실행되는 동안 발생하는 연산 자원도 줄입니다.
  • 훈련된 양자화: 양자화된 가중치와 활성화값을 학습 과정 중에 미리 적용하여, 최종 양자화 모델의 성능을 더 높일 수 있습니다.
  • 추론 최적화: 추론 과정에서 사용하는 메모리와 연산량을 줄임으로써 LLM을 저자원 환경에서도 효율적으로 실행할 수 있습니다.

AWQ의 장점:

  • 더 큰 메모리 절감(GPTQ대비): 가중치뿐만 아니라 활성화값도 함께 양자화하여 더 큰 메모리 절감 효과
  • 추론 속도 향상: 실행 시 연산량을 줄여 더 빠른 추론이 가능
  • 성능 유지: 학습 중 양자화된 활성화값과 가중치를 적용하여, 추론 과정에서의 성능 저하를 최소화합니다.

GPTQ와 AWQ 모델을 비교정리하면!!

다음과 같습니다!

특징 GPTQ AWQ
양자화 시점 학습 후 양자화 학습 중 양자화
양자화 대상 가중치(weight) 가중치(weight)+ 활성화값(activation)
성능 유지 그라디언트 보정을 통해 성능 저하 최소화 학습 과정에서 양자화하여 성능 저하 최소화
메모리 절감 메모리 절감 효과 있음 가중치와 활성화값 모두 양자화하여 더 큰 메모리 절감 효과
사용 용도 빠르게 학습된 모델을 양자화하고자 할 때 추론 속도와 메모리 절감이 중요한 저자원 환경에서 사용

 

 

 

 

728x90

댓글