turboquant-pytorch: Google의 TurboQuant를 PyTorch로 처음부터 직접 구현한 LLM KV 캐시 양자화 라이브러리

turboquant-pytorch: Google의 ICLR 2026 논문 TurboQuant를 PyTorch로 처음부터 직접 구현한 LLM KV 캐시 양자화 라이브러리

turboquant-pytorch 소개

대규모 언어 모델(Large Language Model, LLM)을 실제 서비스 환경에서 실행할 때 가장 큰 병목 중 하나는 KV 캐시(Key-Value Cache) 메모리 사용량입니다. 트랜스포머(Transformer) 모델은 긴 문맥(Long Context)을 처리할수록 KV 캐시 크기가 선형적으로 증가하며, 8K 토큰 기준으로 수백 MB에 달하는 메모리를 차지합니다. 이 문제를 해결하기 위해 Google이 ICLR 2026에 발표한 TurboQuant는 벡터 양자화(Vector Quantization) 기반의 2단계 압축 알고리즘을 제안했습니다. turboquant-pytorch는 이 논문의 알고리즘을 PyTorch로 처음부터(from scratch) 재현한 오픈소스 구현체로, 3비트 양자화 시 최대 5배 압축과 99.5%의 어텐션 충실도(Attention Fidelity)를 달성합니다.

TurboQuant의 핵심 아이디어는 KV 캐시 벡터를 직접 재구성하는 대신, 어텐션 내적(Inner Product)의 정확도를 보존하는 데 초점을 맞추는 것입니다. 벡터 자체의 재구성 오차가 23~44%에 달하더라도, 어텐션 계산에 필요한 내적 추정값은 수학적으로 편향 없이(Unbiased) 유지될 수 있습니다. 이 설계 철학이 TurboQuant를 기존 양자화 방법들과 차별화하는 핵심 원리입니다. turboquant-pytorch는 Qwen2.5-3B-Instruct 모델의 실제 KV 캐시 데이터를 사용하여 검증 실험을 수행했으며, 그 결과를 상세하게 공개하고 있습니다.

turboquant-pytorch의 2단계 알고리즘 구조

TurboQuant는 크게 두 단계(Stage)로 구성된 알고리즘을 사용합니다. 각 단계는 서로 다른 수학적 원리를 결합하여 높은 압축률과 낮은 정보 손실을 동시에 달성합니다.

1단계: 랜덤 회전(Random Rotation) + Lloyd-Max 양자화

입력 벡터를 무작위 직교 행렬(Random Orthogonal Matrix)로 회전시킨 후, 각 좌표를 독립적으로 양자화합니다. 회전 변환은 입력 벡터의 분포를 종형(Bell-Curve) 형태에 가깝게 만들어 Lloyd-Max 최적 양자화기(Optimal Quantizer)의 성능을 극대화합니다. Lloyd-Max 코드북(Codebook)은 이 정규 분포에 최적화된 양자화 구간을 사전에 계산해 두므로, 실시간 추론 시 별도의 계산 없이 효율적으로 양자화가 가능합니다.

2단계: QJL 잔차 보정(Residual Correction)

1단계의 양자화 잔차(Quantization Residual)를 무작위 가우시안 행렬로 투영(Projection)한 뒤, 각 투영값의 부호(Sign)만 1비트로 저장합니다. 이 1비트 정보만으로도 잔차 정보를 활용한 내적 추정이 수학적으로 편향 없이 이루어집니다. QJL(1-Bit Quantized JL Transform) 기법을 활용한 이 단계 덕분에, 높은 압축률에서도 어텐션 정확도가 크게 향상됩니다.

# TurboQuant 핵심 알고리즘 사용 예시 (synthetic validation)
from turboquant import TurboQuantMSE, TurboQuantProd
import torch

# 벡터 생성 (KV 캐시 시뮬레이션)
d = 128  # 차원
n = 1000  # 벡터 수
vectors = torch.randn(n, d)

# 3비트 양자화 설정
tq = TurboQuantProd(bits=3, dim=d)

# 압축 및 복원
compressed = tq.compress(vectors)
reconstructed = tq.decompress(compressed)

# 내적 정확도 확인 (어텐션 계산용)
query = torch.randn(1, d)
true_attn = query @ vectors.T
approx_attn = tq.inner_product(query, compressed)

turboquant-pytorch의 성능 지표

실제 Qwen2.5-3B-Instruct 모델의 36개 레이어, 8K 컨텍스트 기준으로 측정한 결과, TurboQuant는 높은 압축률에서도 어텐션 정확도를 효과적으로 유지합니다.

설정 코사인 유사도 Top-1 일치율 Top-5 일치율
4-bit 0.9983 86% 96%
3-bit 0.9945 86% 94%
2-bit 0.9851 71% 89%

3비트 설정에서 289MB에 달하는 KV 캐시(8K 컨텍스트 기준)를 58MB로 압축하면서, 어텐션 코사인 유사도 0.9945와 Top-5 일치율 94%를 달성했습니다. MSE 왜곡 측면에서도 논문의 이론적 상한값보다 더 좋은 성능(3-bit: 실측 0.034, 논문 상한 0.043)을 보여줍니다.

기존 그래프RAG(GraphRAG) 방식과 비교한 처리 속도나, KV 캐시 양자화 분야의 유사 연구인 PolarQuant([2502.02617] PolarQuant: Quantizing KV Caches with Polar Transformation), QJL([2406.03482] QJL: 1-Bit Quantized JL Transform for KV Cache Quantization with Zero Overhead)과의 관계도 참고할 만합니다. TurboQuant는 이들 기술을 통합하고 더 나은 수학적 보장을 제공하는 방향으로 설계되었습니다.

설치 및 사용법

# 기본 의존성 설치
pip install -r requirements.txt

# CUDA 지원 PyTorch 설치 (GPU 사용 시)
pip install torch --index-url https://download.pytorch.org/whl/cu128

요구 사항:

  • Python 3.10+
  • PyTorch 2.0+ (CUDA 지원 권장)
  • scipy
  • transformers, accelerate, bitsandbytes (실제 모델 검증 시 필요)
# 합성 데이터로 알고리즘 검증 (GPU 불필요)
python -m turboquant.test_turboquant

# Qwen2.5-3B-Instruct 실제 모델로 검증 (6GB+ VRAM 필요)
python -m turboquant.validate

프로젝트의 모듈 구조는 다음과 같이 각 기능이 명확하게 분리되어 있습니다:

turboquant/
├── lloyd_max.py        # Lloyd-Max 최적 양자화기 구현
├── turboquant.py       # 핵심 알고리즘: TurboQuantMSE, TurboQuantProd
├── compressors.py      # 실제 모델용 프로덕션 압축기
├── test_turboquant.py  # 합성 검증 테스트
└── validate.py         # 실제 모델 어텐션 비교 검증

라이선스

turboquant-pytorch 프로젝트는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:scroll: TurboQuant 원논문 (ICLR 2026)

:github: turboquant-pytorch 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요

많이 배우고 갑니다.

요즘에 OpenAI Whisper 모델에 대해서 논문을 구현해봤는데,

많은 관심과 스타를 눌러주시면 감사하겠습니다.

2개의 좋아요

공유 감사합니다, @hyuk 님. 아래와 같이 공유해주신 KG-Whisper 프로젝트 소개 글도 작성해보았습니다. :smiley: