양자화
다른 이름: 모델 양자화, 4비트, 8비트
업데이트
정의
양자화는 모델의 숫자를 각각 더 적은 비트로 저장하는 것입니다. 예를 들어 원래 16비트나 32비트였던 것을 4비트나 8비트로 저장합니다. 모델이 작아지고 메모리를 덜 쓰게 되며, 보통 정확도가 조금 떨어집니다.
모델은 대부분 가중치라고 하는 아주 긴 숫자 목록입니다. 훈련된 상태에서 각 가중치는 보통 32비트나 16비트 부동 소수점 값입니다. 양자화는 이를 더 거친 형태로 다시 씁니다. Apple의 문서는 양자화를 숫자를 나타내는 비트 수를 줄이는 것으로 정의합니다.
같은 모델이 4bit, 8bit, Q4 같은 레이블이 붙은, 크기가 다른 여러 다운로드로 나오는 이유가 이것입니다. 압축 수준만 다른 하나의 모델입니다.
얼마나 작아지나
크기는 비트 수에 거의 그대로 비례합니다. 가중치당 비트 수를 절반으로 줄이면 파일 크기도 약 절반이 됩니다.
공개된 예 하나를 보면 구체적으로 알 수 있습니다. 매개변수가 80억 개인 언어 모델의 경우, 16비트 파일은 약 15GiB, 8비트 파일은 약 8GiB, 흔히 쓰는 4비트 빌드는 약 4.6GiB입니다. 4비트 빌드는 가중치당 정확히 4비트가 아니라 약 4.9비트가 되는데, 일부를 더 높은 정밀도로 유지하기 때문입니다.
잃는 것
정확도를 조금 잃습니다. 숫자가 거칠어지면 모델의 연산이 모든 곳에서 조금씩 어긋나고, 그 오차가 쌓입니다. 그것이 얼마나 드러나는지는 모델과 얼마나 압축하는지에 따라 다릅니다.
Apple의 안내에 따르면 8비트로, 그리고 일부 모델은 6비트나 4비트로 압축해도 정확도가 약간만 떨어진 채로 잘 작동할 수 있습니다.
크기 말고 얻는 것
Apple은 모델 압축으로 얻을 수 있는 이점으로 메모리 사용량 감소, 지연 시간 단축, 전력 사용 감소를 들며, 이 중 하나만 얻을 수도 여러 가지를 함께 얻을 수도 있습니다. 노트북에서는 메모리가 중요한 경우가 많습니다. 여유 있게 들어가는 모델은 열어 둔 다른 모든 것을 위한 공간을 남겨 둡니다.
레이블 읽는 법
레이블은 가중치의 정밀도를 알려 줍니다.
- fp32 또는 float32: 대부분의 모델이 훈련되는 전체 정밀도입니다.
- fp16, bf16 또는 float16: 절반 정밀도입니다. 모델이 공개될 때 흔히 쓰이는 형태입니다.
- 8bit 또는 int8: 전체 정밀도의 4분의 1입니다.
- 4bit 또는 int4: 전체 정밀도의 8분의 1입니다. 노트북에서 큰 모델을 실행할 때 흔히 선택합니다.
- 뒤에 문자가 붙은 Q4, Q5, Q8: 흔히 쓰이는 한 파일 형식에서의 같은 개념이며, 문자는 사용한 방법을 나타냅니다.
양자화와 팔레트화
Apple의 도구는 가중치를 더 적은 비트로 저장하는 두 가지 방법을 제공합니다. 선형 양자화는 원래 값의 범위를 작은 정수 범위에 대응시킵니다. 가중치 클러스터링이라고도 하는 팔레트화는 가중치를 클러스터로 묶고, 각 가중치를 짧은 조회 테이블의 인덱스로 저장합니다.
Apple의 안내에 따르면 팔레트화는 보통 Neural Engine에서 가장 효과가 좋고, 4비트 양자화는 Mac의 그래픽 칩에서 실행되는 모델에 잘 맞을 수 있습니다.
자주 묻는 질문.
모델의 4비트란 무슨 뜻인가요?
원래 16비트나 32비트였던 가중치를 각각 약 4비트로 저장했다는 뜻입니다. 파일은 훨씬 작아지고, 모델의 정확도는 조금 떨어집니다.
양자화하면 모델이 나빠지나요?
조금 그렇습니다. 정확도를 약간 내주는 대신 크기가 작아지고 메모리를 덜 씁니다. Apple의 안내에 따르면 8비트로, 일부 모델은 6비트나 4비트로 줄여도 정확도는 약간만 떨어집니다.
4비트 모델과 8비트 모델 중 어느 쪽이 더 좋나요?
8비트 모델이 원본에 더 가깝고, 4비트 모델은 크기가 그 절반 정도입니다. 메모리가 충분하면 8비트를, 그렇지 않으면 4비트를 선택하세요.
양자화하면 모델이 빨라지나요?
그럴 수 있습니다. Apple은 얻을 수 있는 이점으로 메모리 사용량 감소, 전력 사용 감소와 함께 지연 시간 단축을 듭니다.
모든 모델을 양자화할 수 있나요?
대부분 가능합니다. 공개된 가중치를 변환하는 도구를 쓰면 됩니다. 양자화한 뒤 품질이 얼마나 유지되는지는 모델마다 다릅니다.
양자화는 압축과 같은 것인가요?
양자화는 모델 압축의 한 종류입니다. 그 밖에 가중치를 제거하는 가지치기, 가중치를 조회 테이블의 항목으로 저장하는 팔레트화가 있습니다.