ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LLM Model을 가정 GPU에서 사용하는 방법 - Quantization 방법론 - GPTQ
    Machine Learning 2023. 7. 28. 09:32
    반응형

     

    Model 32bit 4bit 32g
    Llama 7B 13GB 4GB
    Llama 13B 26GB 8GB
    Llama 30B 66GB 19.4GB

    이미 파라미터 수가 13B 넘어서는 순간부터는 가정에서 쓰이는 GPU로는 돌릴 수가 없는 모델이죠

    4090 기준으로도 GPU Memory는 24GB이기 때문에 이론상 7B Model만 사용 가능합니다.

    하지만 Quantization 기술을 활용하면 성능을 조금 포기하고, 매우 큰 LLM Model도 GPU에 Load하여 사용할 수 있습니다.

    실제로도 HuggingFace에 "TheBloke" 라는 이름으로 매번 새로운 Fine-tune 모델들이 올라오면 Quantization 한 후에 prompt까지 제공을 해주는 아주 고마운 분들이 있죠, 덕분에 저희는 이미 Quantization된 모델을 활용하여, 새로운 모델을 빠르고 쉽게 테스트가 가능합니다!

     

    기존 부동소수점 32bit로 표현된 가중치들은 매우 큰 크기를 가지고 있습니다.

    하지만 압축 기술을 이용하여, 4bit와 그룹사이즈 32개로 줄이면 성능은 최대로, 용량은 작게 만들 수 있기 때문에

    7B Model 같은 경우는 모바일에서도 돌아갈 수 있는 모델이 되는거죠!

    여기서 그룹사이즈는 압축 당시에 그룹핑될 가중치의 사이즈라고 알고 있습니다.

     

     

    GPTQ 논문: 

    GPTQ: ACCURATE POST-TRAINING QUANTIZATION FOR GENERATIVE PRE-TRAINED TRANSFORMERS

    https://arxiv.org/pdf/2210.17323.pdf

     

    GPT3.5 요약:


    2023년 ICLR에서 발표된 "GPTQ: 정확한 사후 훈련 양자화를 위한 생성적 사전 훈련 변형기"는 GPT 모델의 사후 훈련 양자화에 대해 다룬 논문이다. 이 논문은 GPT 모델의 크기와 복잡성에 대한 도전에 대응하기 위해 새로운 가중치 양자화 방법인 GPTQ를 제안하였다. GPTQ는 1750억 개의 파라미터를 가진 GPT 모델을 3 또는 4비트로 양자화할 수 있으며, 높은 정확도와 효율성을 유지한다. 실험 결과, GPTQ를 사용하면 압축 효과가 두 배 이상 향상되고, 단일 GPU에서도 모델을 실행할 수 있다는 것을 보여주었다. 이 연구는 GPU를 사용할 경우 약 3.25배, 경제적인 비용으로 더 많은 GPU를 사용할 경우 약 4.5배의 추론 속도 향상을 얻을 수 있다고 밝혔다.

    이 논문은 모델 압축을 통해 추론 과정에서 발생하는 오버헤드를 줄이는 방법에 대해 다루고 있다. 현재까지는 추론을 위한 모델 압축에 대해 많이 알려져 있지 않으며, 압축 방법 중에서도 수십억 개의 파라미터를 가진 모델에서 효과적으로 적용하기 어렵다. 이 논문에서는 GPTQ라는 새로운 사후 훈련 양자화 방법을 제안하고 있다. GPTQ는 수십억 개의 매개변수를 가진 모델을 효율적으로 압축할 수 있으며, 정확성에 큰 손실 없이 모델을 3-4비트로 압축할 수 있다. 이 논문은 이러한 압축 방법이 언어 모델링에서 가능하다는 것을 보여주고 있다. 또한, 이 연구는 모델을 실행하기 위한 실행 도구를 개발하였으며, 이를 통해 압축된 모델을 효율적으로 실행할 수 있었다. 이 연구는 추가 연구를 자극하고 이 모델들을 보다 넓은 관객에게 제공하기 위한 더 나은 방법을 모색할 것을 기대하고 있다.

    이 논문은 OPT 모델과 PTQ를 결합한 OBQ 기법을 소개한다. OBQ는 가중치를 정량화할 때 정량화 오차의 순서에 따라 가중치를 하나씩 조정하는 방식으로 작동한다. 연구자들은 대형 모델의 추론을 비용 효율적으로 압축하는 방법을 개발하기 시작했고, 이 연구는 GPTQ가 이전 기술에 비해 압축량을 두 배 이상 늘릴 수 있으며 비슷한 정확도를 유지할 수 있다는 것을 보여준다.

    이 논문은 Optimal Brain Quantization (OBQ) 방법을 사용하여 언어 모델의 계층별 양자화 문제를 해결하기 위한 접근 방식을 제안한다. OBQ는 양자화 그리드를 사용하여 가중치를 양자화하고, 이를 통해 계산 속도를 향상시킨다. 또한, OBQ는 가중치를 반복적으로 양자화하여 오차를 보상하며, 벡터화된 구현을 통해 병렬 처리를 수행할 수 있다. 그러나 OBQ의 실행 시간은 입력 의존성으로 인해 모델의 크기가 커질수록 증가한다. 이 논문은 OBQ의 개선점을 제시하고, 가중치를 동일한 순서로 양자화하는 방법을 소개한다. 이 방법은 OBQ와 유사한 성능을 보이며, 실행 시간을 크게 줄일 수 있다는 점에서 유용하다.

    이 연구는 대규모 모델에 적용하기 위한 두 가지 주요 문제를 다루고 있다. 첫 번째로, 메모리 대역폭의 낮은 성능으로 인해 작업이 병목 현상을 일으킬 수 있다는 것이다. 이 문제를 해결하기 위해 "게으르게 일괄 처리"라는 전략을 제안하고 있다. 이 전략은 메모리 처리 병목 현상을 효과적으로 해결하며, 매우 큰 모델의 속도를 10배 빠르게 만들 수 있다고 한다. 두 번째로, 업데이트를 효율적으로 수행하기 위해 식 (2) 및 (3)을 사용하라고 제안하고 있다. 이 연구의 결과는 모던 GPU의 컴퓨팅 능력을 적절하게 활용하는 데 도움을 줄 것으로 기대된다.

    "Step 3: Cholesky Reformulation"은 대규모 모델에서 발생할 수 있는 숫자 정확성 문제를 해결한다. 이 문제는 블록 업데이트와 결합될 때 행렬 H-1 F가 정의되지 않아 가중치 업데이트가 잘못되고 레이어의 양자화가 나빠지는 문제를 일으킬 수 있다. 이 문제는 특정 방정식의 반복적인 적용으로 누적된 숫자 오차로 인해 더 큰 모델에서 더 자주 발생할 가능성이 있다. 더 작은 모델의 경우, H의 대각 요소에 작은 상수를 더하는 것만으로도 숫자 문제를 회피할 수 있다. 그러나 더 큰 모델은 더 견고하고 일반적인 접근 방식이 필요하다. 이를 해결하기 위해, H−1에서는 행 q에 대한 정보만 필요하다는 점을 활용한다. 따라서 우리는 이러한 모든 행을 미리 계산할 수 있는 더 안정적인 수치 방법을 사용하여 기존의 메모리 소비량을 증가시키지 않고 해결할 수 있다. 약한 감쇠를 사용하여 결과 메소드는 큰 모델에서도 문제없이 실행할 수 있을만큼 견고하다. 또한, 최적화된 Cholesky 커널을 사용하면 속도를 더욱 높일 수 있다. 이 논문은 GPTQ라는 새로운 양자화 방법의 정확성과 실행 시간을 실험적으로 검증하며, 작은 모델과 매우 큰 모델에 대한 결과를 제공한다.

    이 연구는 PyTorch를 사용하여 GPTQ를 구현하고, BLOOM 및 OPT 모델군의 HuggingFace 통합을 활용하여 생성 작업에 대한 속도를 향상시켰다. GPTQ는 작업 특정 데이터를 보지 않기 때문에 "제로샷" 상태라고 강조하고 있으며, 최소-최대 그리드에서 표준 균일한 행별 비대칭 양자화를 수행하였다. GPTQ는 RTN보다 성능이 우수하며, 4-bit에서는 경쟁력이 있고 3-bit에서는 약간 떨어진다. BERT-base와 OPT-125M에서는 4-bit에서 OBQ와 유사한 성능을 보이고 3-bit에서는 GPTQ가 더 나은 성능을 보인다. 전반적으로, GPTQ는 경쟁력이 있다.

    이 연구는 작은 모델에 대한 최첨단 사후 훈련 방법을 제시하며, 이를 통해 훨씬 큰 모델로의 확장이 가능해진다는 결과를 도출했다. 이 연구에서는 GPTQ 모델의 양자화 시간을 측정하였고, 작업에 따라 다른 시간이 소요되는 것을 확인했다. 또한, GPTQ가 RTN보다 우수한 성능을 보이며, 모델 양자화에 민감한 작업에서 더 나은 결과를 보인다는 것을 평가를 통해 확인했다. OPT-66B2를 제외하고 큰 모델은 양자화하기 쉬워지는 경향이 있으며, 이는 실제 응용 프로그램에 좋은 소식이라고 할 수 있다.

    이 연구는 OPT와 BLOOM 알고리즘이 WikiText2 데이터셋에서 perplexity 결과를 제시하고 있습니다. BLOOM-176B와 OPT-175B는 가장 큰 밀집 모델로 알려져 있으며, GPTQ 모델의 4비트 성능은 전체 정밀도 버전보다 약간 낮은 퍼플렉서티를 보입니다. GPTQ의 정확도는 그룹화를 통해 개선될 수 있으며, OPT-66B 모델에는 압축이 어려워지는 문제가 있습니다. 또한, 이 논문은 OPT-175B와 BLOOM-176B에 대한 결과를 요약하고 실제적인 속도 향상에 대한 연구 결과를 제시합니다. 양자화된 모델은 적은 메모리를 사용하며, 동적으로 양자화 해제하여 실행할 수 있습니다. 또한, 언어 생성을 위해 양자화된 행렬-전체-정밀도-벡터-곱 커널을 개발하여 속도 향상을 이룰 수 있다는 것을 보여줍니다.

    Table 6 shows that reduced memory usage leads to significant speedups, primarily due to kernels rather than communication costs. The A6000 GPU can execute a 3-bit OPT-175B model in 130ms, which is twice as fast as running an FP16 model with a delay of 589ms. Similarly, the A100 GPU can execute the 3-bit OPT-175B model in 71ms, which is faster than running an FP16 model with a delay of 230ms. The performance of quantized models is evaluated in popular zero-shot tasks such as LAMBADA, ARC, and PIQA. The results show that quantization at 4 bits is relatively "easier" for all models, while the RTN does not work at 3 bits, and GPTQ still provides good accuracy. The study demonstrates that GPTQ is compatible with various quantization grid selections and can improve accuracy when combined with standard grouping. Different quantization results are observed based on group size, and the accuracy loss of intermediate-sized models can be significantly reduced. The study also shows extreme quantization at 2 bits achieved through grouping, with perplexity increasing by less than 1.5 points when using a group size of 128. Additionally, a ternary (-1, 0, +1) quantization can be applied to OPT-175B with a group size of 8, achieving a WikiText2 PPL of 9.20. These results encourage the pursuit of high-accuracy one-shot models and provide insights for efficient implementation on custom hardware like FPGA.

    이 연구는 양자화를 통해 매우 큰 언어 모델을 압축하는 방법을 제시한다. 이 방법은 3비트와 4비트로 정확도 손실이 적은 상태에서 모델을 압축할 수 있으며, 종단 간 속도 향상을 이끌어낸다. 이 연구는 생성 작업에 초점을 맞추고 있으며, 활성화 양자화는 고려하지 않는다. 또한, 연구는 표준 정확도 지표인 perplexity에 초점을 맞추고 있으며, 편향 효과와 윤리적 영향을 더 연구할 필요가 있다고 언급한다. 이러한 도구들은 사용과 배포가 쉬워지고, 그들의 힘과 한계를 이해하는 필요성이 더욱 엄격해질 것으로 예상된다.

    위의 문장은 여러 논문들에 대한 간단한 요약을 포함하고 있다. 첫 번째 논문은 ARC 데이터셋 내에서 지식, 추론 및 문맥을 체계적으로 분류하는 방법에 대해 다루고 있다. 두 번째 논문은 언어 모델이 적은 데이터로도 학습할 수 있는 능력을 갖고 있다는 것을 보여주고 있다. 세 번째 논문은 빠르고 메모리 효율적인 정확한 어텐션 기법에 대해 다루고 있다. 마지막 논문은 대규모 트랜스포머 모델을 위한 8비트 행렬 곱셈 방법에 대해 다루고 있다. 또한, 다른 요약에서는 다양한 딥러닝 기술과 관련된 주제들을 다루는 논문들에 대한 요약을 볼 수 있다. 논문들은 후처리 양자화, 가지치기 기법, 희소성을 이용한 효율적인 추론과 학습, 포스트 트레이닝 신경망 양자화, 그리고 다국어 데이터셋에 대한 연구 등 다양한 주제를 다루고 있다. 마지막으로, 다른 요약에서는 BRECQ 기술, Penn Treebank 데이터셋, 포인터 센티널 혼합 모델, 그리고 후처리 양자화를 위한 적응적 반올림 기법에 대한 연구에 대한 간단한 요약을 볼 수 있다.

    위의 논문은 Neural Network Quantization에 관한 연구 내용을 다루고 있다. "Loss aware post-training quantization"은 신경망 양자화 기술에 대한 연구 결과를 제시하고 있으며, "The LAMBADA dataset"은 단어 예측을 위한 데이터셋에 대한 연구 내용을 다루고 있다. "nuQmm"은 대규모 생성 언어 모델의 효율적 추론을 위한 양자화 기술에 관한 논문이다. Pytorch는 고성능 딥러닝 라이브러리로, 언어 모델의 비지도 다중태스크 학습자임을 주장하는 연구가 있다. SQuAD는 텍스트의 기계 이해를 위한 데이터셋으로, WoodFisher, PiQA, Attention is all you need, 정확한 후처리 네트워크 양자화, 사전 훈련된 트랜스포머 모델의 극한 압축 방법에 대한 연구도 제시되었다. GPTQ와 OBQ는 BERT-base/SQuAD와 OPT-125M/WikiText2를 기반으로 비교되었는데, GPTQ가 BERT에서 약간 더 나은 성능을 보였고, OBQ는 OPT에서 더 나은 성능을 보였다. 모델 평가와 타이밍 설정에 대한 추가적인 실험 세부 사항도 제공되었다.

    이 연구는 언어 생성을 위해 perplexity를 계산하고, 타이밍 실험을 수행한다. 연구 결과에 따르면 GPTQ 모델은 BLOOM Bits 모델보다 더 낮은 perplexity를 보여준다.

    위의 표는 C4, LAMBADA, PIQA, ARC-easy, ARC-challenge, StoryCloze 데이터셋에 대한 OPT 및 BLOOM 모델의 정확도를 보여줍니다. BLOOM 모델은 다양한 비트 수에 따라 정확도가 다르며, OPT 모델은 다양한 크기의 데이터를 사용하여 정확도를 평가합니다. 표 22에서는 BLOOM의 StoryCloze 정확도가 16임을 보여줍니다.


    끝.

    반응형
Designed by Tistory.