GVA는 값만 캐시하고 키를 필요할 때 복원해 GQA 캐시를 절반으로 줄인다

Grouped Value Attention: Efficient KV Caching via On-Demand Key Reconstruction

HF Daily2609.13285

Vishesh Tripathi, Abhay Kumar, Ramsha Khan2026-09-08조회 4

무엇인가

Transformer 자기회귀 디코딩에서 KV 캐시는 주요 병목이다. 캐시의 메모리 사용량과 캐시 읽기 트래픽이 시퀀스 길이에 따라 선형으로 늘어나기 때문이다. GQA(그룹화 쿼리 어텐션)는 키-값 헤드를 그룹으로 공유해 이 비용을 줄이지만, 매 스텝마다 키와 값을 모두 저장하므로 캐시가 여전히 두 개의 스트림이다. MLA(멀티헤드 잠재 어텐션)는 키와 값을 공동 잠재로 압축해 캐시를 더 줄이지만, 추가 투영과 더 복잡한 디코드 경로를 대가로 치른다. 이 논문이 다루는 문제는 명확하다. 디코드 시 실제로 읽어야 하는 영구 캐시 상태를, 품질을 크게 잃지 않으면서 얼마나 줄일 수 있는가.

어떻게 동작하나

제안 방법인 Grouped Value Attention(GVA)은 GQA의 그룹화를 값에는 유지하되 키에는 적용하지 않는다. G개의 그룹화된 값 스트림만 캐시하고, H개의 쿼리 헤드 각각에 대해 학습된 헤드별 선형 사상 M_h로 서로 다른 콘텐츠 키를 복원한다. 식으로 쓰면 K_h = V_g(h) M_h 이며, 여기서 g(h)는 쿼리 헤드 h에 배정된 값 그룹이다. 별도의 키 투영은 없고, 콘텐츠 키는 캐시에 기록되지 않는다. 값은 이미 어텐션 출력으로 전달되는 내용을 담고 있고, M_h는 헤드 h가 스코어링에 사용할 특징을 선택하는 역할을 한다. 핵심은 M_h가 추론 시 고정이라는 점이다. 그래서 M_h를 쿼리에 흡수할 수 있다. 캐시된 위치 j에 대한 콘텐츠 스코어는 q_h k_j,h^T = q_h (v_j,g(h) M_h)^T = (q_h M_h^T) v_j,g(h)^T = q̃_h v_j,g(h)^T 가 되며, q̃_h = q_h M_h^T 는 쿼리 토큰마다 헤드별로 한 번만 계산하면 된다. 이 항등식은 근사가 아니라 정확하다. 결과적으로 콘텐츠 어텐션은 값 캐시만 읽고, 임시 키 텐서를 만들 필요가 없다. 부수 효과도 있다. GQA에서는 한 그룹 안의 모든 쿼리 헤드가 같은 키 벡터로 스코어링하지만, GVA는 G개의 값 스트림에서 H개의 서로 다른 콘텐츠 키를 만들어 헤드별 키 다양성을 더 작은 영구 캐시로 회복한다. 다만 저자들은 이 장점이 GQA 대비의 장점이며 MLA 대비의 장점은 아니라고 못 박는다. MLA도 공유 잠재 위에 헤드별 키 상향 투영을 사용하기 때문이다.

무엇과 다른가

문제는 위치 인코딩이다. 표준 RoPE를 쿼리와 복원된 키에 그대로 적용하면 스코어가 q_t R_t^T R_j M^T v_j^T = q_t R_(j-t) M^T v_j^T 가 되어, 상대 회전 R_(j-t)가 위치 쌍에 의존하면서 q_t와 M^T 사이에 끼어든다. 쿼리 위치 t가 고정이어도 캐시 위치 j에 따라 달라지므로, 하나의 변환된 쿼리로 모든 캐시 위치에 재사용할 수 없다. 그래서 저자들은 DeepSeek MLA의 분리형 RoPE를 채택한다. 각 쿼리/키 헤드를 폭 d_n의 회전하지 않는 콘텐츠 슬라이스와 폭 d_r의 회전된 위치 슬라이스로 나누고, 위치 키는 헤드 간에 공유한다. 콘텐츠 슬라이스는 k_nope = v_j,g(h) M_h 로 복원되고, 위치 슬라이스는 k_rope = (x_j W_r) R_j^T 로 별도 캐시된다. 두 회전 사이에 학습되는 것이 없으므로 상대 위치가 보존되고, 위치 키가 공유되므로 토큰당 d_r개 스칼라만 추가된다(G·d_r이 아니다). 이때 영구 캐시는 N_GVA = T·G·d_h + T·d_r 이고, GQA의 N_GQA = 2·T·G·d_h 와 비교하면 비율이 1/2 + d_r/(2Gd_h) 가 된다. 저자들이 쓴 폭에서 두 번째 항은 몇 퍼센트 수준이라, d_r=16일 때 약 47%, d_r=24일 때 약 45% 절감된다. 초기화에도 손을 댔다. K = V·M은 투영의 투영이라 기본 초기화로는 키의 스케일이 쿼리보다 작아져 거의 균일한 어텐션이 되고 초기 학습을 그 불일치 복구에 낭비한다. 그래서 σ_M = σ_Q / (σ_V √d_in) 로 사상을 초기화해 콘텐츠 키와 쿼리의 초기 RMS를 맞춘다.

어떻게 쓰나

실험은 350M 파라미터 규모의 디코더 전용 Transformer를 30B 토큰의 FineWeb-Edu 샘플로 처음부터 학습해 수행했다. 모든 모델이 같은 데이터 순서, 토큰 예산, 옵티마이저, 컨텍스트 길이를 쓰고, 그래디언트 스파이크 완화를 위해 ZClip을 사용했다. 평가는 HellaSwag, WinoGrande, OpenBookQA, ARC의 Easy와 Challenge 분할에 대한 제로샷 정확도이며, 설정마다 서로 다른 시드로 3회 실행해 평균을 냈다. 다섯 과제 평균은 GQA 44.36, MLA 43.88이었다. GVA 쪽에서는 쿼리 RMSNorm을 쓴 스케일 매칭 GVA가 44.41로 가장 강한 GVA 행이었고, 쿼리 RMSNorm 없는 기본 GVA는 43.77, 초기화를 맞추지 않은 GVA 베이스라인은 43.91이었다. 제안 서빙 설계인 분리형 RoPE GVA는 d_r=16에서 44.35로 GQA보다 0.01 퍼센트포인트 낮았고, d_r=24에서는 44.29였다. 저자들은 두 폭 중 d_r=16을 더 나은 운용점으로 본다. 한편 키와 값을 하나로 쓰는 첫 설계(Shared KV, K=V)는 캐시를 GQA의 정확히 절반으로 줄이지만 학습 손실이 GQA 수준으로 회복되지 않아, 제안 시스템이 아니라 실패한 첫 시도로 보고된다. 참고로 이 논문 앞부분의 초록에는 16차원 위치 변형이 44.18로 적혀 있으나 본문 초록과 결과 절에서는 44.35로 제시되어, 같은 변형에 대해 두 수치가 다르게 나타난다.

전제와 한계

개발자 관점에서 이 논문의 목표는 지연시간이 아니라 캐시 표현이다. 토큰 단위 디코딩은 어텐션 캐시를 반복적으로 읽기 때문에 메모리 대역폭에 자주 묶이는데, GVA는 그 영구 캐시를 GQA 대비 약 45~47% 줄이는 것을 겨냥한다. 반대로 프리필은 캐시가 아니라 연산에 묶이므로 GVA는 프리필에서 이득을 노리지 않으며, 콘텐츠 폭과 위치 폭의 합이 베이스라인이 이미 차지하는 헤드 차원 타일을 넘지 않으면 프리필 비용은 GQA에 가깝게 유지된다고 밝힌다. MLA와 비교했을 때 GVA는 별도 공동 잠재 대신 값 자체를 영구 콘텐츠 상태로 사용하므로 직접적인 값 경로를 보존한다. 실무에 적용하려면 먼저 확인해야 할 것이 있다. 저자들은 커스텀 디코딩 커널을 개발해 평가 중이며 오픈소스 공개를 예정한다고만 밝혔고, 융합 디코드 처리량이나 최대 서빙 메모리, 배치 용량 같은 시스템 수치는 이 논문에 없다. 즉 캐시 절감은 표현 수준의 계산이지 측정된 서빙 메모리 감소가 아니므로, 실제 도입 판단은 커널과 시스템 측정 결과가 나온 뒤에 하는 편이 안전하다.

한계는 저자들이 스스로 분명히 적어 두었다. 약 45~47%라는 수치는 의도된 디코드 상태(그룹화된 V와 공유 k_rope)에 대한 것이고, 위치 슬라이스를 빼면 이상적인 50% 값 전용 절감이 된다. 융합 디코드 처리량, 최대 서빙 메모리, 배치 용량 측정은 보고되지 않았다. 모든 비교 실행이 약 350M 파라미터 한 가지 규모, 30B FineWeb-Edu 토큰 한 가지 데이터 믹스, 설정당 3개 시드에 한정되며, d_r=24는 평균에서 GQA에 뒤진다. RoPE 폭, 가산 할당과 분할 할당의 비교, 더 긴 컨텍스트에 대한 체계적 스윕은 하지 않았다. 또한 Shared KV는 권장 베이스라인이 아니라 실패한 첫 시도이며, 지연시간이나 디코드 처리량 이득은 현재 실험으로 확립되지 않았다. 결론적으로 이 논문의 주장은 품질 승리가 아니라, GQA와 같은 넓은 구간의 품질을 유지하면서 의도된 영구 캐시를 대략 절반으로 줄이는 더 압축적인 캐시 표현이다.