
Linear Attention, 곱의 순서를 바꾸면 생기는 일
긴 문맥에서 어텐션 비용을 줄이려는 시도는 지금까지 크게 두 방향이었습니다. 위치마다 저장하는 KV를 작게 만드는 방법(GQA, MLA)과, 저장된 위치 중 일부만 골라 읽는 방법(희소 어텐션)이죠. 그런데 둘 다 softmax 어텐션의 기본 구조는 건드리지 않습니다. 지나온 토큰마다 key와 value를 KV 캐시에 쌓아 두고, 새 토큰이 올 때마다 그 캐시를 들여다보는 구조입니다. 그래서 캐시는 시퀀스 길이에 비례해 커지고, 128K 토큰이면 레이어마다 13만 개 위치가 메모리에 남아 있습니다.
과거를 전부 저장하지 않고 요약 하나로 들고 다니면 어떨까요? 긴 글을 읽을 때 문장을 다 외우지 않고 요지만 머릿속에서 고쳐 나가듯, 토큰이 올 때마다 고정 크기의 기억 하나를 갱신하는 방식입니다. 그러면 메모리는 길이와 상관없이 일정하고, 토큰 하나를 처리하는 비용도 일정해집니다.
2020년, softmax를 빼고 행렬 곱의 순서를 바꾸면 어텐션이 정확히 이런 구조가 된다는 사실이 알려졌습니다. 이것이 선형 어텐션(Linear Attention)입니다. 다만 요약은 원본보다 적게 담습니다. 선형 어텐션의 속도도, 한계도, 하이브리드라는 타협도 전부 이 요약에서 나옵니다.
곱의 순서를 바꾸면 기억이 요약이 된다
softmax 어텐션은 로 모든 쿼리와 모든 key의 점수를 먼저 계산합니다. 시퀀스가 128K이면 점수 행렬의 원소가 약 170억 개죠. 이 행렬을 먼저 만들어야 하는 이유는 softmax에 있습니다. softmax는 한 쿼리의 점수를 전부 모아 를 취하고 합으로 나누기 때문에, 한 행의 점수가 모두 나오기 전에는 를 곱할 수 없습니다. FlashAttention이 이 행렬을 메모리에 올리지 않고 타일 단위로 계산하는 방법을 찾았지만, 연산량 자체는 여전히 입니다.
선형 어텐션은 softmax를 특징 맵(feature map) 로 바꿉니다. 쿼리와 key의 유사도를 로 두면 행 전체를 모아 정규화하는 단계가 사라지고, 행렬 곱의 결합법칙을 쓸 수 있게 되죠. 를 로 묶는 순서만 바꾸는 것입니다. 결과는 같지만 중간에 만들어지는 행렬이 달라집니다.
head 차원 , 시퀀스 로 계산해 보면 차이가 분명합니다. 앞의 순서는 , 약 170억 개짜리 행렬을 거칩니다. 뒤의 순서에서 먼저 계산하는 는 , 16,384개짜리 행렬이고 시퀀스 길이와 무관합니다. 정확히 2의 20제곱, 약 백만 배 차이죠. 전체 연산량은 이고 가 보다 훨씬 작으니 사실상 입니다.
이 행렬이 앞에서 말한 요약입니다. 는 토큰마다 key와 value의 외적을 하나씩 더한 합이라서, 토큰을 생성할 때는 합을 한 번에 구하지 않고 한 토큰씩 누적해 나가면 됩니다.
는 번째 토큰까지 본 내용을 담은 요약입니다. 새 토큰이 오면 그 토큰의 key와 value를 외적해 요약에 더하고(왼쪽 식), 출력이 필요하면 쿼리로 요약을 읽습니다(오른쪽 식). 이면 요약은 16,384개의 숫자이고, 토큰이 13만 개가 쌓여도 이 크기는 변하지 않습니다. softmax 어텐션은 토큰 하나를 생성할 때마다 쌓인 KV 개를 전부 읽어야 하지만, 선형 어텐션은 요약 하나만 읽으면 되므로 128K 시점에서 연산량이 약 1,000배 적습니다.
요약에서 값을 꺼내는 원리는 작은 예로 확인할 수 있습니다. 이후로는 를 생략하고, key를 2차원, value를 숫자 하나로 두겠습니다. key 에 value 5를, key 에 value 3을 저장하면 요약은 이 됩니다. 쿼리 으로 읽으면 , 쿼리 로 읽으면 3이 나오죠. key끼리 서로 직교하면 요약에 섞어 넣은 값을 정확히 다시 꺼낼 수 있습니다.
요약에는 자리가 모자란다
같은 요약에 세 번째 기억을 넣어 보겠습니다. key 에 value 10을 더하면 요약은 이 됩니다. 이제 쿼리 으로 읽으면 5가 아니라 11이 나오고, 방금 넣은 key로 읽어도 10이 아니라 15.4가 나옵니다. 2차원 공간에는 서로 직교하는 방향이 두 개뿐이라서 세 번째 기억이 앞의 두 기억과 섞여 버린 것이죠.
실제 모델도 규모만 다를 뿐 같은 상황입니다. 이면 서로 간섭하지 않는 방향은 128개인데, 요약에 들어가는 토큰은 수천에서 수십만 개입니다. 게다가 업데이트에는 더하기만 있어서 한 번 들어간 정보는 빠지지 않습니다. softmax는 로 점수 차이를 키워 가장 관련 높은 위치 하나에 가중치를 몰아줄 수 있지만, 선형 어텐션의 요약에는 그런 집중 장치가 없어 특정 토큰 하나를 정확히 짚어 내는 능력이 떨어집니다.
그래서 이후 연구는 한정된 요약을 어떻게 관리할지에 집중했습니다.
감쇠 게이팅은 매 스텝 요약 전체에 1보다 작은 를 곱해 오래된 기억을 흐리게 만듭니다. 대화 주제가 바뀌었을 때 이전 내용을 빠르게 비우는 데는 효과적이지만, 어떤 기억은 지우고 어떤 기억은 남길지 고를 수는 없습니다.
델타 규칙은 쓰기 전에 먼저 읽습니다. 앞의 예에서 key 로 요약 을 읽으면 가 나옵니다. 저장하려는 값은 10이니 차이 4.6만 더하면 요약은 이 되고, 이 key로 다시 읽으면 정확히 10이 나오죠. 무작정 10을 더해 15.4가 나오던 것과 비교하면, 같은 key에 이미 들어 있던 몫을 빼고 새 값으로 덮어쓴 셈입니다.
Gated DeltaNet(GDN, ICLR 2025)은 이 둘을 합쳐 전역 감쇠와 선택적 덮어쓰기를 한 번에 합니다. needle retrieval에서 긴 문맥으로 갈수록 이전 변종들보다 정확도를 훨씬 잘 유지했고, Qwen3-Next를 비롯해 2025년부터 2026년 사이에 나온 하이브리드 모델 다수가 이 계열을 선형 레이어로 씁니다.
그런데 예의 숫자를 다시 보면 한계가 그대로 남아 있습니다. 델타 규칙 이후에도 쿼리 으로 읽은 값은 5가 아니라 7.76입니다. 요약을 관리하는 방법은 좋아졌지만 요약에 들어갈 수 있는 양 자체는 늘지 않았으니까요. 먼 과거의 특정 토큰을 정확히 꺼내야 하는 일은 결국 원본이 있어야 합니다.
하이브리드가 표준이 된 이유가 여기 있습니다. 대부분의 레이어는 요약으로 돌리고, 일부 레이어에만 softmax 어텐션과 KV 캐시를 남겨 원본 보관소로 쓰는 것이죠. 선형 레이어 3개마다 softmax 레이어 1개를 두는 3:1 배치가 가장 흔한데, 이러면 KV 캐시가 레이어 4개 중 1개에만 남으므로 캐시가 약 75% 줄어듭니다.
요약으로는 안 되는 일
하이브리드로 원본을 일부 남겨도, 요약이 맡은 레이어의 한계는 그대로 남습니다. 가장 먼저 드러나는 곳은 여러 사실을 차례로 찾아 이어 붙여야 하는 다단계 추론입니다. 단계마다 요약에서 조금씩 틀린 값을 꺼내게 되고, 그 오차가 단계를 거치며 겹치기 때문이죠. 한 번 찾고 끝나는 문제가 대부분인 표준 벤치마크로는 이 격차가 잘 보이지 않습니다. 작은 규모에서는 점수가 풀 어텐션과 거의 같다가 모델을 키운 뒤에야 격차가 드러나는 경우가 많고, 실제로 7:1 하이브리드로 1M 컨텍스트 모델을 내놓았던 MiniMax가 다음 모델에서 풀 어텐션으로 돌아가며 밝힌 이유도 이것이었습니다.
나머지 한계는 서빙 기법과 맞물리는 문제입니다. 아래 그림처럼 KV 캐시는 토큰마다 따로 저장되기 때문에 원하는 지점에서 잘라 쓸 수 있지만, 요약은 모든 토큰이 이미 하나로 합쳐진 상태입니다.
prefix caching은 여러 요청이 공유하는 시스템 프롬프트나 문서의 KV를 한 번만 계산해 두고 재사용하는 기법입니다. KV 캐시라면 공유 구간까지만 잘라서 넘기면 되지만, 요약은 그 구간이 끝나는 정확한 지점에서 미리 복사해 두지 않았다면 되살릴 방법이 없습니다. 대화형 서비스는 같은 프롬프트를 재사용하는 비율이 높아서 이 차이가 비용으로 곧장 이어집니다.
speculative decoding도 비슷한 이유로 부딪힙니다. 작은 모델이 여러 토큰을 미리 추측하고 큰 모델이 한꺼번에 검증하는 방식인데, 추측이 틀리면 그 토큰들을 되돌려야 하죠. KV 캐시는 뒤쪽 몇 칸을 지우면 끝나지만, 요약에는 틀린 토큰이 이미 더해져 있어서 추측한 위치마다 요약의 사본을 들고 있거나 다시 계산해야 합니다.
저정밀 추론에서도 차이가 납니다. KV 캐시의 값은 한 번 쓰이고 나면 바뀌지 않지만, 요약은 같은 숫자 16,384개를 토큰이 올 때마다 고쳐 써서, 긴 문맥이면 수만 번 갱신됩니다. FP8처럼 정밀도가 낮은 형식에서는 고쳐 쓸 때마다 생기는 반올림 오차가 계속 쌓이죠.
정리하면 요약은 빠르고 가볍지만 원본만큼 정확하지 않고, 원본이 있다고 전제하고 만든 서빙 기법들과도 잘 맞지 않습니다. 반대로 컨텍스트가 길어질수록 캐시를 75% 줄이는 이득은 커지고, 서빙 엔진들도 요약 상태를 저장하고 재사용하는 기능을 갖춰 가고 있습니다. 하이브리드를 쓸지, 쓴다면 원본을 얼마나 남길지는 이 손익을 워크로드에 맞춰 따지는 문제입니다.
마치며
선형 어텐션이 남긴 질문은 과거를 얼마나 원본으로 남겨 둘 것인가입니다. 전부 남기면 풀 어텐션이고, 전부 요약하면 순수 선형 어텐션입니다. 3:1 하이브리드는 그 사이의 한 지점일 뿐이고, 어디가 맞는 지점인지는 워크로드마다 달라 아직 정해진 답이 없습니다.
다음 글에서는 컨텍스트를 1M까지 늘렸을 때 이런 설계들이 실제로 무엇을 떠받치는지 다룹니다. 모델 카드에 적힌 컨텍스트 길이와 실제로 쓸 수 있는 길이 사이의 격차가 어디서 생기는지 따라갑니다.
함께 보면 좋은 글
- Sparse Attention, 블록으로 묶으면 달라지는 것
- KV Cache를 10분의 1로 줄인 MLA의 트릭
- FlashAttention은 왜 더 많이 계산하면서 더 빠를까
- Transformer는 왜 Q, K, V 셋으로 나눴을까
참고자료
- Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention (Katharopoulos et al., ICML 2020)
- Gated Delta Networks: Improving Mamba2 with Delta Rule (Yang, Kautz, Hatamizadeh, ICLR 2025)
- MiniMax-01: Scaling Foundation Models with Lightning Attention (MiniMax, 2025)
- Why Did M2 End Up as a Full Attention Model? (MiniMax, 2025)