해당논문은 LLM모델의 양자화와 성능의 상관관계에 대해서 기술한 논문으로, 최근 ollama 와 같은 local LLM 실행을 편리하게 도와줄 수 있는 기술들이 많이 등장한 가운데에 주목할만한 논문이다.
만약 양자화에 대해서 잘 모른다면 아래 포스팅을 참고하길 바란다.
포스팅에 앞서
해당 논문에 관심을 가지게 된 계기는 ollama에 배포된 대부분의 LLM 모델들이 4bit 양자화를 채택하고 있기 때문이다.
4bit이면 상당히 낮은 bit의 양자화 수준이라고 할 수 있다.
- 32bit : 양자화되지 않은(unquantized)
- 16bit : Half-precision
- 8bit
- 4bit
- 3bit
- 2bit
이러한 양자화를 사용하는 이유는, 양자화에 따라서 필요한 VRAM 용량이 크게 줄어들기 때문이다. Reddit의 한 사용자에 의하면 LLaMA 3.1 70B 2bit 양자화 모델은 RTX4090 24GB에서 구동된다.
본래 저정도의 LLM을 32bit 양자화 수준에서 구동하려면 어마어마한 VRAM이 필요하다. XiongjieDai 유저가 만든 Gibhub 저장소에서는 LLaMA 3.0 모델의 양자화별 Benchmark를 확인할 수 있다.
위의 표와 계산을 통해 예측해보면, 양자화되지 않은(32bit) 70B 수준의 모델을 Inference 용으로 구동하려면 최소한 280GB 수준의 VRAM이 필요하다는 사실을 추측할 수 있다.
반면 16bit 수준의 모델은 RTX3090 * 6, 즉 144GB 수준에서 구동이 가능한 것을 확인할 수 있다. (물론 초당 토큰 생성 개수가 5.82개 라면 끔찍하게 느린편이긴 하다.)
이러한 자료들을 찾아보면서 궁금한점이 생겼다.
양자화 수준과, 성능의 상관관계는 어떻게 될까?
서론
논문의 시작 지점에서 저자들은 아래와 같은 점을 명확히 하고 있다.
본 논문에서는 공개적으로 이용 가능한 다양한 벤치마크를 활용하여 명령어 튜닝을 수행하는 양자화된 LLM에 대한 포괄적인 평가를 수행합니다. 이러한 벤치마크는 언어 이해 및 생성뿐만 아니라 LLM의 두 가지 중요한 측면인 지식, 역량 및 정렬을 다룹니다. 또한 생성 속도 및 메모리 소비 측면에서 효율성을 위해 다양한 양자화 전략을 평가합니다.
즉 해당 논문은 어떠한 새로운것을 제안하지 않고, 속도와 메모리 소비 측면에서 Benchmark 데이터를 제공하는것에 그 목적을 둔다. 때문에 어려운 수식을 볼 필요도 없고, 이해하기 위해 머리를 싸맬 필요가 적은 논문이다.
또한 양자화에는 크게 두가지 종류가 존재하는데 PTQ와 QAT라고 칭한다. 논문에서 저자들은 두가지 기법에 대해 아래와 같이 밝히고 있다.
PTQ는 모델 훈련 후에 양자화를 적용하는 반면, QAT는 훈련 과정에서 양자화의 영향을 고려하므로 상당한 리소스와 전문 지식이 필요하므로 광범위한 적용이 제한됩니다. 따라서 우리의 연구는 주로 PTQ에 중점을 두고 있습니다.
솔직히 나도 양자화에 관해서는 이론적인 배경만 잘 알고 있지, 실제로 QAT를 진행하는것이 얼마나 까다로운지는 잘 모른다. 하지만 QAT의 장점이 그만큼 뛰어나다면 현재 OpenLLM 기준 최고의 쌍두마차를 달리는 Meta, Alibaba 측에서 QAT 기반으로 된 양자화 모델을 출시하지 않을리가 없다고 생각한다.
하지만 관련된 자료가 딱히 보이지 않는걸로 봐서는 생각보다 QAT를 수행하는데 들어가는 수고로움 보다는 PTQ로 퉁쳐버리는게 싸고, 효율이 좋게 먹이는듯 싶다.(아니면 효율적인 관점에서 애매하다고 봐서 포기했거나.)
또한 자료를 찾아봐도 정확한 데이터가 나오진 않으나, 위에서 언급한 ollama 의 양자화 역시 PTQ 일 것이다.
평가 방법
저자들은 양자화된 LLM을 평가하기 위해 아래와 같이 구조화된 평가 프레임워크를 제안하고 있다.
LLM에 대한 종합적인 평가는 다양성, 광범위한 적용, 설명 가능성 부족으로 인해 오랜 과제를 안고 있습니다. 이를 해결하기 위해 우리는 (1) Knowledge and Capacity, (2) Alignment, (3) Efficiency이라는 세 가지 중요한 차원을 포함하는 구조화된 평가 프레임워크를 제안합니다.
먼저 (1) Knowledge and Capacity을 테스트 하기 위해서 MMLU, C-EVAL 벤치마크를 사용한다.(역사, 화학, 경제학을 포함한 다양한 주제를 통해 테스트), 또한 언어능력을 평가하기 위해 FLORES-200, CNN/DailyMail, XSum, GSM8K, SNLI 벤치마크를 사용한다.
(2) Alignment을 테스트하기 위해 Askell et al. 이 제안한 HHH 기준을 사용한다. 주요 평가 기준은 helpfulness, honesty, harmlessness 이다. 3가지 기준을 각각을 테스트 하기 위해서 FollowBench(Jiang et al.), TruthfulQA(Lin et al.), BBQ(Parrish et al.)를 사용한다.
(3) Efficiency를 테스트하기 위해 LLM을 실제로 Inference 중 사용되는 메모리의 양과, 생성 속도를 기준으로 평가한다.
이러한 평가 과정은 Qwen-chat LLM 통해 진행된다.
평가 결과
그래프에 존재하는 GPTQ, LLM.int8(), SPQR은 서로다른 양자화 기법을 의미한다.
(1) Knowledge and Capacity 부분에서 MMLU, C-EVAL 테스트를 진행한 결과는 아래와 같다.
(1) 부분에서 언어능력 평가를 위해 사용한 FLORES-200 벤치마크는 영어 → 중국어, 중국어 → 영어 번역을 통해 진행하였다.
마찬가지로 (1)의 언어영역을 평가하기 위해 XSum을 사용하였다.
(2) Alignment 부분을 평가하기 위해 TruthfulQA 를 사용하였다.
(3) Efficiency 부분의 테스트 결과
SPQR의 경우 양자화된 가중치를 '고정밀도 형식' 으로 표현하는데, 이는 단순히 양자화된 가중치를 저정밀도 형식과 일치하도록 제한하는 방식이다. 이로 인해 실제 계산은 여전히 '고정밀도 방식' 으로 이뤄지므로 메모리 소비를 줄이는 효과가 존재하지 않는다.
SpQR Dettmers et al. (2023b) cleverly combines GPTQ (Frantar et al., 2023) and outlier value protection to further improve quantization performance. It uses a smaller group size and saves outliers through a sparse matrix. Currently, this method has not yet implemented the CUDA operator. So we need to use floating point numbers to simulate the integer quantization, which is called fake quantization. The code used in our experiments was modified from the official code$^5$ and adapted to Qwen.
즉 해당논문에서 제시하는 SPQR은 성능평가만 확인하고, 메모리 평가는 보지 않는것이 좋겠다.
소감
위의 전반적인 그래프를 확인하면 알 수 있듯 3bit 이하의 양자화는 가급적 사용하지 않는것이 좋겠다. 메모리 사용량도 4bit 양자화에 비해서 크게 효율적이지 않은 반면, 성능 하락폭은 상당히 큰 것을 볼 수 있다. 이는 ollama에서 왜 4bit 양자화를 메인으로 채택하였는지 알 수 있는 부분이다.
또한 전반적으로 SPQR의 성능이 GPTQ보다 높은 수준이다. 해당 논문에서는 메모리 소비를 실제로 감소시키는 SPQR을 적용시키지 않았기에 그 득실관계를 명확히 파악하기에 어려운 부분이 있지만, 어쨋든 성능적으로는 SPQR이 더 우세함을 알 수 있다.(메모리 소비는 아마 GPTQ와 큰 차이 없으리라 생각된다.)
'Artificial Intelligence > Article' 카테고리의 다른 글
[리뷰] QWEN TECHNICAL REPORT (0) | 2024.06.14 |
---|---|
[리뷰] AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning (0) | 2024.03.31 |
[리뷰] LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS (0) | 2024.03.19 |
[리뷰] TRIAAN-VC (0) | 2024.02.23 |
[리뷰] HiFi-VC: High Quality ASR-Based Voice Conversion (0) | 2024.02.20 |