BITCOS 4분 소요

BITCOS의 발상: 삼진 AI는 꼭 1.58비트가 필요할까요?

핵심 요약

  • 약 1.58비트는 세 값이 같은 확률로 나타날 때의 정보량입니다.
  • 값이 나타나는 빈도가 치우치면 평균 저장 비용은 1.58비트 아래로 내려갈 수 있습니다.
  • 가중치를 정확히 복원하는 무손실 압축에서는 추가 양자화 오차가 생기지 않습니다.
  • 저장 공간을 줄여 추론까지 빨라지게 하려면 압축을 푸는 데 드는 비용도 따져야 합니다.

AI 모델을 실행할 때는 계산 능력뿐 아니라 가중치를 저장하고 옮기는 데 드는 비용도 중요합니다. 가중치를 세 가지 값으로 나타내는 삼진 모델에서도 저장 공간을 더 줄일 수 있을까요? BITCOS는 ‘가중치는 그대로 두고 저장 비용을 줄이기’라는 발상에서 출발합니다. 이를 이해하려면 먼저 1.58비트가 어떤 조건에서 나오는 숫자인지 알아야 합니다.

1.58비트는 어떤 조건에서 나오는 숫자일까요

삼진 가중치는 보통 -1, 0, +1이라는 세 가지 값을 씁니다. 비트 하나로는 두 가지 상태만 표현할 수 있으므로, 가중치를 하나씩 고정된 길이로 기록하려면 2비트가 필요합니다.

여러 가중치를 묶어서 기록하면 필요한 공간이 달라집니다. 가중치가 두 개면 가능한 조합은 9개, 세 개면 27개입니다. 가중치가 N개라면 조합은 3ⁿ개가 됩니다.

이 모든 조합을 같은 길이의 이진 코드로 구분하려면 N × log₂(3)을 올림한 만큼의 비트가 필요합니다. 한 번에 묶는 가중치가 많아질수록 가중치 하나를 기록하는 데 드는 비용은 다음 숫자에 가까워집니다.

log₂(3) ≈ 1.585비트

다만 이 계산에는 조건이 있습니다. 모든 조합을 표현해야 하는 고정 길이 저장 방식은 자주 등장하는 패턴을 짧게 기록하는 압축 방식과 계산 기준이 다릅니다.

1.58비트는 삼진 데이터의 모든 압축 방식에 적용되는 절대적인 하한이 아닙니다. 세 값이 같은 확률로 나타날 때 가중치 하나의 정보량이 이 숫자가 된다는 뜻입니다.

0이 자주 나온다면 평균 비용은 내려갑니다

문서에 자주 나오는 단어를 짧은 약어로 바꾼다고 생각해보겠습니다. 드문 단어를 길게 적더라도, 자주 쓰는 단어에서 아낀 공간이 더 크면 문서 전체는 짧아집니다.

데이터를 압축할 때도 이와 비슷한 원리를 쓸 수 있습니다. 엔트로피 부호화는 값이 나타날 확률에 따라 기록 길이를 달리해 평균적으로 필요한 공간을 줄이는 방식입니다.

계산을 위해 삼진 가중치가 다음과 같은 비율로 나타난다고 가정해보겠습니다.

가중치 값등장 비율
075%
-112.5%
+112.5%

각 가중치가 이 확률에 따라 독립적으로 나타난다고 가정하면, 이 분포의 엔트로피는 가중치당 약 1.06비트입니다. 여기서 엔트로피는 이상적인 무손실 압축이 장기 평균으로 접근할 수 있는 정보량을 뜻합니다.

값의 종류는 여전히 세 가지지만, 다음에 어떤 값이 나올지는 예측하기 쉬워졌습니다. 그만큼 데이터를 더 압축할 여지가 생깁니다.

이 수치는 BITCOS의 측정 결과가 아니라 원리를 설명하기 위한 계산 예시입니다. 실제 저장 크기는 압축 단위와 부가 정보의 크기에 따라서도 달라집니다. 값의 빈도가 고르더라도 반복되는 패턴이나 값 사이의 규칙성이 있다면, 이를 이용하는 압축 방식으로 공간을 더 줄일 수 있습니다.

가중치를 바꾸는 것과 기록 방식을 바꾸는 것은 다릅니다

BITCOS는 가중치 값을 그대로 보존하면서 저장 공간을 줄이려는 발상입니다. 모델의 숫자를 다시 바꾸는 대신, 같은 숫자들을 더 적은 공간에 기록하자는 것입니다.

양자화는 모델이 쓰는 숫자의 정밀도나 표현할 수 있는 값의 종류를 줄이는 과정입니다. 예를 들어 다양한 실숫값을 세 가지 대표값으로 바꾸면 원래 값과 차이가 생길 수 있습니다.

무손실 압축에서는 값을 기록하는 방식이 바뀝니다. 압축 전 가중치가 -1, 0, 0, +1이었다면, 압축을 푼 뒤에도 값과 순서가 정확히 같아야 합니다.

따라서 삼진 가중치를 무손실로 압축하면 가중치에 양자화 오차가 추가로 생기지 않습니다. 이때 비교 대상은 압축 전의 삼진 모델입니다. 삼진화 이전의 고정밀 모델과 정확도가 같다는 뜻은 아닙니다.

저장 비용을 비교할 때도 어디까지 계산에 넣었는지 맞춰봐야 합니다. 압축된 가중치 외에 확률표나 블록 위치 정보가 필요하다면 그 공간도 포함해야 합니다. 모델이 별도로 쓰는 스케일 값 등이 있다면, 전체 모델 크기를 따질 때 이 값들이 차지하는 공간도 함께 계산해야 합니다.

‘가중치당 몇 비트인가’라는 숫자만으로 저장 비용을 판단하려면, 그 안에 무엇이 포함돼 있는지 먼저 확인해야 합니다.

파일이 작아졌다고 추론도 바로 빨라지지는 않습니다

저장한 가중치를 계산에 쓰려면 압축을 풀어야 합니다. 파일이 작아져도 실행 중에 해야 할 연산이 늘어난다면, 속도는 기대만큼 빨라지지 않을 수 있습니다.

실행 방식은 대표적으로 다음 두 가지를 생각해볼 수 있습니다.

  • 실행 전에 전체를 복원하는 방식은 파일을 보관하고 전송할 때 유리합니다. 실행 중에는 복원된 표현의 크기만큼 가중치 메모리를 씁니다.
  • 계산에 필요한 부분을 그때그때 복원하는 방식은 메모리에서 읽어오는 양을 줄일 수 있습니다. 대신 복원한 가중치를 계산에 효율적으로 넘길 수 있어야 합니다.

큰 모델은 메모리에서 가중치를 가져오는 데 시간이 오래 걸려 성능이 제한되기도 합니다. 이럴 때는 읽어야 할 데이터가 적을수록 유리합니다. 다만 데이터를 가져오는 시간을 아껴도 압축을 푸는 데 그만큼 시간이 걸리면 속도 이득이 사라질 수 있습니다.

가변 길이로 압축하면 원하는 위치를 찾는 문제도 생깁니다. 모든 가중치가 같은 길이를 차지할 때는 원하는 가중치의 위치를 쉽게 계산할 수 있습니다. 길이가 제각각이면 특정 구간에 바로 접근하기 위한 별도 구조가 필요할 수 있습니다.

그래서 BITCOS의 실제 추론 효율은 압축률만으로 판단하기 어렵습니다. 실행 중 메모리를 얼마나 쓰는지, 토큰을 얼마나 빠르게 생성하는지, 응답이 얼마나 지연되는지를 함께 봐야 합니다. 같은 모델과 하드웨어를 쓰더라도 입력 길이나 동시에 처리하는 요청 수에 따라 결과가 달라질 수 있습니다.

1.58비트 아래로 내려간다는 발상은 정보이론과 모순되지 않습니다. 가중치에 남아 있는 통계적 규칙성을 저장 방식에 얼마나 효율적으로 반영하느냐에 따라 공간을 더 줄일 수 있습니다. 이렇게 아낀 공간이 실제 서비스에서도 메모리 사용량을 줄이고 대기 시간을 단축하는지는 실행 성능으로 확인해야 합니다.

BITCOS LLM 압축 삼진 양자화

댓글

    댓글을 불러오는 중...