MoRA논문을 읽다가, 양자화 관련 논문들이 궁금하여 리서치 중...

https://jihoonjung.tistory.com/94

 

[논문리뷰] The Era of 1-bit LLMs:All Large Language Models are in 1.58 Bits

MoRA논문을 읽어보며 양자화에 대해 궁금해졌으며 관련 리서치들을 읽어보는 중https://jihoonjung.tistory.com/93 [논문리뷰] LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale최근 MoRA 논문을 리뷰하며,

jihoonjung.tistory.com

https://jihoonjung.tistory.com/93

 

[논문리뷰] LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale

최근 MoRA 논문을 리뷰하며, Quantization에 흥미로운 부분이 생겨 이 논문을 읽어보게 되었다.https://jihoonjung.tistory.com/90 [논문리뷰] MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning(작성중)0. AbstractLoRA

jihoonjung.tistory.com

 

0 Abstract

  • 확장 가능하고 안정적인 1-bit Transformer 아키텍처인 BitNet을 소개.
  • 1-bit 가중치를 학습시키기 위해 nn.Linear 계층을 대체할 수 있는 BitLinear를 도입
  • 언어 모델링에 대한 실험 결과, BitNet은 최신 8-bit 양자화 방법 및 FP16 Transformer 비교하여 메모리, 에너지 소비를 줄이면서 경쟁력 있는 성능을 달성
  • BitNet은 full precision Transformer와 유사한 스케일링 법칙을 보임
    -> 효율성과 성능상의 이점을 유지, 더 큰 언어 모델로 효과적으로 확장될 수 있음을 시사

 

 

1 Introduction

기존 주 연구 대상 : 사전 학습 모델 -> 양자화  (사후 학습)

  • 학습 파이프라인, 모델 재학습이 필요하지 않아 쉬움, 그러나 정밀도가 낮아질 때 최적화되지 않기 때문에 성능 하락

(quantization-aware training) 양자화 인식 학습

  • 더 나은 정확도(사후학습 대비) : 처음부터 정밀도 감소를 고려하여 학습
  • 지속적 학습, 미세 조정 가능
  • 주요 과제 : 최적화(정밀도가 낮아질수록 모델의 수렴이 어렵다) -> 8bit, 4bit으로 내려갈 수록 어렵다.
  • 스케일 법칙 따르는지 여부는 알 수 없음

본 연구 :

  • 이진화(즉, 1-bit)에 주목
  • 1-bit LLM 을 위한 양자화 인식 학습을 처음으로 조사
  • 대규모 언어 모델용 1-bit Transformer 아키텍처인 BitNet을 제안
  • BitNet은 perplexity와 다운스트림 작업 정확도 측면에서 기경쟁력 있는 성능을 달성
  • 메모리 사용량과 에너지 소비를 상당히 줄인다
  • BitNet이 전체 정밀도 Transformer와 유사한 스케일링 법칙을 따른다는 것을 보여줌
    -> 훨씬 더 큰 언어 모델로 효과적으로 확장될 수 있음을 나타냅니다.

 

2 BitNet

  • Transformer와 동일한 레이아웃을 사용
  • 바닐라 Transformer와 비교하여 BitNet은 BitLinear(식 11 이진화)를 기존의 행렬 곱셈 대신 사용.
  • 나머지 구성 요소는 고정밀도로 유지(실험에서는 8-bit를 사용) 이유 : 
    • 첫째, Residual Connection과 Layer Norm은 계산 비용
    • 둘째, QKV 변환의 계산 비용은 모델이 커질수록 Parametric projection(Linear를 의미하는 것 같음)에 비해 훨씬 작습음.
    • 셋째, 언어 모델이 샘플링을 수행하기 위해선 고정밀 확률을 사용해야 함.

2.1 BitLinear(figure 2)

이 부분은 Weight부분이다. Nothing to do with X Tensor. Figure2의 보라색 부분

  • 모든 웨이트(W)에 대해 알파값을 빼 평균이 0이 되도록 변환하고, 이를 sign함수에 맵핑하여 (-1,1)로 맵핑.
    -> 가중치를 평균이 0이 되도록 변환(제한된 numeric 범위 내에서 용량을 높이기 위해)
    -> signum 함수를 사용 : 가중치를 +1 또는 -1로 변환.
    W : 웨이트
    alpha : 모든 웨이트의 합을, 웨이트의 갯수만큼 나눈 평균 값
  • β : 실수 가중치와 이진화된 가중치 사이의 l2 오차를 줄이기 위한,스케일링 계수

 

이 부분은 X Tensor에 대한 부분(Input)

  • Quantize Activations : b-bit 양자화. 입력 행렬의 절대 최대값으로 나누고 Q_b를 곱하여 활성화를 [-Q_b, Q_b] 범위로 스케일링(aka absmax - minmax scaling과 비슷하지만, 절대값을 하고난 스케일링 으로 생각) 
  • Clip(x,a,b) : a<x<b가 되도록 하는 함수
  • Quant(x) : [-Q_b, Q_b]범위가 되도록 함.
  • 무한대 놈 : 텐서중 절대값 최대 값.
예시
Q_b = 127 (8비트 양자화) 
x = [0.1, -0.2, 0.3, -0.4]
# 맥스놈
γ = 0.4
# 스케일링 펙터
Q_b/γ = 127/0.4 ≈ 317.5
#스케일링 후 -> 모든 값이 [-127, 127] 사이에 있음.
x × (Q_b/γ) ≈ [31.75, -63.5, 95.25, -127]

 

ReLU와 같은 비선형 함수는 모든 값이 음수가 아닌 값이 되도록 입력의 최소값을 빼서 [0, Qb ] 범위로 스케일링한다 : 아래 식

(7) 식은 Figure 2에 왼쪽 그림에 곱(x)를 의미.

(8)(9)(10) 식에서는 Pre LayerNorm의 유익한 점에 대해서 설명하고 있음. PreLayerNorm을 하게되면, Var(y) = 1이 되고, 훈련의 안정성에 큰 이익이 있다고 함.

 

그래서 최종적으로 식을 정리하면 아래와 같이 된다.

 

Model parallelism with Group Quantization and Normalization

-> 생략

 

2.2 Model Training

 

Straight-through estimator : 미분, 역전파를 우회하기 위한 방법

  • 역전파 중에 기울기를 근사화하기 위해 straight-through estimator 사용
  • 이 방법은 역방향 전달 중에 Sign(식 2) 및 Clip(식 5) 함수와 같은 미분 불가능한 함수를 우회
    • 순전파 : 계값을 기준으로 0 또는 1로 이산화
    • 역전파 : 역전파에서는 이 이산화 과정을 무시하고, 원래의 연속적인 출력 값에 대한 그래디언트를 그대로 사용
      (ref : https://velog.io/@jk01019/straight-through-estimator-STE )
    • -> 순전파때 이산화 하기 전의 값을 Store한다는 말인가?
      몇몇 리서치를 해본 결과 답은 아래와 같다.
  •  
# sign 함수일 경우
forward: y = sign(x)
backward: dy/dx = 1 if -1 <= x <= 1 else 0
'''
순전파 시에는 Sign 함수를 그대로 사용하여 y를 계산
역전파 시에는 Sign 함수를 identity 함수로 간주하고, x가 -1과 1 사이일 때만 기울기를 1로 설정하고 나머지 경우에는 0으로 설정
'''

# clip 함수일 경우
forward: y = clip(x, a, b)
backward: dy/dx = 1 if a <= x <= b else 0
'''
순전파 시에는 Clip 함수를 그대로 사용하여 y를 계산
역전파 시에는 x가 a와 b 사이일 때만 기울기를 1로 설정하고 나머지 경우에는 0으로 설정
'''

 

 

 

Mixed precision

  • 낮은 정밀도(양자화) : 가중치, 활성화
  • 높은 정밀도 : 기울기, 옵티마이저, latent weight
  • 반반 : 잠재 가중치 - 순방향 전달 중에 이진화되며, 추론에서는 사용되지 않는다.
    • 잠재 가중치 : 잠재 가중치는 높은 정밀도(예: 32-bit 부동 소수점)로 유지
    • How do adam and training strategies help bnns optimization. (구체적인 내용은 이 논문 참고)

Large learning rate

  • 잠재 가중치에는 작은 업데이트(small update)가 1-bit 가중치에서 차이를 만들지 않는다는 어려움이 있음.
  • 이유 : 1-bit 가중치를 기반으로 -> 편향된 기울기와 업데이트가 발생
  • 학습 초기에 더 심함.
  • 해결책 : 학습률을 높이는 것, 실험 결과 BitNet은 수렴 측면에서 큰 학습률에서 좋으나, FP16 Transformer는 동일한 학습률로 학습하면 gradient explode함.

2.3 Computational Efficiency

에너지 소비량(전기) 낮았다.

 

 

3 Comparison with FP16 Transformers

3.1 Setup

  • 125M부터 30B 까지 실험
  • Sentencpiece 토크나이저를 사용
  • 동일한 데이터셋과 설정으로 BitNet ,Transformer 모델 학습

3.2 Inference-Optimal Scaling Law
-> Introduction에 언급하였지만, 양자화 학습이
스케일 법칙 따르는지 여부는 알 수 없음, 이를 실험하는 부분

 

파라미터의 수에 따른 모델 성능 예측 가능 (Llama3 에서도 언급 되었음)

  • Scaling laws for neural language models.(논문)

이진 Transformer의 스케일링 법칙을 연구

  • 매개변수 수에 대한 BitNet과 FP16 Transformer 기준 모델의 스케일링 곡선 그림.
  • 학습 토큰 수를 고정하고 모델 크기를 변경
  • 그림 3은 BitNet의 손실 스케일링이 FP16 Transformer와 유사
  • 모델 크기가 커질수록 BitNet과 FP16 Transformer 사이의 격차가 감소

 

3.3 Results on Downstream Tasks

 

3.4 Stability Test

피크 학습률로 모델을 학습시켜 안정성 테스트를 수행

  • BitNet은 큰 학습률로 수렴할 수 있는 반면 FP16 Transformer는 그렇지 않다
  •  최적화에서의 이러한 장점은 더 큰 학습률로 학습할 수 있게 한다 -> 빠른 수렴
  • (그림 5b) BitNet이 학습률 증가의 이점을 얻어 PPL 측면에서 더 나은 수렴을 달성할 수 있음.

4 Comparison with Post-training Quantization

최신 양자화 방법들과 비교

  • FP16 Transformer 사후 양자화 : Absmax, SmoothQuant, GPTQ, QuIP
  • Absmax, SmoothQuant : 가중치와 activation 모두를 양자화
  • GPTQ, QuIP : weight 정밀도 줄임.

결과

  • 6.7B의 모델에서 비교
  • 16비트에서 1비트까지 다양한 가중치 비트 수준에 대해 평가
  • perplexity가 포함
  • 낮은 비트 수준에서 BitNet이 기준 방법과 비교하여 경쟁력 있는 성능 수준을 달성하는 데 효과적
  • BitNet은 기준 방법과 비교하여 경쟁력 있는 성능을 달성함
  • BitNet의 zero-shot 점수는 8비트 모델과 유사하지만 추론 비용은 훨씬 낮음
  • 4비트 모델의 경우 가중치만 양자화하는 방법이 가중치와 활성화 모두를 양자화하는 방법보다 성능이 우수함
  • 1비트 모델인 BitNet은 가중치와 활성화 양자화 방법과 가중치만 양자화하는 방법 모두 훨씬 더 나은 결과를 달성
  • 더 낮은 비트 모델의 경우 BitNet은 모든 기준 모델보다 일관되게 우수한 점수를 보임
  • 이는 사후 양자화 방법에 비해 양자화 인식 학습 접근 방식의 장점을 입증함
  • 1.3B에서 6.7B로 모델 크기를 확장했을 때, BitNet의 장점이 다양한 규모에서 일관되게 나타남

5 Ablation Studies

-> BitNet의 구현에 absmax와 SubLN을 선택한 이유에 대해서 말하고 잇음

 

 

 

 

+ Recent posts