All posts

LoopVQ: 반복형 Transformer의 KV 캐시 압축과 속도 측정 조건

반복 단계의 KV 캐시를 함께 압축하는 서울대 연구다. 0.5비트 표현과 GPU별 최대 처리량, 프리필 비용 및 정확도 변화를 공식 논문과 공개 코드로 살펴본다.

반복되는 네 메모리 층의 정보를 작은 공통 코드북으로 모으는 LoopVQ 개념 일러스트

반복형 Transformer는 같은 층을 여러 번 사용해 가중치를 아낀다. 하지만 매 반복 단계의 키·값을 따로 저장하면 KV 캐시가 커진다. LoopVQ는 이 반복 단계 사이의 중복을 압축하는 연구다. 서울대 Minsoo Cheong과 Sungjoo Yoo가 11월 3일 공개했으며 이번 글은 오늘 나온 제품 소식이 아닌 최근 논문을 살펴본다. 논문 초록과 제출 이력

반복 단계의 캐시를 함께 묶는다

LoopVQ는 여러 반복 단계의 채널을 하나의 벡터로 묶고 같은 코드북 인덱스로 저장한다. 이어 양자화 모델의 출력이 원래 모델과 가까워지도록 코드북을 미세조정한다. 각 단계의 양자화 오차가 최종 출력에 미치는 영향이 다르다는 점을 반영한 방식이다. 공식 코드 설명

0.5비트는 KV 캐시 원소당 표현 비용을 가리킨다. 가중치 전체나 서버 메모리가 그 비율로 줄었다는 수치가 아니다. 실제 서빙에서는 코드북과 BF16으로 남기는 토큰도 있다. 공개 저장소는 코드북을 만드는 과정, SGLang 기반 엔진, 실험 스크립트를 담고 있다. 일반 SGLang 설치만으로 곧바로 같은 경로를 쓴다고 가정해서는 안 된다.

최대 처리량과 한 요청의 지연은 다르다

연구진은 RTX 6000 Ada 48GB 한 장에서 Ouro-1.4B-Thinking을 측정했다. 효율 실험은 처음 8개와 최근 64개 토큰을 BF16으로 유지한다. 32K 문맥에서 디코딩 지연은 BF16의 약 절반이었지만 프리필에는 압축 인코딩 비용이 더 들었다. 논문 5.3절

최대 처리량은 같은 GPU 메모리에 들어가는 배치 크기를 늘려 비교했다. 연구진이 보고한 상한은 Ouro-1.4B-Thinking에서 4.3배, Ouro-2.6B-Thinking에서 6.1배다. 이 배수를 요청 하나의 응답 속도나 모든 GPU의 성능으로 옮겨 읽으면 안 된다. A100 40GB의 1.4B 실험에서는 최대 처리량 향상이 2.8~3.7배로 달랐다. 모두 연구진의 측정이며 이번 글에서 독립 재현하지 않았다.

압축률 옆에 정확도도 놓고 읽기

논문 표 4의 Ouro-1.4B 실험에서 BF16의 HumanEval 점수는 73.2였다. 0.5비트 LoopVQ는 63.4, TaSQ를 결합한 방식은 70.1이었다. 압축 후 정확도가 항상 그대로 유지된다고 말하기 어렵다. 논문 표 4와 분석

반복형 모델을 운영하는 개발자라면 자신의 모델과 문맥 길이에서 메모리, 프리필, 디코딩, 정답률을 함께 비교할 만하다. 이 연구는 반복 단계가 공유하는 구조를 사용한다. 일반 Transformer에 같은 이득을 바로 기대할 근거로 삼기에는 평가 범위가 좁다.

공식 코드는 Apache 2.0으로 공개했으며 외부 구성 요소의 조건은 별도로 남는다. 재현을 시작한다면 저장소의 보정·평가 환경과 대상 모델을 먼저 맞추고 처리량이 높아지는 동안 코드 생성 정확도도 유지되는지 확인하는 편이 좋다. 실험 구성과 라이선스

Discussion

No comments yet