트랜스포머의 심장이 바뀌고 있다: Kimi Linear가 던진 긴 컨텍스트의 경제학
요즘 AI 모델 이야기를 할 때 빠지지 않는 단어가 “컨텍스트 100만 토큰"입니다. 그런데 그 긴 컨텍스트를 정작 써보면 느립니다. 비싸고, 어느 순간부터는 모델이 앞부분을 잊어버린 것처럼 굽니다. 모델이 게을러서가 아니라 트랜스포머 구조 자체에서 나오는 문제입니다. 요즘 이 구조의 심장부인 어텐션을 손보려는 시도가 다시 눈길을 끕니다. 그 한복판에 Kimi Linear라는 이름이 있습니다.
참고로 이 주제는 커뮤니티가 들끓는 화제라기보다, 조용히 판을 바꾸는 쪽의 기술 이야기입니다. 레딧이나 커뮤니티 스레드를 최근 30일간 뒤져봐도 관련 논의가 거의 없었습니다. 그래서 이번 글은 커뮤니티 반응 대신 구조 쪽을 봤습니다.
어텐션이 비싼 진짜 이유
트랜스포머의 어텐션은 원리가 아주 단순합니다. 문장의 모든 토큰이 다른 모든 토큰을 한 번씩 쳐다봅니다. 그래서 문맥을 정확히 잡아냅니다. 문제는 이 “모두가 모두를 본다"는 방식의 계산량이 토큰 수의 제곱에 비례한다는 겁니다.
토큰이 1,000개면 100만 번의 비교가 필요합니다. 토큰이 10만 개가 되면 100억 번입니다. 길이를 100배 늘렸는데 비용은 1만 배가 됩니다. 생성 단계에서는 KV 캐시라는 메모리 문제까지 붙습니다. 이미 읽은 토큰의 정보를 전부 메모리에 들고 있어야 하는데, 이게 컨텍스트 길이에 비례해 선형으로 불어납니다.
결국 긴 컨텍스트의 비용은 두 방향에서 동시에 옵니다. 계산은 제곱으로, 메모리는 선형으로 늘어납니다. GPU 메모리는 유한하니 어느 순간 배치 크기를 줄여야 합니다. 그러면 처리량이 떨어지고 토큰당 단가가 올라갑니다. “100만 토큰 지원"이라는 스펙 뒤에 숨어 있는 게 이 계산서입니다.
리니어 어텐션은 왜 매번 실패했나
이 문제를 풀려는 시도가 처음은 아닙니다. 리니어 어텐션(Linear Attention) 계열 연구는 수년간 이어져 왔습니다. 아이디어는 명쾌합니다. 모든 토큰을 다 기억하는 대신, 고정된 크기의 상태(state)에 정보를 압축해서 들고 다니자는 겁니다.
이러면 토큰이 아무리 늘어나도 상태의 크기는 그대로입니다. 계산량은 선형이 되고, KV 캐시라는 개념 자체가 사라집니다. RNN이 하던 방식으로 돌아가되 훈련은 병렬로 되게 만든 구조입니다. Mamba, RWKV, GLA 같은 이름이 이 계열입니다.
그런데 대가가 있었습니다. 고정 크기 상태에 모든 걸 압축하다 보니 정보가 흐려집니다. 특히 “20페이지 앞에 나온 그 숫자 하나"를 정확히 끄집어내는 작업, 이른바 리트리벌 성능에서 확연히 밀렸습니다. 벤치마크 평균 점수는 그럴싸한데 실제로 긴 문서를 다루게 하면 어딘가 부실한 느낌. 리니어 어텐션 계열이 계속 “유망하지만 아직"이라는 말을 들어온 이유입니다.
KDA와 하이브리드라는 타협점
Kimi Linear가 택한 길은 순수주의를 버리는 것이었습니다. 전부 리니어로 가는 대신 리니어 레이어와 기존 풀 어텐션 레이어를 섞습니다. 알려진 구성은 대략 3대 1입니다. 리니어 레이어 세 개마다 풀 어텐션 레이어 하나를 끼워 넣습니다.
발상은 이렇습니다. 대부분의 레이어는 근처 문맥을 훑고 정보를 요약하는 일을 합니다. 이건 압축된 상태로도 충분합니다. 하지만 몇몇 레이어는 멀리 떨어진 특정 토큰을 정확히 찾아와야 합니다. 그 역할만 풀 어텐션에 맡깁니다. 리니어의 저렴함과 풀 어텐션의 정밀함을 레이어 단위로 분업시키는 셈입니다.
여기에 KDA(Kimi Delta Attention)라는 리니어 모듈이 들어갑니다. 핵심은 델타 룰(delta rule) 기반의 갱신 방식입니다. 새 정보가 들어올 때 상태를 통째로 덮어쓰거나 단순히 더하지 않고, 기존에 들고 있던 정보와의 차이만큼만 고칩니다. 여기에 채널별로 세밀하게 여닫는 게이팅이 붙습니다. 어떤 정보를 얼마나 잊고 얼마나 남길지를 차원마다 다르게 정한다는 뜻입니다.
비유하자면 이렇습니다. 기존 리니어 어텐션이 노트 한 장에 계속 덧칠하는 방식이었다면, KDA는 지울 부분만 골라 지우고 고칠 부분만 고칩니다. 같은 크기의 노트를 쓰면서도 정보가 훨씬 덜 뭉개집니다.
숫자로 보면
구조 설명보다 중요한 건 실제로 얼마나 이득이냐입니다. 공개된 수치 중에 눈에 띄는 게 몇 개 있습니다.
먼저 KV 캐시가 약 75% 줄어듭니다. 리니어 레이어에는 캐시가 필요 없으니 당연한 결과인데, 실무에서는 이게 큽니다. 같은 GPU로 배치를 4배 가까이 키울 수 있다는 뜻이니까요.
100만 토큰 수준의 긴 컨텍스트 디코딩에서는 처리량이 6배가량 좋아졌다고 합니다. 짧은 컨텍스트에서는 차이가 크지 않습니다. 길어질수록 격차가 벌어집니다. 애초에 이 구조가 겨냥한 지점이 거기입니다.
그러면서도 품질이 떨어지지 않았습니다. 오히려 여러 벤치마크에서 동급의 풀 어텐션 모델을 앞섰습니다. 여기가 가장 중요한 대목입니다. 지금까지 리니어 계열의 발표는 늘 “성능은 조금 손해 보지만 훨씬 빠르다"였는데, 이번엔 그 전제가 흔들렸습니다.
물론 벤치마크는 벤치마크입니다. 실제 서비스에서 3대 1 비율이 모든 작업 유형에 최적인지, 코드베이스 전체를 읽히는 것 같은 극단적 리트리벌 작업에서도 버티는지는 더 봐야 합니다. 다만 방향은 분명해졌습니다.
이게 왜 판을 바꾸나
지금 AI 업계의 화두는 추론 시간을 늘리는 쪽으로 옮겨갔습니다. 에이전트가 도구를 여러 번 호출하고 모델이 생각을 길게 이어갑니다. 긴 대화 이력도 계속 들고 갑니다. 전부 컨텍스트를 길게 쓰는 방향입니다.
어텐션 비용은 앞으로 더 중요해집니다. 모델을 조금 더 똑똑하게 만드는 것보다, 같은 똑똑함을 4분의 1 비용으로 굴리는 게 더 큰 차이를 만드는 국면이 오고 있습니다. 오픈웨이트 모델이 프론티어 모델을 특정 작업에서 따라잡는 사례가 나오는 것도 같은 맥락입니다. 성능 격차보다 단가 격차가 승부를 가르기 시작했습니다.
또 하나. 이 변화는 사용자 눈에 직접 보이지 않습니다. UI가 바뀌지도 않고 새 기능이 생기지도 않습니다. 그저 어느 날 컨텍스트 한도가 늘어나 있고 응답이 빨라져 있고 가격이 내려가 있습니다. 인프라 레벨의 개선은 늘 이런 식으로 조용히 도착합니다.
마무리
트랜스포머 논문이 나온 지 8년이 넘었습니다. 그 사이 모델 크기도 데이터도 학습 방식도 계속 바뀌었지만 어텐션의 기본 형태만은 거의 그대로였습니다. Kimi Linear는 그 마지막 성역도 이제 협상 대상이라는 신호입니다.
흥미로운 건 답이 “리니어로 전부 갈아엎기"가 아니라 “적절히 섞기"였다는 점입니다. 순수한 새 구조가 아니라 낡은 것과 새것의 조합이 이겼습니다. 기술 교체는 보통 이렇게 일어납니다.
여러분이 쓰는 AI 서비스의 컨텍스트 한도가 다음 업데이트에서 슬쩍 늘어나 있다면, 그 뒤에 이런 구조 변경이 있었을 가능성이 큽니다. 스펙 시트에는 한 줄도 안 적히겠지만요.
댓글
댓글을 불러오는 중...