1-bit quantization llm의 시대
2024년 2월 27일자 논문
https://arxiv.org/html/2402.17764v1
기존의 FP16/BFloat16에서의 1bit으로의 정밀도 전환
두 정밀도로 같은 performance를 낼 수 있다면 당연히 컴퓨팅 속도가 빨라지고 inference 시간이 짧아지고 적은 메모리를 낮은 정밀도가 좋다. 하지만 accuracy감소의 최소화를 어떻게 하면 이끌어낼수 있을까
이를 위해 두번째 그림의 transformer에서 selfattention, feed forward layer의 linear layer의 파라미터인 weight matrix의 값을 FP1, (-1,0,1)만의 값으로 양자화시킨 bitlinear layer라는 것을 사용하게 된다.
FP1로의 변환(그림1) weight matrix의 평균을 구해서 각 값마다 빼준 다음 평균이 0인 가우시안분포를 만든다. 0보다 작으면 -1, 0보다 크면 1의 값을 부여한다.
FP16에서의 FP8로의 Absmax Quantization
일단 Qb/gamma 값을 max 절대값에 곱해주는데 이때 Qb는 8-bit quantization이면 2^(8-1)인 128이되고 4-bit이면 2^(4-1)인 8이 된다. 그리고 gamma값은 max절대값인 alpha가 된다.
이 값을 x에 곱해주고 마지막으로 (-Qb + epsilon,Qb - epsilon) 사이 값으로 clip해주면 quantization이 완료된다
간단히 설명하자면 모든 값들을 x값의 최대 절대값으로 나눈 후 qb를 곱해 [-Qb,Qb]사이의 값으로 변환하는 것이다.
따라서 bitlayer의 output인 y는 Wx , W는 1bit, x는 8bit의 값이 곱해지는 것이다
layernorm 과정도 좀 특수한데 기존의 layernorm은 (x-평균)/표준편차 * gamma + alpha 였다면 여기에서는 평균이 0, std가 1인 가우시안 분포를 요구해서 gamma 와 alpha의 scaleshift과정을 거치지 않는다.
그리고 dequantization 과정에서 정밀도 손실을 최소화하기 위해 beta*gamma/Qb 값을 곱하고(beta 는 weight gamma는 x를 dequantizing) model Parallelism with Group Quantization and Normalization(생략)를 사용한다
TRAIN FP1 양자화에서의 sign, clip은 미분 불가능한데 이를 STE를 통해 gradient flow에 영향을 미치지 않게 한다
mixed precision weight 와 activation은 낮은 정밀도로 optimizer, gradient는 높은 정밀로 학습을 수행한다