
Kimi K3의 1M 컨텍스트를 뒷받침하는 Kimi Delta Attention이라는 선형 주의 (Linear Attention)
요약
Moonshot AI의 Kimi K3가 1M 컨텍스트를 효율적으로 처리하기 위해 도입한 Kimi Delta Attention(KDA) 기술을 분석합니다. KDA는 선형 주의(Linear Attention)의 고정된 메모리 장점과 세밀한 게이팅 메커니즘을 결합하여 회상 능력을 보완했습니다.
핵심 포인트
- KDA는 선형 주의의 메모리 효율성과 Transformer의 회상 능력을 결합함
- Gated DeltaNet에 세밀한 입도의 게이팅을 추가하여 정보 압축 효율 극대화
- DPLR 행렬의 특수화된 변형을 통해 계산 복잡도를 낮추고 속도 확보
- 1M 토큰 이상의 긴 컨텍스트에서도 낮은 추론 비용과 빠른 생성 속도 유지
1M 토큰의 컨텍스트를 「현실적인 속도와 메모리로」 돌린다. 이 한 문장을 액면 그대로 실현하는 것은 사실 모델을 크게 만드는 것보다 어렵다. 컨텍스트가 길어질수록 주의 기구 (Attention Mechanism)의 비용이 커지며, 모델의 똑똑함보다 속도와 메모리가 먼저 파괴되기 때문이다. Moonshot AI의 Kimi K3는 2.8조 파라미터 · 896 엑스퍼트 (토큰당 16개만 활성화) · 1M 토큰 컨텍스트라는 수치로 화제를 모았지만, 실무 엔지니어로서 정말 주목해야 할 것은 총 파라미터 수가 아니다. 그 1M 컨텍스트를 파괴하지 않고 돌리기 위해 Moonshot이 주의 기구 그 자체를 새로 만들고 있다는 점이다. 그 정체는 Kimi Delta Attention (KDA) 이며, 독립된 논문과 오픈 소스 구현까지 나와 있다. 이 부분을 해설한다.
일반적인 Transformer의 자기 주의 (Self-attention)는 생성 중인 토큰이 과거의 모든 토큰을 매번 참조한다. 이를 위해 과거의 키(Key)와 값(Value)을 저장해 두는 것이 KV 캐시 (KV Cache) 이다. 컨텍스트가 길어질수록 이 캐시는 선형적으로 팽창하며, 1M 토큰 정도가 되면 메모리를 많이 차지할 뿐만 아니라, 1토큰을 출력할 때마다 거대한 캐시를 다시 훑어야 하므로 생성이 느려진다. 에이전트 용도처럼 도구 호출 이력이나 긴 코드베이스를 통째로 컨텍스트에 쌓는 사용법에서는, 이 「기억해내는 비용」이 그대로 추론 비용이 된다.
이와 대조적인 것이 선형 주의 (Linear Attention) 이다. 과거를 전부 유지하는 대신, RNN처럼 고정된 크기의 상태로 정보를 압축(畳み込む)해 나간다. 메모리는 컨텍스트 길이에 의존하지 않고 일정하며, 생성도 빠르다. 다만 고정된 상태로 밀어 넣는 이상, 멀리 있는 세밀한 정보를 정확하게 「기억해내는」 능력 (회상)은 떨어지기 쉽다. 속도와 회상은 트레이드오프 (Trade-off) 관계라는 것이 지금까지의 상식이었다.
KDA는 이 선형 주의 측의 약점을 보완한 것이다. 논문 Kimi Linear: An Expressive, Efficient Attention Architecture (Kimi Team, arXiv:2510.26692)는 KDA를 다음과 같이 정의한다.
an expressive linear attention module that extends Gated DeltaNet with a finer-grained gating mechanism
기반이 되는 Gated DeltaNet은 선형 주의의 상태를 「델타 규칙 (Delta Rule)」로 업데이트하는 계보이다. 델타 규칙은 원래 새로운 입력과 현재 기억의 차이(오차)만큼만 상태를 새로 쓰는, 고전적인 연상 기억의 업데이트 규칙을 가리킨다. KDA는 여기에 더 세밀한 입도의 게이팅 (Gating) 을 추가했다. 게이트란 상태의 어느 부분을 얼마나 잊거나 덮어쓸지를 제어하는 밸브와 같은 것으로, 이를 차원별로 세밀하게 적용함으로써 제한된 고정 상태 메모리를 더욱 낭비 없이 다 쓰겠다는 발상이다.
구현 측면에서, 논문은 상태 전이 행렬에 범용적인 DPLR (대각 + 저계수, Diagonal-Plus-Low-Rank)이 아닌, 이를 특수화한 형태를 사용한다고 기술하고 있다.
a specialized variant of the Diagonal-Plus-Low-Rank (DPLR) transition matrices, which substantially reduces computation compared to the general DPLR formulation
즉 표현력은 유지하면서 행렬 계산 자체를 가볍게 만든 것이다. 「게이트를 세밀하게 하면 무거워지지 않을까」라는 당연한 우려를 전이 행렬 측을 깎아냄으로써 상쇄하고 있다.
흥미로운 점은 KDA로 모든 층을 교체하지 않았다는 점이다. Kimi Linear는 KDA와 일반적인 풀 어텐션 (MLA, Multi-head Latent Attention)을 3:1의 비율로 층마다 섞는 하이브리드 구성을 취한다. 대략 말하자면, 3개 층 분량은 저렴하고 빠른 KDA에 맡기고, 1개 층 분량만 회상 능력이 좋은 풀 어텐션을 남겨두는 배분이다.
이러한 절충안이 효과를 발휘한다. 공식 리포지토리와 논문이 제시하는 수치는 다음과 같다.
| 지표 | Kimi Linear의 하이브리드 구성 |
|---|---|
| KV 캐시 (KV Cache) 사용량 | 최대 75% 절감 |
| ... |
논문 자체에서 "Kimi Linear는 평가된 모든 태스크에서 상당한 차이로 Full MLA를 능가한다(Kimi Linear outperforms full MLA with a sizeable margin across all evaluated tasks)"라고 기술한 점은 강조해 두고 싶다. 선형 주의 (Linear Attention) 계열은 지금까지 "빠르지만 다소 약한" 타협안으로 이야기되는 경향이 있었으나, 적어도 이 구성에서는 Full Attention보다 가벼우면서도 품질 면에서 뒤처지지 않는다고 주장하고 있다. 속도를 위해 품질을 희생하는 이야기가 아니라는 점이 기존 방식과의 가장 큰 차이점이다.
참고로, 지금까지의 수치는 KDA를 검증한 연구 모델인 "Kimi Linear" (총 48B · 활성화 3B의 MoE)의 것이다. K3 (2.8조 파라미터) 자체의 내부 벤치마크는 아니라는 점을 구분해 두어야 한다.
Kimi K3는 이 KDA에 더해 **Attention Residuals (AttnRes)**라는 또 다른 기교를 더했다. MarkTechPost의 해설에 따르면, AttnRes는 정보를 층(layer)을 따라가며 일률적으로 쌓아 올리는 것이 아니라, 깊이(depth) 방향으로 표현을 선택적으로 추출하는 메커니즘으로, 추가 비용 2% 미만으로 훈련 효율을 약 25% 높인다고 한다. KDA가 "문맥 길이 (가로 방향)"의 비용에 효과적이라면, AttnRes는 "층의 깊이 (세로 방향)"의 정보 흐름에 효과적이라고 대비하여 이해하면 정리하기 쉽다.
K3의 공개 자체에도 주의할 점이 있다. 7월 16일에 추론 API와 앱으로 선공개되었으나, 여러 보도에 따르면 전체 가중치(Full weights)는 추후(7월 27일로 보도됨) 오픈 웨이트 (Open weights)로 출시될 예정이다. 이 가중치 공개일은 Moonshot의 1차 발표에서 내가 직접 확인한 것이 아니라 2차 보도를 기반으로 한 것이므로, 셀프 호스팅 (Self-hosting)을 계획한다면 공식 리포지토리의 확정 발표를 기다리는 것이 안전하다. 2.8조 파라미터의 MoE를 구동하려면 그에 걸맞은 하드웨어가 필요하다.
K3 본체는 아직 너무 무겁지만, KDA의 동작 자체는 연구 모델인 Kimi Linear를 통해 지금 바로 접해볼 수 있다. 공식 리포지토리 MoonshotAI/Kimi-Linear가 절차를 공개하고 있다 (이하는 해당 리포지토리에서 확인한 내용).
필요 요구사항은 Python 3.10 이상, PyTorch 2.6 이상이다. KDA 커널은 Flash Linear Attention 유래 패키지로 설치된다.
pip install -U fla-core
Hugging Face로부터 불러올 때는 커스텀 주의 기구 (Custom attention mechanism)를 포함하므로 trust_remote_code=True가 필요하다.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "moonshotai/Kimi-Linear-48B-A3B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
...
서빙(Serving)할 경우 vLLM을 그대로 사용할 수 있다.
vllm serve moonshotai/Kimi-Linear-48B-A3B-Instruct --port 8000
체크포인트는 Kimi-Linear-48B-A3B-Base (순수 사전 학습 버전)와 -Instruct (지시 조정 버전) 두 종류가 Hugging Face에 올라와 있다.
장문맥(Long context)이나 에이전트(Agent)를 실운용에 올리려 할 때 가장 먼저 부딪히는 벽은 모델의 지능이 아니라 KV 캐시의 비용이다. 순수 선형 주의로 전부 교체하면 회상 능력이 떨어지고, Full Attention을 그대로 유지하면 1M 문맥 비용이 너무 높다. KDA가 보여준 것은 선형 주의의 "망각 방식"을 정교하게 설계하고 Full Attention을 소량만 섞는 중간 해법이며, 이를 통해 비용과 품질을 모두 잡는 것이 현실화되고 있다는 점이다. K3라는 화려한 숫자 이면에서 실제로 작동하고 있는 것은 이 담백한 하이브리드 설계라고 나는 보고 있다. 이제는 총 파라미터 수보다 주의 기구 (Attention mechanism)의 구조를 살펴봐야 할 국면에 와 있다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기