Kimi K3 내부 구조 분석: 100만 토큰 에이전트를 위해 설계된 2.8T MoE
요약
Moonshot AI가 공개한 2.8T 파라미터 규모의 MoE 모델 Kimi K3의 기술적 구조를 분석합니다. 하이브리드 어텐션과 Stable LatentMoE를 통해 100만 토큰의 컨텍스트를 처리하며, 에이전트 성능에 최적화된 설계를 갖추고 있습니다.
핵심 포인트
- 2.8조 개의 총 파라미터와 1,040억 개의 활성 파라미터를 가진 MoE 모델
- 하이브리드 순환/전역 어텐션 스택을 통한 효율적인 시퀀스 처리
- 100만 토큰 컨텍스트 윈도우 및 에이전트 트래픽 최적화 캐시 아키텍처
- 오픈 웨이트 방식이지만 상업적 이용에 제한이 있는 커스텀 라이선스 적용
Kimi K3의 하이브리드 어텐션 (hybrid attention), Stable LatentMoE, 장기 지평 강화학습 (long-horizon RL), 서빙 스택 (serving stack), 벤치마크 주장, 그리고 사이버 보안 증거에 대한 기술적 분석입니다.
Moonshot AI는 총 2.8조 개의 파라미터, 1,040억 개의 활성 파라미터, 그리고 100만 토큰의 컨텍스트 윈도우 (context window)를 가진 네이티브 멀티모달 전문가 혼합 (Mixture-of-Experts, MoE) 모델인 Kimi K3의 가중치를 공개했습니다.
K3는 선택된 코딩 및 에이전트 벤치마크에서 Claude Opus 4.8, GPT-5.5, GPT-5.6 Sol 또는 Claude Fable 5를 능가합니다. 그렇다고 해서 모든 워크로드에서 가장 강력한 모델이라는 뜻은 아닙니다. Moonshot의 자체 기술 보고서에 따르면, K3는 전반적으로 여전히 Fable 5와 GPT-5.6 Sol에 뒤처집니다.
Moonshot 기술 블로그에서 설명하듯, 엔지니어링 측면이 리더보드 헤드라인보다 더 중요합니다. K3는 하이브리드 순환/전역 어텐션 스택 (hybrid recurrent/global attention stack), 잔차에 대한 심층 어텐션 (depth-wise attention over residuals), 극도로 희소한 잠재 MoE (extremely sparse latent MoE), 지속적인 강화학습 (reinforcement-learning) 환경, 그리고 100만 토큰 에이전트 트래픽을 위해 특별히 설계된 캐시 아키텍처 (cache architecture)를 결합합니다.
이 기사는 이러한 구성 요소들이 어떻게 결합되는지, 어떤 주장이 공개된 결과물에 의해 뒷받침되는지, 그리고 어떤 부분이 여전히 Moonshot의 내부 측정치에 의존하는지를 설명합니다.
공개된 모델
| 속성 | Kimi K3 |
|---|---|
| 총 파라미터 | 2.78T |
| ... |
Hugging Face의 설정은 기술 보고서와 일치합니다. 체크포인트 (checkpoint)는 총 약 1.56 TB에 달하는 96개의 safetensors 샤드 (shards)를 포함하고 있습니다.
K3는 오픈 웨이트 (open-weight) 출시이지만, "오픈 소스"라는 용어에는 수식어가 필요합니다. 커스텀 Kimi K3 라이선스 (Kimi K3 License)는 사용, 수정 및 배포를 허용하면서도, 대규모 모델 서비스 (Model-as-a-Service) 비즈니스 및 매우 큰 상업적 제품에 대한 조건을 추가합니다.
정보 흐름의 세 가지 차원
Moonshot은 시퀀스 길이 (sequence length), 모델 깊이 (model depth), 채널 너비 (channel width)를 중심으로 아키텍처를 구성합니다. 각 차원은 고유한 스케일링 메커니즘 (scaling mechanism)을 가집니다.
시퀀스 믹싱 (Sequence mixing): 글로벌 MLA 레이어당 3개의 KDA 레이어
백본 (backbone)은 다음과 같이 반복됩니다:
KDA -> KDA -> KDA -> Gated MLA
마지막 레이어 또한 MLA이므로, 출력은 항상 글로벌 어텐션 (global attention)을 통과합니다.
Kimi Delta Attention은 순환 선형 어텐션 (recurrent linear-attention) 메커니즘입니다. 이는 시퀀스 길이에 의존하는 KV 캐시 (KV cache)를 델타 규칙 (delta rule)에 의해 업데이트되는 고정 크기의 상태 (state)로 대체합니다. 채널별 유지 계수 (channel-wise retention factor)는 현재의 키/값 (key/value) 쌍이 기록되기 전, 이전 상태가 얼마나 유지될지를 제어합니다.
K3는 유지 파라미터화 (retention parameterization)를 다음과 같이 변경합니다:
g = g_min * sigmoid(exp(A) * z)
alpha = exp(g)
g_min = -5
이전의 Kimi Linear 설계에서는 로그 감쇠 (log-decay)가 하한선 없이 제한되지 않았습니다. 청크 단위 실행 (chunkwise execution) 중에 역수 누적 감쇠 (reciprocal cumulative decay)가 오버플로 (overflow)될 수 있었습니다. 따라서 대각선 16-토큰 타일 (diagonal 16-token tiles)은 다른 곳에서 사용되는 밀집 텐서 코어 경로 (dense Tensor Core path) 대신 특수한 위치 쌍 구현 (special position-pair implementation)이 필요했습니다.
K3의 하한선은 16-토큰 타일의 누적 로그 감쇠를 (-80, 0) 범위 내로 유지하며, 이는 BF16의 동적 범위 (dynamic range)에 부합합니다. 이를 통해 대각선 및 비대각 인과적 타일 (diagonal and off-diagonal causal tiles) 모두 밀집 행렬 곱셈 (dense matrix multiplication)을 사용할 수 있습니다.
이는 구체적인 형태의 알고리즘-시스템 공동 설계 (algorithm-system co-design)입니다. 게이트의 수학적 범위를 변경함으로써 특화된 GPU 커널 경로를 제거한 것입니다.
순환 상태 (recurrent state)는 여전히 유한하므로, 매 네 번째 어텐션 레이어는 멀티헤드 잠재 어텐션 (Multi-head Latent Attention, MLA)을 사용합니다. MLA는 제한 없는 토큰 간 상호작용을 보존하면서 각 토큰의 키/값 표현을 잠재 벡터 (latent vector)로 압축합니다.
K3는 MLA 레이어에 NoPE를 사용합니다. KDA는 순서와 최신성 정보를 제공하고, MLA는 글로벌 콘텐츠 매칭을 제공합니다. 따라서 컨텍스트 (context)를 확장할 때 RoPE 재스케일링 (rescaling)이나 YaRN 보간 (interpolation)이 필요하지 않습니다.
깊이 믹싱 (Depth mixing): 어텐션 잔차 (Attention Residuals)
표준 잔차 스트림 (residual stream)은 고정된 가중치로 모든 레이어의 출력을 더합니다. 깊이가 깊어질수록, 이전의 모든 계산은 하나의 누적된 상태로 압축됩니다.
Attention Residuals는 대신 각 레이어가 이전의 표현(representations)들을 참조(attend)할 수 있게 합니다. 완전한 AttnRes(Full AttnRes)는 모든 레이어의 출력을 유지하므로 메모리와 파이프라인 통신(pipeline communication) 비용을 증가시킵니다. K3는 Block AttnRes를 사용합니다:
- 레이어는 12개 단위의 블록(blocks)으로 그룹화됩니다.
- 블록 내부에서 출력들이 합산됩니다.
- 어텐션(attention)은 블록 수준의 표현(block-level representations) 위에서 동작합니다.
- 원래의 임베딩(embedding)은 주소 지정이 가능한 소스(addressable source)로 유지됩니다.
- 라이브 상태 메모리(live-state memory)가
O(Ld)에서O(Nd)로 감소합니다.
Moonshot의 별도 AttnRes 논문은 총 48B/활성 3B 규모의 더 작은 Kimi Linear 모델에서 스케일링 개선 사항을 보고했습니다. K3의 구성과 구현은 공개되어 있으나, 2.8T 규모에서의 효과가 독립적으로 재현되지는 않았습니다.
채널 믹싱(Channel mixing): Stable LatentMoE
7,168차원의 전체 은닉 상태(hidden state)를 16개의 전문가(experts)에게 보내면 통신 및 가중치 트래픽이 실행의 대부분을 차지하게 됩니다. LatentMoE는 라우팅된 경로(routed path)를 3,584 너비로 투영(project)하고, 해당 공간에서 특화된 전문가들을 실행한 뒤, 결과를 다시 투영합니다. 두 개의 공유 전문가(shared experts)는 전체 너비의 경로를 유지합니다.
이 설계를 896개의 라우팅된 전문가로 확장하면서 두 가지 문제, 즉 활성화 이상치(activation outliers)와 불안정한 부하 분산(load balancing)이 노출되었습니다.
Moonshot은 첫 번째 문제를 다음과 같이 해결합니다:
- 라우팅된 전문가의 집계(aggregation)와 업-프로젝션(up-projection) 사이에
RMSNorm적용 - SwiGLU 대신 SiTU-GLU 사용
SiTU는 두 곱셈 분기(multiplicative branches) 모두에 부드러운 tanh 캡(caps)을 적용합니다. K3는 4와 25의 경계값을 사용하여 곱의 크기를 100으로 제한합니다. 0 근처에서는 SwiGLU와 유사하게 동작하며, 큰 양수 입력에 대해서는 이차적 성장(quadratic growth)을 방지합니다.
분위수 균형(Quantile Balancing)은 전문가의 부하를 처리합니다. 전문가별 편향(bias)은 Top-k 디스패치(dispatch)에 영향을 미치지만 혼합 가중치(mixture weights)에서는 제외되므로, 라우터 그래디언트(router gradients)를 직접적으로 변경하지 않습니다. 다음 편향은 각 전문가에게 목표 토큰 수를 부여하는 마진 분위수(margin quantile)로부터 유도됩니다.
정확한 전역 분위수(global quantile)를 계산하는 것은 비용이 많이 듭니다. 워커(Worker)들은 전문가(expert)별로 히스토그램을 구축하고, 하나의 all-reduce를 통해 빈(bin)을 결합합니다. 이 업데이트는 수동으로 조정된 편향(bias) 단계 대신 목표 부하(target load)에 직접 연결됩니다.
시작부터 적용된 네이티브 멀티모달리티 (Native multimodality)
MoonViT-V2는 동일한 다음 토큰 예측 목적 함수(next-token objective) 하에서 언어 백본(language backbone)과 함께 처음부터(from scratch) 학습되었습니다. Moonshot은 SigLIP 초기화 방식을 탈피했는데, 이는 사전 학습된 인코더(pretrained encoder)를 부착했을 때 내부 실행 결과에서 비전 타워(vision-tower)의 그래디언트 노름(gradient norms)이 더 크고 빈번한 스파이크(spikes)가 발생하는 것을 확인했기 때문입니다.
비전 경로는 다음을 사용합니다:
- 27개 레이어, 약 0.4B 파라미터의 ViT;
- 별도의 공간(spatial) 및 시간(temporal) 어텐션(attention) 패스;
- 공유된 이미지 및 비디오 파라미터;
- 시간적 풀링(temporal pooling);
- 시각적 토큰(visual-token) 수를 4분의 1로 줄이는 2×2 픽셀 셔플(pixel shuffle);
- 최대 3584×3584 픽셀의 입력.
보고서에는 내부 그래디언트(gradient) 플롯이 포함되어 있으며, 처음부터 학습된 모델이 비전 평가에서 SigLIP로 초기화된 베이스라인(baseline)과 일치했다고 명시되어 있습니다. 다만, 완전한 수치적 절제 연구(ablation)나 독립적인 재현 결과는 제공하지 않습니다.
100만 토큰 달성
K3는 처음부터 최대 길이로 학습하지 않았습니다:
사전 학습(pre-training) 중: 8K -> 64K
쿨다운(cooldown) 중: 256K -> 1M
비용이 많이 드는 긴 시퀀스(long-sequence) 단계는 전체 예산의 아주 작은 부분만을 소비합니다. 긴 문서와 비디오는 중복, 이진 데이터(binary data), 잘림(truncation), 유효하지 않은 로그, 저품질 세그먼트(segments)를 기준으로 필터링되었습니다.
Moonshot은 또한 필요한 증거가 전체 컨텍스트(context)에 걸쳐 분산되어 있는 작업들을 합성(synthesize)했습니다. 시퀀스 길이만으로는 장거리 검색(long-range retrieval)을 학습시킬 수 없습니다. 모델은 여전히 로컬 패턴(local patterns)을 통해 연결된 많은 문서들을 해결할 수 있기 때문입니다.
보고서는 Kimi K2 대비 약 2.5배의 스케일링 효율성(scaling-efficiency) 향상을 주장합니다. 해당 수치는 아직 재현 가능하지 않습니다. 공개된 그래프에는 수치적 실행 테이블, 정확한 손실(loss), 불확실성(uncertainty), 총 학습 FLOPs, 그리고 구성 요소별 절제 연구(component-level ablations)가 생략되어 있습니다. 아키텍처(Architecture), 데이터, 옵티마이저(optimizer), 모델 형태(model shape), 그리고 학습 스케줄(training schedule)이 모두 한꺼번에 변경되었습니다.
2.5배의 결과는 독립적으로 확립된 속성이라기보다는, 자체적인 스케일링 법칙 (scaling-law) 측정값으로 취급하는 것이 가장 적절합니다.
9개의 정책을 하나의 모델로 통합하는 사후 학습 (Post-training)
지도 미세 조정 (supervised fine-tuning) 이후, Moonshot은 다음 세 가지 영역에서 강화 학습 (reinforcement-learning) 전문가를 학습시켰습니다:
- 일반 추론 (general reasoning), 지식, 비전 (vision), 그리고 검색 (search);
- 어시스턴트, 연구, 그리고 작문을 위한 일반 에이전트 (general agents);
- 소프트웨어 엔지니어링, GPU 커널, 그리고 웹 개발을 위한 코딩 에이전트 (coding agents).
각 영역에는 low, high, max 추론 노력 (reasoning-effort) 변형 모델이 있었습니다. 다중 교사 온-폴리시 증류 (Multi-Teacher On-Policy Distillation)를 통해 이 9개의 정책을 하나의 모델로 통합했습니다.
부분적 롤아웃 (Partial rollouts)
장기 과제 (Long-horizon tasks)는 극심한 지연 요소 (stragglers)를 발생시킵니다. 하나의 궤적 (trajectory)은 수백 또는 수천 번의 도구 호출 (tool calls)을 실행할 수 있습니다.
K3의 RL 시스템은 설정 가능한 비율의 궤적이 완료되면 생성을 일시 중지합니다. 완료된 프롬프트 그룹은 정책 최적화 (policy optimization) 단계로 넘어가고, 완료되지 않은 롤아웃은 대기열에 추가되어 다음 반복 (iteration)에서 재개됩니다.
따라서 하나의 궤적은 여러 번의 정책 업데이트를 거치며 오래된 정보 (stale)가 될 수 있습니다. Moonshot은 각 업데이트를 국소적 이웃 (local neighborhood) 범위 내로 유지하기 위해 토큰별 정규화 (per-token regularization)를 사용합니다. 모델 상태와 외부 샌드박스 (sandbox) 상태가 모두 보존되므로, 에이전트는 작업을 재구성하는 대신 실제 작업을 이어서 수행합니다.
추론 예산 (Reasoning budgets)
콜드 스타트 (cold-start) 정책은 각 문제에 대한 기본 토큰 예산 (base token budget)을 추정합니다. tau × base_budget를 초과하는 궤적에는 -1의 보상 (reward)이 부여됩니다. Moonshot은 max-effort 정책에 대해 더 큰 tau 값으로 시작하여, high 및 low effort 정책에 대해서는 이를 점진적으로 감소 (anneal)시킵니다.
유사한 길이 제한이 생성형 보상 모델 (generative reward model)에도 적용되어, 장황한 후보군이 단순히 더 많은 텍스트를 생성한다는 이유만으로 승리하는 것을 방지합니다.
하네스 다양성 (Harness diversity) 및 검증기 (verifiers)
화이트박스 RL 환경은 도구, 시스템 프롬프트, 컨텍스트 관리 전략, 기술, 메모리, 그리고 서브 에이전트 (subagents)를 조합합니다. 학습 과정에서는 모델을 Kimi Code, Claude Code, 또는 Codex 스타일의 단일 프로토콜에 고정하는 대신, 이러한 모듈들을 교대로 회전시키며 학습합니다.
많은 환경이 결정론적(deterministic) 또는 숨겨진 검증기(verifier)를 통해 최종 상태를 점수화합니다. GPU 커널 작업은 정확성과 속도에 대한 보상(reward)을 캐시 재사용(cache reuse), CUDA 그래프 재생(CUDA graph replay), 정밀도 지름길(precision shortcuts)을 위한 탐지기와 결합합니다. 자율 작업(Autonomous tasks)은 검증기를 격리하고 제출 시도를 제한합니다.
이러한 학습 설정은 다음과 같은 반복 루프를 목표로 합니다:
reason -> act -> observe -> verify -> adapt
(추론 -> 행동 -> 관찰 -> 검증 -> 적응)
Moonshot이 사이버 보안 특화 인과적 절제 연구(causal ablation)를 발표하지는 않았지만, 이 루프는 K3가 강력한 장기적 코딩(long-horizon coding) 및 취약점 연구(vulnerability-research) 동작을 보이는 타당한 설명이 됩니다.
3T급 MoE를 위한 인프라
K3는 파이프라인(pipeline), 전문가(expert), 데이터(data), 그리고 컨텍스트 병렬성(context parallelism)을 결합합니다. 전문가 병렬성(Expert parallelism)에는 피할 수 없는 부하(load) 문제가 있습니다. 라우터(router)가 서로 다른 토큰 수를 서로 다른 워커(worker)에게 보내기 때문에, 장치의 유휴 상태, 랭크(rank) 과부하, 동적 텐서 형상(dynamic tensor shapes), 그리고 메모리 파편화(memory fragmentation)가 발생합니다.
MoonEP는 과부하된 전문가의 임시 복사본을 생성하여 모든 랭크에 정확히 S × K개의 토큰을 할당합니다. Moonshot은 랭크당 E/R개의 중복 전문가라는 상한선(upper bound)을 증명하여, 실행 가능한 균형 잡힌 계획이 존재함을 보장합니다.
완벽한 균형은 다음과 같은 사항을 가능하게 합니다:
- 정적 계산 형상(static computation shapes);
- 전문가 크기를 파악하기 위한 레이어별 호스트 동기화(host synchronization) 불필요;
- 고정된
S × K통신 버퍼(communication buffer); - 최종 전문가 그룹화된 위치로의 제로 카피(zero-copy) 디스patch.
MoonEP 리포지토리에는 CUDA 코드와 멀티 GPU 테스트가 포함되어 있습니다. 출시 당시에는 커밋이 하나뿐이었으며, DeepEP와의 성능 비교는 자체적인 H20 벤치마크로 남아 있었습니다.
KDA는 일반적인 선형 어텐션(linear attention)과는 다른 형태의 컨텍스트 병렬성을 요구합니다. 각 시퀀스 세그먼트는 다음을 방출합니다:
- 유입되는 상태(incoming state)에 작용하는 누적 전이(cumulative transition);
- 제로(zero)로부터 로컬하게 생성된 상태(state).
이러한 아핀 전이(affine transitions)는 접두사 스캔(prefix scan)과 결합하여 결합 법칙(associatively)을 따릅니다. 워커(Workers)들은 시퀀스 길이(sequence length)에 따라 증가하는 KV 블록 대신 고정된 크기의 파편(fragments)을 교환합니다. 구현 및 분산 정밀도 테스트(distributed correctness tests)는 flash-linear-attention에 병합되었습니다.
에이전트 강화학습 (RL)을 위한 지속 가능한 샌드박스 (Persistent sandboxes)
긴 롤아웃(rollouts)에는 살아있는 외부 환경이 필요합니다. Moonshot의 AgentENV는 Firecracker 마이크로VM(microVMs)을 사용하는데, 이는 고급 작업에 마운트(mounts), 중첩된 컨테이너(nested containers), 가상 머신(virtual machines)이 필요하기 때문이며, 일반적인 컨테이너는 충분한 격리(isolation)를 제공하지 못했기 때문입니다.
이 시스템은 다음을 지원합니다:
- 일시 정지(pause) 및 재개(resume);
- 부작용 없는(side-effect-free) 보상 평가를 위한 포크(fork);
- 복구를 위한 스냅샷(snapshots);
- 더티 메모리 페이지(dirty memory pages)를 저장하는 증분 체크포인트(incremental checkpoints);
- OverlayBD 기반의 이미지 배포.
Moonshot은 체크포인트 지연 시간(latency)이 133ms만큼 낮고, 재개 지연 시간은 49ms만큼 낮으며, 최대 6.5배의 메모리 오버커밋(memory overcommit)이 가능하다고 보고했습니다. 이러한 성능 수치와 보고된 5,100만 건의 샌드박스 실행 건수는 독립적으로 재현되지 않았습니다.
두 가지 호환되지 않는 캐시 유형 서빙 (Serving two incompatible cache types)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기