2비트 코드와 공유 트렐리스로 n-gram 룩업 테이블을 4~8배 압축한다

N-Gram Memories at Two Bits: Quantizing Lookup Tables in Large Language Models

HF Daily2610.21810

Donghoon Han, Minseop Jung, Dong Woo Kwak2026-10-16

무엇인가

조건부 메모리(conditional memory)는 입력마다 테이블의 극히 일부 행만 조회하는 방식으로, 토큰당 연산을 늘리지 않고 모델 용량을 확장한다. 문제는 조회하지 않는 행까지도 어떤 입력이 들어올지 모르므로 전부 상주시켜야 한다는 점이다. 논문은 DeepSeek의 n-gram 룩업 테이블이 203GB에 달한다고 밝힌다. 테이블을 호스트 메모리로 내리면 비용을 없애는 게 아니라 지불 위치만 바뀐다. 기존 LLM 양자화 기법은 밀집 가중치를 대상으로 하며, 해시로 주소가 정해지는 희소 조회 패턴은 다루지 않는다. 압축된 표현이 전체 테이블 저장량은 줄이면서도 요청된 행 하나하나를 독립적으로 복원할 수 있어야 한다는 것이 이 논문이 세운 요구사항이다.

어떻게 동작하나

제안 방법은 Conditional Program(CP)이다. 각 행 e_i를 짧은 코드 c_i와 지역 스케일 α_i로 표현하고, 테이블 전체가 공유하는 복원 함수 f로 ê_i = α_i·f(c_i)를 복원한다. 저장되는 것은 행마다 코드와 스케일뿐이고, 복원 연산은 실제로 조회된 행에만 수행된다. 즉 테이블 전체에 걸친 저장 공간을 소수 행에 대한 계산으로 맞바꾸는 구조다. 코드레이트 b에서 행 하나는 b + 16/d 비트/파라미터(16비트 스케일 1개 기준)가 되고, 공유 복원 규칙은 테이블 전체에 한 번만 저장된다.

무엇과 다른가

핵심 설계는 세 가지다. 첫째, 각 행을 크기와 내용으로 분리해 정규화 벡터 z_i = √d·e_i/‖e_i‖를 만들고, 이를 표준정규분포 N(0,1) 소스로 근사한다. 해시된 n-gram 메모리에서는 여러 n-gram이 같은 행에 매핑되어 다양한 학습 신호가 한 표현에 축적되므로, 고차원에서 등방적 방향이 가우시안 좌표 통계를 보인다는 논리를 근거로 든다. 둘째, 이 소스를 Gaussian HYB bitshift 트렐리스(tail-biting)로 구현한 TCQ로 부호화한다. 좌표를 독립적으로 반올림하지 않고 상태 전이 경로를 따라 복원값을 공동 선택하며, 행별 좌표 회전은 적용하지 않는다. 셋째, 복원 스케일을 최소제곱 오차 기준이 아니라 원래 노름을 되살리는 α_i = ‖e_i‖₂/‖f(c_i)‖₂로 정한다. 좌표 재구성 오차가 커지더라도 학습된 표현의 크기를 보존하는 쪽을 택한 것이다. 각 행은 코드와 스케일을 담은 독립 주소 지정 가능 레코드로 저장되어, 런타임은 요청된 레코드만 가져와 융합 커널로 복원하고 기존 readout에 원래 조회 순서대로 넘긴다. 주소 함수, 백본 파라미터, 하위 연산은 바뀌지 않는다.

어떻게 쓰나

실험은 n-gram 룩업 테이블을 쓰는 DeepSeek, Qwen, LongCat 세 모델에서 테이블만 압축하고 나머지는 고정한 채 진행됐다. 상식·지식·독해·다국어·수학/코드 5개 범주 40개 태스크(GSM8K, HumanEval 포함)를 평가하며, 베이스라인은 원본 테이블, 테이블 제거(조회 시 0 반환), RTN, NVFP4, MXFP4, 그리고 밀집 가중치용 QTIP의 트렐리스를 룩업 테이블에 맞게 변형한 행 내 회전 + 전역 스케일 버전이다. 2비트에서 원본 대비 약 4~8배 압축하면서 대부분 태스크 점수가 원본에 근접했고, 테이블 제거 시 크게 무너지는 지식 집약 태스크에서 성능을 상당 부분 유지했다. Qwen과 LongCat의 지식 벤치마크에서는 RTN을 앞섰고 QTIP과는 비슷한 수준이었다. 출력 분포 충실도에서는 2비트 CP가 2비트 RTN 대비 KL을 41~63% 낮췄고, QTIP 대비로는 3~9% 추가로 낮췄다(행당 bf16 스케일 1개 추가 비용). 2.5비트 CP는 더 적은 저장량으로 RTN 3비트에 근접했고, 3비트 CP는 4비트 부동소수점 포맷보다 낮은 KL을 더 적은 저장량으로 달성했다. 1.5비트까지 낮추면 저장량은 더 줄지만 일부 태스크 손실이 커진다.

전제와 한계

분석에서는 자주 조회되는 행들의 주성분에 가우시안 기준을 넘는 공유 구조가 실제로 존재함을 확인했지만(Table 2), 그 구조를 학습해 저장하는 벡터 양자화(VQ)보다 공유 트렐리스가 세 모델 모두에서 더 낮은 행 재구성 오차와 더 나은 출력 충실도를 보였다. 평균·주성분을 명시적으로 저장하는 표현도 저장량 대비 개선이 제한적이었다. 스케일링 비교에서는 동일한 트렐리스 코드와 저장 예산을 두고 전역 스케일, 최소제곱 행별 스케일, 노름 복원 행별 스케일을 비교했는데, 노름 복원이 세 모델 모두에서 일관되게 가장 낮은 출력 KL을 기록했다. 행 내 회전에서는 통계적으로 유의한 이득이 확인되지 않았고, 빈도 기반 비트 할당은 텍스트 도메인 간 일반화가 일관되지 않았다.

서빙 효율도 측정했다. DeepSeek 토크나이저로 4,096토큰 시퀀스의 조회를 재생했을 때(토큰당 48행, Engram 2개 레이어, H200 1장), 테이블이 GPU HBM에 있을 때 CP는 0.190ms로 QTIP 타일 윈도우 디코더의 0.221ms보다 빨랐고, PCIe로 연결된 핀드 호스트 DRAM에서는 6.54ms 대 10.78ms로 격차가 크게 벌어졌다. 4개 GPU 구성에서 원본 FP8 테이블이 GPU당 50.7GB를 차지하던 것이 CP로 12.7GB가 되었고, 대표 워크로드(4,096토큰 프롬프트 8개, 시퀀스당 256토큰 생성)의 프리필 지연이 64.66초에서 13.27초로 줄었다. 4비트 NVFP4와 비교해서도 64k 토큰 프리필이 59.81초에서 18.23초로 단축됐다. 8개 GPU에서는 메모리 압박이 낮을 때 스텝 시간 차이가 최대 2.4%에 그쳤지만, GPU당 19.0GB를 추가로 확보해 최대 디코드 배치가 1,024에서 2,048 이상으로, 프리필 용량이 96k에서 128k 토큰 이상으로 늘었다.

개발자 관점에서 이 논문은 밀집 가중치 양자화와 룩업 테이블 압축이 다른 문제임을 분명히 한다. 재학습 없이 이미 학습된 테이블을 사후 압축하고, 주소 함수와 백본을 건드리지 않으며, 행 단위 독립 복원을 유지한다는 제약은 실제 서빙 스택에 끼워 넣기 쉬운 형태다. 특히 테이블을 GPU에 올려야 하는 상황에서 저장량 감소가 곧 더 큰 배치·더 긴 프리필로 이어진다는 점, 그리고 PCIe를 넘는 호스트 메모리 접근에서 행 단위 레이아웃의 이득이 커진다는 점은 배치 전략을 정할 때 참고할 만하다. 다만 저자들도 명시하듯 메모리 압박이 없는 소규모 워크로드에서는 전체 추론 스텝 시간 개선이 거의 없었고, 이득은 메모리 압박과 대용량 워크로드에서 나온다.

한계도 저자가 직접 밝힌다. 결론은 해시 기반 룩업 테이블을 쓰는 세 모델의 사후 압축에 한정되며, 토큰 인덱스 테이블 같은 다른 메모리 아키텍처로 일반화된다고 주장하지 않는다. 다운스트림 비교는 주로 2비트와 2.5비트 등 두 개 주요 코드레이트에 집중되어 고비트율 태스크 커버리지가 KL 스윕보다 얇고, 작은 태스크 점수 차이로 동등성을 입증하지는 않는다. 적합 코드북·구조적 잔차 비교는 Qwen에서만 출력 KL로 평가했고, 일부 동일 예산 비교는 불확실성 추정 없이 보간된 트렐리스 값을 사용했다. 가우시안 소스 근사는 관측된 행 통계가 학습 과정에서 어떻게 만들어지는지는 설명하지 못한다. 서빙 측정은 단일 노드·이거 추론 기준이며 일부 구성은 측정 1회뿐이고, 테스트한 워크로드 한계는 정확한 용량 임계값이 아니다. 접근 빈도는 영어 웹 텍스트에서 얻었으므로 빈도 기반 할당·캐싱 결과는 배포 분포에 따라 달라질 수 있다.