오늘의 글 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로 바꿔주는것이라고 볼수 있지요!
여기에도 여러 방식이 있느데요!! 대표적인 방법 인 GPTQ와 AWQ가 있습니다.
실제 오픈소스 모델을 보면 확인이 가능하지요~~
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-int4와 GPTQ-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) |
성능 유지 | 그라디언트 보정을 통해 성능 저하 최소화 | 학습 과정에서 양자화하여 성능 저하 최소화 |
메모리 절감 | 메모리 절감 효과 있음 | 가중치와 활성화값 모두 양자화하여 더 큰 메모리 절감 효과 |
사용 용도 | 빠르게 학습된 모델을 양자화하고자 할 때 | 추론 속도와 메모리 절감이 중요한 저자원 환경에서 사용 |
'데이터&AI > LLM' 카테고리의 다른 글
내 컴퓨터에서 llm으로 이미지를 분석해 보쟈! (feat. qwen2-VL) (4) | 2024.10.10 |
---|---|
vllm 설치하고 오픈소스 모델을 openai 모듈로 써보기!(feat. 알리바바의 qwen2.5 예시!!) (0) | 2024.10.08 |
Qwen2.5를 사용해보기!!! (feat 한국어실력 확인!! qwen2와의 비교 ) (4) | 2024.10.06 |
네가 그렇게 수학을 잘하니? Qwen2.5-Math (feat. 오픈소스 LLM) (2) | 2024.10.04 |
LLM 모델명 이해하기! (feat. 모델명에 붙은 Instruct 가 무슨뜻이지?) (1) | 2024.10.03 |
댓글