구글이 3월 25일에 TurboQuant 논문을 올렸을 때, 월가가 먼저 반응했다. SK하이닉스 -6%, 삼성전자 -5%, Micron -3.4%. "메모리 수요가 줄어든다"는 공포가 반도체 섹터를 훑고 지나갔다. 그런데 정작 개발자 커뮤니티에서 벌어진 일은 완전히 다른 방향이었다.
논문이 주장하는 것
핵심은 LLM 추론 시 KV 캐시를 3비트까지 압축하는 2단계 기법이다.
1단계 — PolarQuant. 벡터를 직교좌표에서 극좌표로 변환한다. 방향(각도)과 크기(반지름)를 분리하면 양자화 경계가 깔끔해진다. 랜덤 회전을 먼저 적용해 차원 간 의존성을 제거하는 게 트릭이고, 이걸 통해 비트 대부분을 핵심 정보 압축에 집중시킨다.
2단계 — QJL(Quantized Johnson-Lindenstrauss). 1단계 잔차를 저차원에 투영하고 부호 비트 하나로 줄인다. 어텐션 스코어 계산의 편향을 제거하는 수학적 에러 체커 역할. 추가 메모리 비용은 1비트뿐이라고 한다.
H100 벤치마크 결과: 32비트 대비 어텐션 계산 8배 빠름, KV 캐시 메모리 6배 감소, 정확도 손실 제로. Gemma, Mistral, Llama-3.1-8B에서 LongBench, RULER, Needle In A Haystack 전부 통과. 파인튜닝 없이. 솔직히 너무 깨끗해서 의심이 드는 수준이다.
커뮤니티가 실제로 돌려본 결과
논문 공개 후 열흘 만에 llama.cpp 커뮤니티는 Metal, CUDA, CPU, Vulkan까지 독립 구현을 완성했다. 그리고 논문과 꽤 다른 결론들이 나왔다.
QJL, 실전에서는 오히려 방해된다. 여러 구현자가 독립적으로 같은 결론에 도달했다. 이 에러 보정 알고리즘이 편향은 제거하지만 분산을 폭발시킨다는 것. MSE 기반 접근이 Top-1 토큰 매칭에서 일관되게 이겼다. 이론적으로 아름다운 2단계가, 실전 추론에서는 빼는 게 낫다니 — 논문 저자들한테는 좀 뼈아픈 발견이다.
랜덤 회전 대신 Walsh-Hadamard Transform(WHT)을 써야 한다. 독립 테스트에서 4비트 양자화 시 랜덤 회전의 perplexity가 604, WHT는 10.12. 59배 차이. 왜 구글이 WHT를 안 썼는지 커뮤니티에서도 갑론을박 중인데, 합리적인 설명은 아직 없다.
K와 V에 같은 비트를 할당하면 안 된다. 이게 제일 실용적인 발견이다. 분석 결과 K 벡터가 V보다 6배에서 최대 182배까지 더 많은 비트를 필요로 했다. 모델 패밀리마다 비율이 달라서, 균일 할당은 정확도를 까먹는 지름길이다.
숫자로 보면
| 항목 | 논문 | 커뮤니티 실측 |
|---|---|---|
| 압축률 | 6x | GPT-2에서 9x (89% 감소) |
| 컨텍스트 확장 | 미보고 | 70B 모델, 109K → 536K 토큰 |
| NIAH 정확도 | "통과" | 262K 컨텍스트에서 6/6 정확 검색 |
| 속도 | 8x (H100) | CPU에서 속도 패널티 제로 |
70B 모델을 컨슈머 GPU에서 536K 토큰 컨텍스트로 돌린다는 건 실용적으로 큰 의미다. RAG 파이프라인 없이 전체 코드베이스를 한 프롬프트에 넘기는 시나리오가 현실이 된다.
반도체 패닉은 틀렸다
월가의 패닉은 "AI에 메모리가 덜 필요해진다"는 단순 산술이었다. 실제로는 정반대가 더 가능성 높다. 같은 하드웨어로 5배 긴 컨텍스트를 처리할 수 있으면, 사람들은 메모리를 줄이는 게 아니라 더 많은 걸 돌린다. 제본스의 역설.
Apple 쪽이 진짜 수혜자일 수 있다. 아이폰의 온디바이스 AI 최대 병목이 메모리였는데, 이런 압축 기법이 적용되면 Gemini 기반 Siri가 더 많은 작업을 로컬에서 처리하게 된다. 구글이 경쟁사 디바이스를 도운 꼴이라는 게 아이러니.
지금 해볼 것
llama.cpp의 TQ3_0 포맷이 이미 작동한다. 셀프호스팅 모델에서 KV 캐시 양자화를 켜보고 긴 컨텍스트에서 품질을 직접 확인해볼 타이밍이다. 다만 논문 그대로 따라하지 말고: QJL은 끄고, WHT 회전을 쓰고, K/V 비트를 비대칭으로 할당하라. 구글이 낸 논문을 오픈소스 커뮤니티가 2주 만에 개선한 버전이 현재 최선이다.