본문으로 건너뛰기

© 2026 Molayo

r/LocalLLaMA분석2026. 06. 15. 11:45

Q4_0 양자화 시 스케일(scale) 자체 대신 스케일에 대한 인덱스를 저장하여 스케일 크기를 약 31% 감소시킴 (작은 이득이지만 흥미로운

요약

양자화 과정에서 발생하는 스케일(scale) 값의 중복성을 활용하여 저장 공간을 절약하는 새로운 아이디어를 제안합니다. 스케일 값 자체 대신 인덱스를 저장함으로써 Qwen 3.6 27B 모델 기준 약 318MB의 용량을 줄일 수 있습니다.

핵심 포인트

  • 스케일 값의 범위가 좁아 중복이 많음을 발견
  • 16비트 스케일을 11비트 인덱스로 대체하여 효율화
  • Qwen 3.6 27B 모델에서 약 318MB의 VRAM 절약 가능
  • 추론을 위한 커스텀 코드 구현이 필요함

공간을 절약하거나 정확도를 높일 수 있는 독특한 아이디어를 찾기 위해 양자화(quant) 전후의 가중치(weights)를 살펴보며 즐거운 시간을 보내고 있습니다.

처음에는 중복된 가중치(duplicate weights)를 조사하여 중복을 나타내는 신호를 교환할 잠재력이 있는지 확인하려 했으나, 스케일(scales)의 범위가 그리 크지 않다는 점을 발견했습니다. 이것이 보편적이지는 않겠지만, Qwen 3.5 2B와 Qwen 3.6 27B에서는 사실인 것으로 보입니다 (두 모델 모두 확인했습니다).

요약(TLDR): Qwen 3.6 27B Q4 모델에서 최소 318MB를 절약할 수 있을 것으로 보이지만, 추론(inference)을 위해 일부 커스텀 코드가 필요합니다.

다음은 간단한 계산(napkin math)입니다:

Qwen 3.6 27B를 Q4로 적용할 경우
64개의 레이어(layers)를 가짐
아래의 각 서브 레이어(sub-layer)는 47.8 MB임
ffn_down 89,128,960 개의 가중치(weights)
ffn_gate 89,128,960 개의 가중치(weights)
ffn_up 89,128,960 개의 가중치(weights)

서브 레이어가 더 많다는 것은 더 많은 공간을 회수할 기회가 있다는 것을 의미하지만, 예시를 위해 짧게 유지하겠습니다.
각 32개의 가중치마다 고유한 스케일(scale)이 할당되므로, 32개 가중치 블록이 몇 개 있는지 찾아야 합니다. 각 블록은 16비트(BF16) 가중치를 보유합니다.
89,128,960 / 블록 크기(32) = 2,785,280 개의 스케일(scales)
2,785,280 * 16 = 44,564,480
이는 스케일에 할당된 비트가 44,564,480비트임을 의미하며, 서브 레이어(sub-layer)당 5,570,560 바이트(~5.31MB)입니다.

스케일에 사용되는 값들을 확인해보니 많은 중복이 발견되었습니다. 고유한 스케일의 범위는 1,0001,800개 사이입니다. 따라서 이 스케일 값들을 02047 사이의 인덱스(index)로 대체할 수 있습니다. 즉, 스케일당 16비트를 사용하는 대신 11비트를 사용하게 됩니다.
이 11비트는 VRAM에 저장된 스케일 배열(array of scales)을 가리킵니다. 해당 스케일 배열은 16 * 2048 = 32,768비트입니다. 레이어별로도 중복이 있을 가능성이 있지만 확인해보지는 않았습니다.

그렇다면 얼마나 많은 공간을 절약할 수 있을까요?
44,564,480비트 대신 스케일에 사용하게 될 비트는 2,785,280 * 11 = 30,638,080비트입니다.
따라서 11비트 스케일을 사용하면 각 서브 레이어(sub-layer)에서 3,829,760 바이트(~3.65 MB)를 사용하게 되며, 이는 서브 레이어당 약 3.65 MB입니다.
5.31 - 3.65는 서브 레이어당 1.66입니다.
1.66 * 3은 레이어당 4.98 MB입니다.

따라서 서브 레이어당 1.66 MB, 레이어당 약 4.98 MB를 절약하고 있습니다.
모델 전체로는 얼마나 될까요?
4.98 * 64 레이어 = 318.72 MB
제가 확인한 모든 서브 레이어가 이러한 중복된 스케일 (scale) 패턴을 따르고 있다는 점에 주목하십시오. 이는 모델 전체로 확장될 수 있습니다.
두 번째 참고 사항으로, 토큰 임베딩 (token embedding)에는 2,489개의 고유한 스케일 (scale)이 있으므로, 12비트 (bits)를 사용해야 하지만 그곳에서도 여전히 어느 정도 공간을 절약할 수 있습니다. 즉, 그 부분에서 약 25%의 공간을 회복할 수 있습니다. Q4에서 토큰 임베딩은 682 MB이므로 그곳에서도 공간을 절약할 수 있습니다.
꽤 흥미롭네요!
submitted by /u/fragment_me
[link] [comments]

AI 자동 생성 콘텐츠

본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0