LeapQuant가 선형 어텐션 재귀 상태를 8비트로 손실 없이 양자화한다
LeapQuant: Efficient Linear Attention with Accurate Recurrent State Quantization
무엇인가
Gated DeltaNet(GDN)과 Kimi Delta Attention(KDA) 같은 선형 어텐션은 토큰 히스토리를 고정 크기 재귀 상태 행렬 S로 압축해 긴 문맥 비용을 줄인다. 문제는 디코딩 한 스텝마다 이 상태를 HBM에서 읽어 가벼운 갱신을 적용하고 다시 써야 한다는 점이다. 전이되는 바이트에 비해 연산량이 적어 처리량이 HBM 대역폭에 묶이고, 프리픽스 캐싱을 켜면 캐시된 프리픽스마다 별도 상태를 보관해야 해 GPU 메모리도 크게 먹는다. 상태를 저비트로 양자화하는 건 자연스러운 해법이지만, 매 토큰마다 다시 양자화하면 반올림 오차가 재귀적으로 누적되고 상태의 특정 행·열에 몰린 이상치가 양자화 범위를 넓혀 정확도가 무너진다.
어떻게 동작하나
LeapQuant의 첫 번째 장치는 윈도 단위 양자화다. p개 토큰 윈도의 시작에서 경계 상태를 저정밀로 저장하고, 윈도 안에서는 이 상태를 고정한 채 토큰별 갱신 정보(감쇠 α_i, 키 k_i, 보정 u_i)를 고정밀로 버퍼링한다. 출력은 고정된 저비트 상태와 버퍼된 갱신으로 계산하고, 윈도 끝에서만 전체 상태를 복원해 다시 양자화한다. 논문의 수식 4는 이 과정을 경계 상태와 버퍼된 rank-one 갱신들의 합으로 전개하는데, 이는 선형 어텐션이 학습·프리필에서 쓰는 청크 단위 형태와 같다. 결과적으로 양자화 빈도가 p분의 1로 줄어 장문맥에서 상태 오차가 크게 낮아진다.
무엇과 다른가
두 번째는 Compensator Token이다. 윈도 경계에서 상태를 양자화하기 전에 프로베니우스 노름을 최소화하는 rank-one 행렬 k̃ũᵀ를 적합해 지배적인 큰 값 구조를 고정밀로 빼내고, 남은 잔차만 양자화한 뒤 역양자화 결과에 다시 더한다. 이 항은 실제 토큰 갱신과 같은 rank-one 형태라서 별도 커널 없이 실제 토큰과 동일한 갱신 경로를 타며, 출력을 만들지 않고 윈도 표현 안에만 존재한다. r개의 보상 토큰으로 확장되며 실전에서는 r=4(4비트에서는 r=8) FP16을 쓴다. 여기에 잔차 스무딩을 더한다. 키 행별 평균 절댓값의 제곱근으로 만든 대각행렬 C에 대해 C⁻¹을 왼쪽에 곱해 행 크기를 고르게 만든 뒤 양자화하고, 역양자화 후 C를 곱해 원래 좌표로 되돌린다. 스무딩 스케일은 윈도 안에서는 고정이고 경계마다 새 잔차로 다시 계산한다.
어떻게 쓰나
정확도 실험은 Qwen3.5-9B, Qwen3.5-35B-A3B, Qwen3.8-Flash(GDN)와 Kimi-Linear-48B-A3B-Instruct, GLM-5.3-Flash(KDA)에서 AIME 2026, GPQA-Diamond, MMLU-Pro, LiveCodeBench v6, GSM8K로 수행했고 시드 3개 평균을 보고한다. 8비트에서 LeapQuant는 12개 모델-태스크 조합 모두 FP32 기준선과 동등한 정확도를 낸다. 대비가 큰 것은 매 스텝 양자화다. Qwen3.5-9B 상태를 BF16으로 저장하면 AIME가 87.9%에서 72.1%로 떨어지지만 LeapQuant는 절반 비트로 87.9%를 유지하고, 매 스텝 FP8은 AIME 14.6%까지 무너진다. 비트를 낮추면 격차가 더 벌어진다. 6비트에서 최고 기준선인 NVFP6와 TurboQuant가 각각 평균 29.6%, 31.9%로 Qwen 모델에서 붕괴하는 반면 LeapQuant는 72.4%(FP32 75.5%)를 낸다. 4비트에서는 MXFP4 9.7%, TurboQuant 22.9%에 그친 반면 LeapQuant는 평균 60.4%를 기록하고 Kimi-Linear-48B-A3B의 모든 태스크에서 FP32와 1.1% 이내 차이를 유지한다.
전제와 한계
효율은 커널과 서빙 양쪽에서 측정됐다. 배치 512에서 GDN 커널은 B200, RTX PRO 6000, RTX 5090에서 각각 2.68배, 3.95배, 4.25배, KDA는 2.41배, 3.38배, 3.64배 빨라졌다. 순수 디코드 처리량은 B200 배치 512에서 1.22~1.37배, RTX PRO 6000의 최대 배치에서 1.22~1.57배 향상된다. 메모리는 윈도 경계 상태를 INT8 잔차·스무딩 스케일·보상 토큰을 포함해 원소당 1.19바이트로 저장해 FP32의 4바이트 대비 3.4배 줄이고, vLLM·SGLang 기본 프리픽스 캐싱 모드에서 종단 간 메모리를 Qwen3.5-9B 41%, Qwen3.5-35B-A3B 51%, Kimi-Linear-48B-A3B 56% 절감한다. B200 한 장에서 Qwen3.5-9B를 서빙할 때 동시 요청을 최대 1.4배 더 받을 수 있다. 종단 간 출력 처리량은 B200에서 1.23~1.60배, RTX PRO 6000에서 1.31~1.65배 늘고, 논문 전체 요약 기준 커널 2.05~3.70배·종단 간 1.47배다.
절제 실험은 각 구성 요소의 기여를 분리한다. Qwen3.5-9B에서 매 스텝 INT8은 AIME를 87.9%에서 7.1%로, LiveCodeBench를 64.1%에서 9.2%로 떨어뜨린다. 윈도 단위 양자화만으로 82.4%와 60.6%로 회복되고, 보상 토큰을 더하면 86.6%와 61.5%가 되며, 스무딩까지 넣으면 FP32 격차를 닫으면서 커널 2.52배를 유지한다. 윈도 길이는 p=16에서 정확도가 포화되고 커널도 가장 빠른데, p=32는 정확도 이득 없이 버퍼 트래픽 때문에 2.52배가 2.20배로 떨어진다. 보상 토큰 수는 r=4에서 정확도가 포화되며 r=16이 되면 커널이 FP32보다 느려진다.
실무 관점에서 이 방법은 학습이나 캘리브레이션 데이터가 필요 없고, 디코드 커널이 이미 rank-one 갱신을 처리한다면 보상 토큰을 같은 경로에 태울 수 있다는 점이 핵심이다. vLLM에 구현됐고 선형 어텐션 디코드 커널은 TileLang으로 작성됐다. 하이브리드 모델이 선형 어텐션 레이어 비중을 늘릴수록 상태 전이 비용이 커지므로, 저정밀 재귀 상태를 기본값으로 삼는 시나리오를 검토할 만하다. 다만 윈도 길이와 보상 토큰 수가 정확도·속도 트레이드오프를 좌우하므로 자신의 모델과 배치 크기에서 p와 r을 다시 튜닝해야 한다.
저자들이 밝힌 전제와 한계도 분명하다. Qwen3.8-Flash와 GLM-5.3-Flash는 하드웨어 자원 제약으로 단일 GPU에서 8개 레이어 버전만 돌렸고, 레이어당 디코드 비용은 보존하지만 모델 출력은 보존하지 않아 효율 측정에만 사용했다. 윈도 길이 16에서 FP16 갱신 버퍼는 128×128 상태 기준 레이어당 헤드당 약 8KiB로 활성 요청마다 한 번 할당되어 오버헤드가 작다고 주장하지만, 이는 해당 설정에 한정된 수치다. 보상 토큰 재적합 비용은 r≤8에서 커널 수준 노출 오버헤드가 모든 설정에서 7% 이내라고 보고한다.