논문/NLP

논문 리뷰) The Era of 1-bit LLM: All Large Language Models are in 1.58 Bits

Dogun Kim 2024. 10. 25. 14:10

The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits

https://arxiv.org/abs/2402.17764

 

The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits

Recent research, such as BitNet, is paving the way for a new era of 1-bit Large Language Models (LLMs). In this work, we introduce a 1-bit LLM variant, namely BitNet b1.58, in which every single parameter (or weight) of the LLM is ternary {-1, 0, 1}. It ma

arxiv.org

 

0. Abstract

논문에서 소개하는 BitNet b1.58는 1비트 LLM 변형 모델이며, 이 모델의 모든 파라미터는 {-1, 0, 1} 3진 값만을 갖는다. 이러한 값만을 가지고도 고정밀 Transformer LLM과 동일한 성능을 보이며, 지연 시간, 메모리 사용량, 처리량, 에너지 소비 측면에서 훨씬 비용 효율성을 보인다.

 

더 나아가 새로운 스케일링 법칙과 학습 방법를 정의, 계산 패러다임을 가능하게 하며, 1비트 LLM에 최적화된 특정 하드웨어 설계의 가능성을 제시한다고 한다.

 


1. The Era of 1-bit LLMs

  • Rapid growth in the size

LLM은 최근 몇 년동안 크기와 성능에 대한 급격한 성장이 있었다. 이러한 최근 LLM들은 자연어 처리 작업에 대해 놀라운 성능을 보여주고 있지만, 크기가 커지며 배포에 대한 어려움과 높은 에너지 소비로 인해 환경적, 경제적 영향 우려가 존재.

 

  • post-training quantization 학습 후 양자화

https://ai.google.dev/edge/litert/models/post_training_quantization?hl=ko

 

학습 후 양자화  |  Google AI Edge  |  Google AI for Developers

LiteRT 소개: 온디바이스 AI를 위한 Google의 고성능 런타임(이전 명칭: TensorFlow Lite)입니다. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 학습 후 양자화 컬렉션을 사용해 정리

ai.google.dev

이를 해결하기 위해 주로 학습이 끝난 후 추론을 위한 모델을 간소화하여 메모리와 계산 자원을 줄이는 양자화 방식이 사용되고 있다. 이 기법을 통해 만든 학습을 위한 저비트 모델은 가중치와 activation의 정밀도를 줄여서, LLM의 메모리와 계산 요구 사항을 크게 감소시킬 수 있다.

 

하지만 논문에서 학습 후 양자화는 성능 측면에서 최적의 방법이 아니라고 지적한다.

 


  • 1- Bit Model

양자화 방법 대신, BitNet과 같은 1비트 모델 구조에 대한 최근 연구는 성능을 유지하면서도 LLM의 비용을 줄이는 방향을 제시하고 있다.

https://arxiv.org/abs/2310.11453

 

BitNet: Scaling 1-bit Transformers for Large Language Models

The increasing size of large language models has posed challenges for deployment and raised concerns about environmental impact due to high energy consumption. In this work, we introduce BitNet, a scalable and stable 1-bit Transformer architecture designed

arxiv.org

기존의 LLM은 16-bit floating 값을 사용하며, 대부분의 LLM 연산은 행렬 곱셈으로 이루워진다. 따라서 주요 계산 비용은 소수점 덧셈과 곱셈 연산에서 많이 발생하게 된다. 

BitNet figure3, 적은 에너지 소비로도 좋은 성능을 보임.

반면에 BitNet의 행렬 곱은 정수 '덧셈'만을 포함하여 LLM 에너지 비용을 대폭 절감할 수 있도록 한다. 계산 성능의 근본적인 한계는 하드웨어의 전력에 있으므로 에너지 비용 절감을 통해 계산 성능을 높일 수 있다. 또한 용량과 대역폭 면에서 훨씬 적은 메모리 용량을 차지하며, DRAM에서 가중치를 불러오는 데 드는 비용, 시간을 크게 줄여 빠르고 효율적인 추론을 가능하게 한다.

0, 1, -1 가중치만 사용한다.

이 논문에서 제시하는BitNet b1.58은 기존의 BitNet에서 -1, 1만 사용하던 것과 달리, 0 값을 추가하여 {-1, 0, 1}의 3진 값Parameter을 사용하는 1.58비트 LLM이다. BitNet b1.58은 BitNet의 모든 이점을 유지하며, 행렬 곱셈이 거의 필요 없는 새로운 계산 방식을 포함하여 고도로 최적화 될 수 있다.

b1.58의 새로운 연산. 곱셈 없이 연산이 가능하여, 최적화가 용이하다.

 

  • BitNet b1.58 장점 정리

기존의 BitNet 대비 BitNet b1.58의 새로운 장점은 다음과 같다.

1) 모델 가중치에 0이 포함되어 명시적으로 기능 필터링을 지원

-1, 1만 존재하던 BitNet에 0을 추가함으로써, 0을 사용하여 특정 뉴런을 차단하거나, 활성화하지 않는 등 역할을 할 수 있다. 이로 인해 불필요한 정보나 기능을 필터링해내고, 중요한 정보만 남겨 성능을 향상시킨다.

 

2) FP16 기준 모델과 동일한 설정으로 난해도와 최종 작업 성능에서 일치하는 성능 

실험으로 본 결과다. 동일한 성능을 보이지만, BitNet b1.58는 메모리, 처리량 등에 대해 훨씬 효율적이다.

 


2. BitNet b1.58

  • 기존 BitNet 모델과 구조적으로 다른 점

1) nn.Linear 레어를 BitLinear라는 새로운 레이어로 교체, 보다 효율적인 계산을 가능하도록 한다. 

가중치에 실수 값이 들어갈 수 있던 nn.Linear와 달리, {-1, 0, 1}로 제한된 레이어. 이를 통해 메모리와 계산 자원을 절약. 여기서 0의 추가가 중요한 변화로 이로 인해 필터링 기능을 사용할 수 있게 되었다.

 

2) 모델이 처음부터 훈련되며, 활성화 함수는 8비트 정수로 표현된다.

모델이 처음부터 {-1, 0, 1}의 제한된 가중치와, 8비트 정수로 표현되는 활성화 함수로 학습한다는 것이다.

 

  • Absmean Quantization Function : 가중치 {-1, 0, 1}로 반올림

a = -1, b= 1로 설정되어 있다.

가중치를  {-1, 0, 1}로 제한하기 위한 과정이다. 가중치 값을 절대값의 평균(γ)을 기준으로 스케일링하고, 그 값을 {-1, 0, 1}중 가장 가까운 정수로 반올림 한다. 이를 위한 Absmean Quantization Function이다.

  • Activation Quantization : 대칭되는 정수 범위로 실수 활성화 값 매칭, 제로 포인트 양자화 제거

활성화 값을 8비트 정수로 변환하기 위해서는 값을 특정한 범위로 압축해야한다. 양자화는 BitNet과 동일한 방식으로 구현되지만, 비선형 함수 전에 활성화 값을 [0, Qb] 범위로 스케링하지 않고, [-Qb, Qb] 범위로 스케일링, 제로 포인트 양자화를 제거한다. 이는 구현과 시스템 수준의 최적화 측면에서 더 편리하고 단순하며, 실험 결과 성능에 거의 영향을 미치지 않았다.

 

cf. [-Qb, Qb] 범위로 스케일링?

ReLU 활성화 함수는 [0, Qb]으로 스케일링 하는 활성화 함수다. 이걸 좀 평행이동해서 중간으로 내렸다고 생각하면 쉽다.

 

cf2. zero-point quantization?

제로 포인트 양자화란 부동소수점의 0. 값을 정수 값의 특정 중심으로 대응시키는 과정이다. 예를 들어 부동 소수점 [-1, 1]을 8비트로 양자화하면 [0, 255] 범위로 변환되며 0은 정수 128에 대응할 수 있다. 

 [-Qb, Qb] 범위로 스케일링하게 된다면, 부동소수점 0.은 정수 0에 대응 될 것이다. 즉, 0을 따로 정수 값의 중심에 배치하지 않고, 양자화된 값 자체가 0을 포함하게 된다면 계산 비용, 양자화 구현에 대해 이점을 얻을 수 있다. 이게 제로 포인트 양자화가 제거됐다는 것이다. (0 -> 0 대응)

 

#  BitNet b1.58 요약 : 가중치를 Absmean Quantization Function 사용하여 -1에서 1 사이의 값으로 양자화하고, 활성화 값을 대칭적인 정수 범위[-a, a]로 매핑하여, 실수 0이 정수 0에 정확히 대응되도록 설계함.

>> 이를 통해 계산 효율성을 극대화하면서도 메모리 사용량을 절감, 성능 저하 없이 모델의 최적화를 달성하는 효과

 

  • LLaMA-alike Components

BitNet b1.58은 오픈소스 생태계에서 쉽게 사용할 수 있도록, LLaMA와 유사한 요소들을 포함하여 설계되었다. Huggingface, vLLM, llama.cpp 같은 오픈소스 툴에서 쉽게 적용할 수 있으며, 모델을 쉽게 사용하고 확장할 수 있다.


3. Result

BitNet b1.58과 FP16 LLaMA LLM을 다양한 모델 크기에서 비교한 결과를 보인다. 두 모델은 RedPajama 데이터셋에서 1000억 개의 토큰으로 사전 학습되었으며, 제로샷 성능을 다양한 언어 작업에서 평가함. 또한 WikiText2와 C4 데이터셋을 통해 난해도(perplexity)를 측정하고, GPU 메모리 사용량과 지연 시간도 FasterTransformer3 코드베이스를 사용해 비교함. BitNet b1.58에는 Ladder의 2비트 커널이 통합되어 성능이 향상되었으며, 출력 토큰당 시간을 통해 추론 성능을 평가

cf. 제로샷 성능: 본 적 없는 새로운 클래스 일반화 성능.

cf.  난해도(perplexity):  텍스트 생성의 정확성 을 평가할 때 사용. 낮을 수록 모델이 텍스트를 더 잘 예측함.

BitNet b1.58은 LLaMA 3B와 비교해 성능이 더 뛰어나면서도 메모리 사용과 속도 측면에서도 더 우수

모델 크기가 커짐에 따라 BitNet b1.58과 LLaMA LLM의 성능 차이가 작아짐. 3.9B에서 더 적은 메모리와 지연 시간으로 LLaMA LLM 3B보다 더 나은 성능을 보였음. 성능을 유지하거나 개선하면서도 더 적은 자원으로 운영할 수 있음을 보임.

 

cf. 의문점: 모델 사이즈를 작게 하기 위함인데.. 결국 사이즈를 현 LLM과 비슷하게 키워야 비슷한 성능을 보임....??

>> 곱셈을 사용하지 않고 계산하며, 0이 0으로 바로 매핑되기 때문에 에너지 비용을 줄일 수 있다.  또한, 가중치가 -1, 0, 1로 제한되면서 메모리 사용량이 줄고, 가중치를 불러오는 데 걸리는 비용과 시간이 줄어 더 빠르고 효율적인 추론이 가능

  • Memory and Latency

LLaMA 대비 지연 시간과 메모리 사용량에서 더 효율적인 성능. 특히, 70B 모델에서는 4.1배 더 빠른 속도를 기록

  • Energy

BitNet b1.58은 주로 INT8 덧셈 연산을 사용해 FP16 LLaMA보다 71.4배 더 적은 에너지로 행렬 곱셈을 처리. 모델 크기가 커질수록 BitNet b1.58의 에너지 효율이 더 개선되며, 특히 512 토큰에 대한 에너지 비용을 측정한 결과 FP16 LLaMA에 비해 더 효율적임이 확인됨.

 

BitNet b1.58은 모델 크기가 커질수록 FP16 LLM에 비해 지연 시간, 메모리 사용량, 에너지 소비 측면에서 훨씬 효율적인 성능을 보여줌. 또한, 2T 토큰으로 학습한 결과, StableLM-3B와 비교해 모든 작업에서 더 나은 성능을 기록하며, 1.58비트 LLM도 강력한 일반화 능력을 가지고 있음을 입증함.

 

cpu, 모바일..

양자화

'논문 > NLP' 카테고리의 다른 글

논문 리뷰) Titans: Learning to Memorize at Test Time  (2) 2025.01.20