Community

모델 양자화(Quantization)

LLM을 공부 중 모델 양자화(Quantization)의 개념 정리차원에서 나열해 봄(추후 추가 업데이트 예정). 개인적으로는 양자화라는 번역이 어색한데, 많은 분들이 그렇게 사용하고 계시기에 일단 양자화로 명시해봅니다.^^ 1. 양자화(Quantization)란? * 단순하게 모델의 가중치의 단위를 줄여 모델 크기와 연산 속도를 줄이는 것, lower precision bits로 매핑하는 것 * LLM이 화제 되기 전에도 이미 모델의 complexity 나 cost를 줄이고자 하는 노력의 일환으로 연구되던 분야 * 추론 단계에서 LLM의 시간 및 공간 비용을 줄이기 위해 사용. Not. 학습시간 * 모델 성능에 약간의 손실이 있더라도 양자화된 언어 모델은 모델 크기가 작고 추론 속도가 빨라질 수 있음 * LLM은 computational latency보다는 runtime memory overhead가 큼 * 양자화 모델: INT8, INT4, BLOOM17, GPT-J18 , GLM19 ** 양자화가 무조건 좋은 것은 아니다, 항상 성능 저하를 염두해야한다. 2. 양자화 유형 * Uniform vs non-uniform * Uniform quantization은 말 그대로 quantization level이 uniformly spaced 즉 stepsize 동일. input에 대해 output으로 변환 시 output의 값들의 차이가 uniform * Non-uniform은 output 값이 소숫점으로 서로 scale 차이가 일정하지 않음. 일반적으로 non-uniform이 좀 더 quantization error가 적은 편 * Symmetric vs asymmetric * 둘 간의 차이는 fixed offset의 유무 * Symmetric: offset 무, output value의 range를 정하는 min, max값이 절대값은 동일하되 부호만 다를 경우 * Asymmetric: offset 유, output value의 range를 정하는 min, max값의 부호 동일 3. 양자화 기법 * 학습 후 양자화(PTQ:Post-Training Quantization) * Network가 학습된 이후에 scaling해주는 방식. weight, activation의 scale은 원래 데이터셋의 activation distribution, weight distribution 기반 디자인 됨 * 이미 학습된 모델의 가중치를 재학습할 필요 없이 더 낮은 정밀도로 변환하는 간단한 기법. 구현하기는 쉽지만 PTQ는 잠재적인 성능 저하와 관련 있음 * 오픈소스형 LLM들을 PTQ 방식으로 양자화하여 상황에 맞게 사용 * 양자화 인식 훈련(QAT:Quantization-Aware Training) * Network를 완전히 학습시킨 뒤, Quantize(Q), Dequantize(DQ) 노드를 추가해서 학습이 완료된 모델에 epoch를 추가하는 방식처럼 추가학습(further training) * 학습 단계에서 미리 inference 시에 양자화했을 때의 loss를 simulation해볼 수 있기 때문에 PTQ보다는 정확도가 좋은 편 * 사전 훈련 또는 미세 조정 단계에서 가중치 변환 프로세스를 통합하여 모델 성능을 향상시. QAT는 계산 비용이 많이 들고 대표적인 훈련 데이터 필요 * LLM을 개발하는 쪽에서 더 많이 사용하는 방식 4. GPTQ * LLM 모델을 쉽게 양자화 해주는 패키지 * GPTQ: https://github.com/IST-DASLab/gptq * KoAlpaca GPTQ: https://github.com/qwopqwop200/GPTQ-for-KoAlpaca * kullm(고려대 NLP연구소에서 오픈소스로 기여한 LLM) :https://github.com/jongmin-oh/korean-LLM-quantize * Kullm GPTQ: https://huggingface.co/j5ng/kullm-12.8b-GPTQ-8bit 참고] * 거대언어모델(LLM)의 현주소 * Quantization  * [LLM]. 한국어 LLM 모델 GPTQ로 양자화 하기 (feat. koalpaca, kullm)  * Introduction to Weight Quantization * 4-bit Quantization with GPTQ

알림

알림이 없습니다