Kimi K3 모델 가중치 및 기술 문서 공개: 2.8T 오픈 모델의 아키텍처와 학습 레시피 심층 분석

Kimi K3 기술 문서 소개

건물을 더 높이 올리려면 층을 더 쌓는 것만으로는 되지 않습니다. 어느 높이를 넘어서면 기둥의 재질, 배관이 물을 끌어올리는 방식, 엘리베이터의 배치까지 전부 다시 설계해야 합니다. 지금까지 오픈 웨이트 모델의 규모 경쟁은 층수를 늘리는 이야기에 가까웠습니다.

Kimi K3 기술 문서문샷 AI(Moonshot AI)가 총 2.78 조 개(활성 1042 억 개) 매개변수 규모의 네이티브 멀티모달 전문가 혼합(Mixture of Experts, MoE) 모델을 어떻게 설계하고 학습시켰는지를 정리한 문서입니다. 오픈 웨이트 모델이 1 조급 규모에서 정체된 사이 상용 모델과의 격차가 벌어지는 문제를 두 가지 방향에서 동시에 풀려는 시도로, 사전 학습 토대를 이른바 3 조급(3T-class)까지 밀어올리는 동시에 강화학습과 추론 강도(reasoning effort), 그리고 100 만 토큰 컨텍스트에서 이루어지는 긴 호흡 상호작용까지 함께 확장했습니다.

이미 커뮤니티에는 Kimi K3 발표 시점의 소개 글이 정리되어 있습니다. 당시에는 기술 블로그 수준의 정보와 "전체 가중치는 7월 27일까지 공개" 라는 약속만 있었는데, 그 약속은 지켜졌고 Hugging Face 저장소에 가중치와 함께 47 쪽 분량의 기술 문서가 올라왔습니다. 이 글은 그 문서를 바탕으로, 발표 당시에는 이름만 나열되었던 KDA, AttnRes, Stable LatentMoE, Quantile Balancing, MoonEP 같은 구성요소가 각각 어떤 문제를 풀기 위해 무슨 수식과 무슨 하이퍼파라미터로 들어갔는지를 살펴봅니다.

스케일링의 두 축, 그리고 한쪽만 달린 오픈 생태계

대형 언어 모델(Large Language Model, LLM)의 발전은 오랫동안 하나의 축을 따라 진행되었습니다. 더 큰 모델을 더 많은 데이터로 학습시키는, 다시 말해 배포 전에 연산을 투입하는 방식입니다. Scaling LawsChinchilla가 이 축의 문법을 정리했습니다.

추론(reasoning) 모델의 등장은 두 번째 축을 열었습니다. OpenAI의 o 시리즈는 강화학습과 테스트 시점 추론을 함께 확장했고, Anthropic의 확장 사고(extended thinking) 모델은 적응적인 사고 예산을 배분하며 추론과 도구 사용을 교차시켰습니다. DeepSeek-R1과 Kimi K1.5는 대규모 강화학습만으로도 정교한 추론 행동을 끌어낼 수 있음을 보였고, Kimi K2.5 Agent Swarm은 순차적 추론을 병렬 에이전트 협조로까지 확장했습니다.

문제는 오픈 생태계가 이 두 축 중 두 번째 축에만 빠르게 올라탔다는 점입니다. 문서가 지적하는 진단은 이렇습니다. 최근 공개 모델들은 1 조급 매개변수 영역 안팎에 머물러 있고, 그 비슷한 규모의 사전 학습 토대 위에 점점 더 정교한 추론 및 에이전틱 강화학습 기법이 얹히고 있습니다. 그러면 오픈 모델들의 성능은 서로 수렴하는 반면, 가장 강력한 상용 시스템과의 격차는 벌어질 위험이 있습니다.

Kimi K3의 발상은 두 축을 함께 밀어붙이는 것입니다. 다만 규모를 2.7 배로 키우는 것만으로는 답이 되지 않습니다. 같은 아키텍처를 그대로 키우면 연산 비용과 학습 불안정성이 함께 커지기 때문입니다. 그래서 이 문서의 절반 이상은 "규모를 키우면서도 연산 대비 지능 전환 효율을 어떻게 올렸는가" 에 대한 이야기이고, 그 결론이 Kimi K2 대비 약 2.5\times 의 스케일링 효율 개선입니다.

한눈에 보는 Kimi K3

항목
아키텍처 전문가 혼합(MoE), 네이티브 멀티모달
총 매개변수 / 활성 매개변수 2.78T / 104.2B
레이어 수 93 (밀집 레이어 1개 포함)
어텐션 레이어 구성 KDA 69개 + Gated MLA 24개
히든 차원 / 어텐션 헤드 7,168 / 96
잠재 MoE 차원 3,584 (히든의 0.5배)
전문가당 MoE 히든 차원 3,072
라우팅 전문가 / 토큰당 활성 / 공유 전문가 896 / 16 / 2
어휘 크기 160K
컨텍스트 길이 1,048,576
활성화 함수 SiTU-GLU
비전 인코더 MoonViT-V2 (401M, 27층, 패치 14)
양자화 MXFP4 가중치 / MXFP8 활성값 (양자화 인식 학습)

아키텍처: 토큰, 깊이, 폭 세 방향으로 정보 흐름 확장

Kimi K3의 아키텍처를 이해하는 가장 좋은 틀은 "정보가 흐르는 세 가지 방향" 입니다. 시퀀스 길이 방향으로는 하이브리드 어텐션이, 네트워크 깊이 방향으로는 Attention Residuals(AttnRes) 가, 모델 폭 방향으로는 Stable LatentMoE 가 각각 정보 흐름을 확장합니다. 여기에 입력단의 네이티브 비전 경로가 붙습니다.

시퀀스 방향: KDA와 Gated MLA의 3:1 하이브리드

Kimi K3는 선형 어텐션과 전역 어텐션을 레이어 단위로 섞습니다. 한 블록은 Kimi Delta Attention(KDA) 레이어 3 개와 Gated MLA 레이어 1 개로 구성되고, 이 3:1 패턴이 백본 전체에 반복됩니다. 공개된 설정 파일을 보면 전역 어텐션이 배치된 레이어는 4, 8, 12, \ldots, 92 번째이고, 여기에 백본 맨 끝에 Gated MLA 레이어 하나가 더 붙어 마지막 레이어는 항상 전역 어텐션을 수행합니다. 그래서 총 93 개 레이어가 KDA 69 개와 Gated MLA 24 개로 갈립니다.

이 배치의 의도는 분업입니다. 긴 시퀀스에서 토큰을 섞는 값싼 작업은 고정 크기 상태를 가진 KDA가 맡고, 위치에 무관하게 임의의 토큰끼리 상호작용해야 하는 값비싼 작업은 주기적으로 등장하는 MLA가 맡습니다.

Kimi Delta Attention: 채널별 망각 게이트를 얹은 델타 규칙

KDA는 Kimi Linear에서 도입된 어텐션으로, 델타 규칙(delta rule) 재귀에 채널별 망각 게이트를 결합한 형태입니다. 하나의 헤드만 놓고 보면, 쿼리와 키 q_t, k_t \in \mathbb{R}^{d_k} , 값 v_t \in \mathbb{R}^{d_v} , 재귀 상태 S_t \in \mathbb{R}^{d_k \times d_v} 에 대해 다음과 같이 갱신됩니다.

S_t = \left(I - \beta_t k_t k_t^\top\right)\mathrm{Diag}(\alpha_t)\,S_{t-1} + \beta_t k_t v_t^\top, \qquad \tilde{o}_t = S_t^\top q_t

여기서 \alpha_t \in (0,1)^{d_k} 는 채널별 한 스텝 보존 계수이고, \beta_t \in (0,1) 은 델타 규칙의 쓰기 강도를 조절합니다. 즉 이전 상태를 채널마다 다른 비율로 잊은 뒤, 새 키가 차지할 자리를 비워 두고 값을 써넣는 구조입니다. 마치 칠판에 새 내용을 적기 전에 겹치는 부분만 골라 지우는 것과 비슷합니다.

쿼리와 키, 값 투영에는 짧은 합성곱(ShortConv, 커널 크기 4 )과 Swish가 차례로 적용되고, 쿼리와 키는 추가로 L2 정규화됩니다. 감쇠 로짓 z_t^h 는 저랭크 투영과 헤드별 편향으로 만들어져, 키 채널마다 세밀한 감쇠를 부여합니다.

학습과 프리필(prefill)에서는 청크 단위 병렬 형태를 씁니다. 청크 안에서는 병렬로, 청크 사이에서는 재귀적으로 계산하는 방식으로, 청크 t 의 출력은 이전 청크에서 넘어온 상태를 반영하는 항과 청크 내부 상호작용을 담당하는 항의 합으로 표현됩니다.

O_{[t]} = \underbrace{(\Gamma^{1 \to C}_{[t]} \odot Q_{[t]})S_{[t]}}_{\text{청크 간}} + \underbrace{A_{[t]}\tilde{V}_{[t]}}_{\text{청크 내}}

하한이 있는 감쇠: 대각 타일을 다시 텐서 코어로

여기서 Kimi K3가 Kimi Linear에 가한 첫 번째 변경이 등장합니다. 위 청크 단위 계산은 키를 누적 감쇠의 역수 1/\Gamma^{1 \to C}_{[t]} 로 다시 스케일하는데, 누적 감쇠는 (0,1) 구간 값들의 곱이므로 역수가 한없이 커져 유한 정밀도에서 오버플로를 일으킬 수 있습니다. Kimi Linear는 이 문제를 로그 공간에서 상대 감쇠를 계산하고 청크를 16 토큰 단위 타일로 다시 쪼개는 방식으로 막았습니다. 그런데 이렇게 하면 비대각 타일은 조밀 행렬곱으로 텐서 코어에서 처리할 수 있지만, 대각 타일은 여전히 위치 쌍마다 명시적으로 계산해야 해서 청크 내부 연산의 주된 병목으로 남습니다.

Kimi K3는 감쇠 로짓에서 로그 감쇠로 가는 사상 자체를 바꿔 이 병목을 없앴습니다. Kimi Linear가 쓰던 음의 Softplus 사상 g_t^h = -e^{A_h}\mathrm{Softplus}(z_t^h) \in (-\infty, 0)^{d_k} 대신, 스케일된 시그모이드로 로그 감쇠에 하한을 둡니다.

g_t^h = g_{\min}\,\mathrm{Sigmoid}\!\left(e^{A_h} z_t^h\right) \in (g_{\min}, 0)^{d_k}, \qquad \alpha_t^h = \exp(g_t^h)

A_h 는 헤드별 학습 가능한 로그 스케일이고, g_{\min} = -5 로 고정됩니다. 공개된 설정 파일의 gate_lower_bound 값도 -5.0 으로 일치합니다. 이 값이 만드는 효과가 흥미롭습니다. 모든 보존 계수가 \alpha > e^{-5} \approx 6.7 \times 10^{-3} 을 만족하므로, 16 토큰 타일에 걸친 누적 로그 감쇠는 (-80, 0) 구간에 들어가고 역수 스케일 계수는 e^{80} 보다 작아 BF16의 동적 범위 안에 머무릅니다. 수치 범위가 유한하게 묶이니 대각 타일도 조밀 행렬곱으로 처리할 수 있게 되고, 위치 쌍 계산 경로가 통째로 사라집니다.

수치 안정성을 위한 제약 하나가 커널 성능 개선으로 이어진 셈인데, 이런 알고리즘과 시스템의 결합은 이 문서 전체를 관통하는 패턴입니다.

전랭크 출력 게이트

KDA의 두 번째 변경은 출력 게이트입니다. Kimi Linear는 저랭크로 매개화된 게이트를 썼지만, Kimi K3는 입력 의존적인 전랭크(full-rank) 투영으로 바꿨습니다. 헤드별 RMSNorm을 거친 재귀 출력에 데이터 의존 게이팅을 적용합니다.

y_t = W_o\left[\mathrm{Sigmoid}(W_g x_t) \odot \mathrm{RMSNorm}(\tilde{o}_t)\right]

Gated MLA와 NoPE: 위치 인코딩을 지우다

전역 어텐션 레이어는 DeepSeek-V2에서 도입된 다중 헤드 잠재 어텐션(Multi-head Latent Attention, MLA) 을 씁니다. 토큰마다 키와 값 표현을 저차원 잠재 벡터로 압축해 캐시하고, 어텐션 계산 시점에 학습된 상향 투영으로 복원하는 방식입니다. 공개된 설정에서 잠재 차원은 512 , 쿼리 측 저랭크 차원은 1536 입니다.

Kimi K2, Kimi K2.5와 달라진 지점은 두 가지입니다. 첫째, 모든 MLA 레이어에 NoPE(No Position Encoding) 를 적용해 쿼리와 키에 어떤 명시적 위치 인코딩도 넣지 않습니다. 위치 정보는 사이사이의 KDA 레이어가 재귀 게이팅과 감쇠로 암시적으로 제공하고, MLA 레이어는 제약 없는 전역 내용 상호작용만 담당합니다. 이 분업의 실용적 이득이 큽니다. 컨텍스트를 늘릴 때 RoPE 주파수 베이스를 다시 조정하거나 YaRN 같은 보간을 적용할 필요가 없어, 100 만 토큰까지 그대로 외삽됩니다.

둘째, MLA에도 입력 의존적인 채널별 전랭크 출력 게이트를 붙였습니다. 각 토큰이 전역 어텐션에서 읽어 오는 채널을 스스로 조절하게 하는 장치입니다.

여기에 학습 정밀도와 관련한 세부 사항이 하나 더 있습니다. 플래시 어텐션에서 발생하는 편향된 반올림 오차를 바로잡기 위해 어텐션 출력을 학습 중 FP32로 유지하는데, 이러면 출력 타일의 온칩 메모리 사용량이 두 배가 됩니다. 그래서 학습 커널을 다시 설계해 출력 타일을 쿼리 타일 대신 KV 스테이징 버퍼와 겹치도록 배치하고, 확보된 공유 메모리를 더 깊은 KV 파이프라인에 투입했습니다.

깊이 방향: 표준 잔차 연결을 어텐션으로 바꾸기

표준 잔차 연결(residual connection)은 깊이 방향의 모든 이전 정보를 하나의 상태 h_l 로 압축합니다. 문서는 이를 "시간 축을 따르는 RNN을 떠올리게 하는 병목" 이라고 표현합니다. 시퀀스 모델링에서는 트랜스포머가 재귀를 어텐션으로 대체하면서 각 위치가 이전 모든 위치에 데이터 의존적 가중치로 접근할 수 있게 되었는데, Attention Residuals(AttnRes)는 같은 방법론을 깊이 축에 적용합니다. 각 레이어가 이전 모든 레이어의 표현을 균일하게 누적하는 대신 선택적으로 끌어오는 것입니다.

완전한 형태에서는 레이어마다 학습 가능한 의사 쿼리(pseudo-query) q_l = w_l 을 두고, 키와 값은 토큰 임베딩과 이전 레이어들의 출력으로 둡니다. 어텐션 가중치는 소프트맥스 커널 \phi(q,k) = \exp\left(q^\top \mathrm{RMSNorm}(k)\right) 를 따르며, 여기서 RMSNorm은 출력 크기가 큰 레이어가 가중치를 독점하는 것을 막습니다.

\alpha_{i \to l} = \frac{\phi(q_l, k_i)}{\sum_{j=0}^{l-1}\phi(q_l, k_j)}, \qquad h_l = \sum_{i=0}^{l-1}\alpha_{i \to l} \cdot v_i

네트워크 깊이가 L < 100 정도라면 O(L^2 d) 연산량은 감당할 수 있습니다. 실제 부담은 모든 레이어 출력을 살려 둬야 하는 O(Ld) 메모리와, 파이프라인 병렬화 상황에서 발생하는 스테이지 간 통신입니다.

그래서 실제로는 Block AttnRes 를 씁니다. L 개 레이어를 N 개 블록으로 나누고, 블록 내부에서는 레이어 출력을 합으로 줄여 하나의 표현 b_n 으로 만든 뒤, 블록 사이에서만 N 개 블록 수준 표현에 대해 완전 어텐션을 수행합니다. 이러면 메모리와 통신 부담이 O(Ld) 에서 O(Nd) 로 떨어집니다. 덧붙여 이 블록 구조는 추론 시점의 상태 크기에도 상한을 두므로, 병렬로 계산한 블록 간 결과와 순차적으로 누적한 블록 내 부분합을 온라인 소프트맥스로 병합할 수 있어 추론 비용이 크게 줄어듭니다.

경험적으로 N \approx 8 정도면 대부분의 이득을 회수한다고 하며, Kimi K3는 레이어를 블록 크기 12 로 나눠 8 개 블록을 만들었습니다. 마지막 블록이 부분 블록이 되고 임베딩 레이어를 세면 총 9 개가 됩니다. 공개된 설정 파일의 attn_res_block_size 값도 12 로 일치합니다.

폭 방향: Stable LatentMoE와 희소도 56

전문가 풀과 활성 전문가 수를 동시에 늘리면 전문가가 분업할 수 있는 공간이 넓어집니다. 그런데 통상적인 MoE에서는 선택된 전문가마다 d 차원 토큰 표현을 그대로 받으므로, 통신량과 전문가 가중치 트래픽이 라우팅 다중도에 비례해 늘어납니다. 전문가를 384 개에서 896 개로, 토큰당 활성 전문가를 8 개에서 16 개로 함께 늘리는 Kimi K3의 계획은 이 방식으로는 성립하지 않습니다.

LatentMoE의 아이디어는 모델 전체 폭과 라우팅 전문가의 폭을 분리하는 것입니다. 레이어 자체는 DeepSeekMoE의 공유 전문가와 라우팅 전문가 조직을 따르는데, 공유 전문가는 공통 변환을 담당하며 전체 폭 경로를 유지하고, 전문화된 라우팅 전문가는 폭 \ell 의 압축된 잠재 공간에서 동작합니다. Kimi K3는 잠재 차원을 3584 , 즉 히든 차원 7168 의 절반으로 두었습니다. 이렇게 해서 토큰당 896 개 중 16 개를 활성화하는, 희소도 56 의 채널 혼합이 가능해집니다.

u = \sum_{i \in T_k(x)} p_i E_i^{\text{routed}}(W_\downarrow x), \qquad y = \sum_{j=1}^{N_s} E_j^{\text{shared}}(x) + W_\uparrow \mathrm{RMSNorm}(u)

문제는 이 극단적 희소성이 기본 설계의 두 가지 실패 모드를 증폭시킨다는 점입니다. 첫째, 라우팅 경로는 하향 투영 W_\downarrow , 게이트가 있는 다분기 전문가 피드포워드 네트워크, 상향 투영 W_\uparrow 가 이어져 사실상 네 번의 연속 행렬곱이 됩니다. 이 조건수 나쁜 구조가 2.8 조 규모와 만나면 라우팅 분기의 내부 활성값이 폭발합니다. 둘째, 10^3 에 가까운 전문가의 부하를 균형 맞추는 일은 기존 보조 손실 없는 편향 갱신 방식이 잘 동작하는 범위를 벗어납니다.

Stable LatentMoE는 이 두 실패 모드를 세 가지 구성요소로 막습니다.

정규화된 LatentMoE

원래의 LatentMoE는 집계된 라우팅 표현 u 에 상향 투영을 곧바로 적용하는데, u 의 크기는 어떤 전문가가 선택되었고 라우팅 가중치가 얼마인지에 따라 흔들립니다. Kimi K3는 전문가 집계와 상향 투영 사이에 RMSNorm을 끼워 넣어, 전체 폭 공유 분기와 합쳐지기 전에 라우팅 분기의 스케일 민감도를 낮춥니다. 문서는 이 RMSNorm이 학습 안정화를 넘어 검증 손실과 다운스트림 벤치마크까지 일관되게 개선했다고 밝힙니다. 공개된 설정 파일에서도 latent_moe_use_norm 이 참으로 설정되어 있습니다.

SiTU-GLU: 곱해지는 두 항 모두에 상한을 씌우기

게이트 선형 유닛(Gated Linear Unit, GLU) 계열에서 널리 쓰이는 SwiGLU는 게이트와 값 분기 모두가 상한이 없습니다. 그래서 두 분기의 큰 좌표가 우연히 겹치면 활성값 이상치가 생기고 저정밀도 연산에서 오버플로 위험이 커집니다. 반대로 원래 GLU의 시그모이드 게이트는 무한 성장을 막지만, Swish가 가진 양의 영역의 거의 선형적인 응답 특성을 잃습니다.

SiTU-GLU(Sigmoid Tanh Unit GLU) 는 두 요구를 함께 만족시키려는 설계로, 매끄러운 상한 함수 \mathrm{softcap}(x, \beta) = \beta\tanh(x/\beta) 를 Swish 게이트의 선형 항과 상향 분기에 각각 독립적으로 적용합니다.

\text{SiTU-GLU}(x) = \beta_1 \tanh\!\left(\frac{W_g x}{\beta_1}\right) \odot \mathrm{Sigmoid}(W_g x) \odot \beta_2 \tanh\!\left(\frac{W_u x}{\beta_2}\right)

Kimi K3는 게이트 분기에 \beta_1 = 4 , 상향 분기에 \beta_2 = 25 를 씁니다. 스케일된 하이퍼볼릭 탄젠트는 원점 근처에서 거의 선형이고 큰 크기에서 유계이므로, 원점 근처에서는 SwiGLU의 응답을 그대로 보존하면서 곱의 두 항을 모두 통제합니다. 출력은 |f(x)| \le \beta_1\beta_2 = 100 으로 묶입니다. 공개된 설정 파일의 activation_situ_betaactivation_situ_linear_beta 도 각각 4.025.0 으로 일치합니다.

부록의 분석은 이 설계의 성질을 좀 더 분명히 해 줍니다. 스케일된 하이퍼볼릭 탄젠트는 원점 근처에서 \beta\tanh(z/\beta) = z + O(z^3/\beta^2) 이므로, SiTU-GLU는 원점 주변에서 SwiGLU와 1 차까지 일치하고 \beta_1, \beta_2 \to \infty 극한에서는 점별로 SwiGLU를 그대로 복원합니다. SwiGLU의 형태를 버리지 않으면서 상한만 얹은 구조라는 뜻입니다. 앞서 언급한 출력 상한 \|\text{SiTU-GLU}(x)\|_\infty \le \beta_1\beta_2|\tanh(z)| < 10 < \mathrm{Sigmoid}(z) < 1 에서 곧바로 따라 나옵니다. 여기서 왜 하드 클램핑이 아닌가 라는 질문이 남는데, 게이트 사전 활성값을 딱 잘라내는 방식과 달리 매끄러운 상한은 포화 경계에서 떨어진 구간의 경사를 0 으로 만들지 않으며, 문샷은 이 점이 학습 거동을 더 좋게 만든다고 밝힙니다. 활성화 함수의 같은 트레이드오프를 다르게 매개화한 최근 시도로는 PowLU가 있습니다.

Quantile Balancing: 부하 균형을 하이퍼파라미터에서 분위수로

Kimi K3는 보조 손실 대신 DeepSeek-V3식 보조 손실 없는 라우팅을 씁니다. 토큰 x_i 에 대해 라우터가 점수 s_i = \mathrm{Sigmoid}(W_r x_i) 를 계산하고, 여기에 전문가별 편향 b_j 를 더한 값으로 상위 k 개를 고릅니다. 편향은 혼합 가중치 p_{i,j} 계산에서는 제외되므로, 라우터의 경사 기반 최적화를 건드리지 않고 분배만 조절합니다.

원래 방법은 이 편향을 고정 스텝 규칙 b_j^{(t+1)} = b_j^{(t)} + \gamma\,\mathrm{sign}(\bar{\ell} - \ell_j) 로 갱신합니다. 문제는 \gamma 가 느린 적응과 부하 진동 사이의 트레이드오프를 결정하는 민감한 하이퍼파라미터라는 점입니다. 레이어당 라우팅 전문가가 896 개까지 늘어나면 이 트레이드오프가 훨씬 까다로워집니다. 라우팅이 불균형하면 전문가 병렬 학습이 느려지고, 일부 전문가는 제대로 학습되지 못한 채 남습니다.

Quantile Balancing(QB) 은 편향을 목표 부하에 대응하는 라우터 점수 분위수(quantile)에서 직접 유도합니다. 토큰 m 개가 전문가 n 개로 상위 k 개 선택을 통해 라우팅되면 전문가당 목표 부하는 q := mk/n 입니다. QB는 단 한 번의 순방향 계산으로 다음 편향을 얻습니다. 라우팅에서 상위 k 대신 상위 k+1 개를 취하면, 앞의 k 개는 실제 선택된 경로이고 k+1 번째 항목은 어떤 전문가가 토큰 i 의 상위 k 에 들어가기 위해 넘어야 하는 컷오프 \alpha_i^{(t)} 가 됩니다. 이 컷오프를 고정한 뒤 전문가 j 가 정확히 목표 부하를 받도록 편향을 정하면, 그 값은 마진 s_{:,j} - \alpha^{(t)}(1 - k/n) 분위수로 떨어집니다.

\hat{b}_j^{(t+1)} \leftarrow -\,\mathrm{quantile}_{1-k/n}\!\left(s_{:,j} - \alpha^{(t)}\right), \qquad b^{(t+1)} \leftarrow \hat{b}^{(t+1)} - \mathrm{mean}\!\left(\hat{b}^{(t+1)}\right)\mathbf{1}

두 번째 줄은 상위 k 선택을 바꾸지 않는 공통 오프셋을 제거하는 단계입니다. 인과성을 위해 갱신은 다음 스텝부터 적용되므로, 어떤 배치도 자기 자신에서 유도한 편향으로 라우팅되지 않습니다. 최종 편향은 추론 시점에 고정됩니다.

실제 규모에서는 한 가지 문제가 남습니다. 전역 배치의 마진은 수백만 개에 달하고 랭크와 누적 스텝에 흩어져 있어, 정확한 분위수를 위해 이를 모으는 것은 학습 시점에 현실적이지 않습니다. 그래서 각 전문가의 마진에 대한 히스토그램에서 분위수를 읽습니다.

빈 구간을 어디로 잡을지는 필요 편향(required bias) r_{i,j} := \alpha_i - s_{i,j} , 즉 전문가 j 를 토큰 i 의 컷오프에 정확히 올려놓는 편향을 히스토그램으로 쌓으면 자연스럽게 정해집니다. 라우터 점수가 시그모이드 출력이라 s_{i,j} \in (0,1) 이고 컷오프 \alpha_i 자체가 어떤 전문가의 편향된 점수이므로, 모든 r_{i,j} 는 현재 편향의 최소값과 최대값으로 묶인 구간 [b_{\min}-1,\ b_{\max}+1] 안에 들어갑니다. 이 구간을 B 개 균일 빈으로 나누고 매 스텝 범위를 다시 계산하므로, 편향이 불균형을 바로잡으려 퍼질 때 빈 폭도 따라갑니다. 순방향 패스마다 각 랭크가 지역 r_{i,j} 를 전문가별 카운트 행렬에 통신 없이 누적하고, 스텝 끝에 한 번의 올리듀스로 전역 히스토그램을 만든 뒤 누적 카운트가 목표 부하 q 에 처음 도달하는 빈을 골라 그 안에서 선형 보간합니다.

이 추정기가 실용적인 이유가 셋입니다. 첫째 정확합니다. 누적 카운트가 빈 경계에서 정확하므로 참 분위수와 추정값이 같은 빈에 들어가고 오차가 빈 폭으로 묶여, B = 1000 이면 오차가 최대 수 10^{-3} 수준이며 측정 가능한 잔여 부하 불균형이 관찰되지 않았습니다. 둘째 저렴합니다. 통신은 레이어당 스텝당 정수 nB 개의 올리듀스 한 번뿐이고 토큰 수 m 과 무관해서, 매 마이크로배치마다 원시 마진을 프로세스 그룹으로 교환하는 자연스러운 대안 대비 1\% 미만의 비용입니다. 셋째 옳은 양을 추정합니다. 카운트가 가산적이라 전역 히스토그램은 토큰을 어떻게 분할하든 정확히 불변이므로, 랭크별 분위수의 평균이 아니라 합쳐진 전역 배치의 분위수를 얻습니다. 여기에 추정 분위수의 지수 이동 평균을 유지하면 배치 간 샘플링 잡음이 줄어 부하 균형이 한층 더 좋아진다고 합니다.

QB는 왜 학습률이 필요 없는가

발표 당시 블로그에는 "휴리스틱 갱신과 민감한 균형 하이퍼파라미터를 제거" 라는 한 문장만 있었는데, 기술 문서의 부록은 그 문장의 근거를 유도로 풀어 놓았습니다. QB는 임시방편의 휴리스틱이 아니라 최대 점수 균형 배정(maximum-score balanced assignment) 문제의 정확한 좌표별 최소화입니다. 라우터 점수 s \in \mathbb{R}^{m \times n} 에 대해 각 토큰이 정확히 k 개 전문가를 고르고 각 전문가가 정확히 mk/n 개 토큰을 받는 제약 아래 점수 합을 최대화하는 정수 계획을 세웁니다. x_{i,j} \in \{0,1\}[0,1] 로 완화하면 선형 계획이 되고, 이분 그래프 b -매칭 다면체의 정수성 덕분에 최적해가 정수라서 완화가 정확합니다. 토큰 측과 전문가 측 등식 제약에 승수 \alpha_i\beta_j 를 붙여 쌍대 문제로 옮기면 다음의 볼록 목적함수가 나옵니다.

\min_{\alpha, \beta}\ \mathcal{L}(\alpha, \beta) := \sum_{i,j}\max\big(0,\ s_{i,j} - \alpha_i - \beta_j\big) + k\sum_i \alpha_i + \frac{mk}{n}\sum_j \beta_j

이 목적함수를 \alpha\beta 에 대해 번갈아 최소화하면 각 부분 문제가 닫힌 형태로 풀립니다. \beta 를 고정하면 문제가 토큰별로 분리되고, 목적함수는 \alpha 에 대해 조각별 선형이며 기울기가 k 에서 \alpha 를 넘는 마진 개수를 뺀 값이므로 정확히 k 개 마진이 \alpha 위에 놓일 때 최소가 됩니다. 그 값이 s_i - \beta(1-k/n) 분위수입니다. 앞에서 상위 k+1 라우팅으로 얻었던 컷오프 \alpha_i^{(t)} 가 바로 이 토큰 측 승수에 해당합니다. 대칭적으로 \alpha 를 고정하면 전문가 j 의 최소해는 s_{:,j} - \alpha 의 같은 분위수입니다. 토큰 축과 전문가 축에서 같은 분위수를 번갈아 취하는 것, 이것이 방법의 이름이 된 이유입니다.

여기서 두 가지 실용적 결론이 따라옵니다. 첫째, 최적점에서 선택되는 전문가는 정확히 s_i - \beta^* 의 상위 k 개이므로 라우팅에는 전문가 임계값 \beta (즉 편향 b = -\beta )만 필요하고, 토큰 임계값 \alpha 는 동적인 학습 배치에 묶인 중간 변수라 버려집니다. 이 비대칭 덕에 학습과 추론의 일관성이 유지됩니다. 배포 시점의 라우팅은 편향이 고정된 단순 상위 k 선택이고 분위수 계산이 전혀 필요 없습니다.

둘째, 기존의 부호 기반 갱신이 실은 무엇이었는지가 드러납니다. 전문가 측 부분 문제의 (부)경사는 목표 부하에서 관측 부하를 뺀 값이므로, 이 목적함수에 SignSGD를 적용하면 정확히 b_j^{(t+1)} = b_j^{(t)} + \gamma\,\mathrm{sign}(\bar{\ell} - \ell_j) 형태의 고정 스텝 갱신이 됩니다. 다시 말해 기존 방식은 부하 오차의 방향만 취하는 반면, QB는 같은 쌍대 목적함수의 정확한 좌표별 최소점으로 곧장 점프합니다. 학습률에 해당하는 하이퍼파라미터가 필요 없는 이유와, 전문가가 10^3 에 가까워도 몇 스텝 안에 평형에 도달하는 이유가 여기서 함께 설명됩니다. 계보를 보면 이 배정 관점은 BASE LayersBIP로 이어집니다. 다만 BIP는 부등식 제약으로 같은 배정을 풀기 때문에 갱신에 \max(0, \cdot) 클리핑이 붙는데, 그러면 과선택된 전문가를 누르기만 하고 과소선택된 전문가를 밀어 올리지 못해 문샷의 실험에서는 평형 도달이 뚜렷하게 느려졌습니다.

네이티브 비전: SigLIP 초기화를 버리고 처음부터 학습한 MoonViT-V2

Kimi K3는 텍스트와 이미지, 영상을 하나의 컨텍스트 안에서 공유 백본이 처리하는 네이티브 멀티모달 모델입니다. 사후에 모달리티를 정렬하는 단계가 없습니다. 이 설계가 이른바 "비전 인 더 루프(vision in the loop)" 행동의 아키텍처적 토대가 됩니다. 렌더링된 결과물과 그것을 만든 코드가 같은 토큰 스트림에 존재하므로, 모델이 코드를 쓰고 결과의 스크린샷이나 영상 프레임을 살펴본 뒤 사용자 인터페이스나 그래픽, 영상을 다시 손보는 과정이 모델 간 인계 없이 이어집니다.

가장 흥미로운 결정은 비전 인코더 MoonViT-V2 를 다음 토큰 예측만으로 처음부터 학습시켰다는 점입니다. Kimi K2.5를 포함한 기존 관행은 SigLIP처럼 대조 학습으로 사전 학습된 모델에서 비전 인코더를 초기화하는 것이었습니다. 사전 학습된 시각 지식이 출발선을 앞당겨 준다는 전제였습니다.

Kimi K3가 이 관행에서 벗어난 주된 이유는 학습 안정성입니다. 사전 학습된 인코더를 LLM에 붙이면 공동 최적화가 불안정해지는데, SigLIP으로 초기화한 MoonViT-3D는 학습 내내 경사 노름이 지속적으로 높고 스파이크가 잦았던 반면 MoonViT-V2는 안정적으로 유지되었습니다. 다음 토큰 예측으로 학습하면 인코더의 표현이 대조 손실이 아니라 언어 모델링 목적함수에 의해 직접 형성된다는 이점도 있습니다. 대조 손실은 세밀한 텍스트나 구조적 단서보다 전역 의미를 선호하는 경향이 있기 때문입니다.

결과적으로 MoonViT-V2는 비전 평가 전반에서 SigLIP 초기화 기준선과 대등했습니다. 문서는 이를 두고 "대조 사전 학습이 대규모 멀티모달 언어 모델의 초기화로 반드시 필요한 것은 아니다" 라고 정리합니다. 오픈 모델 설계에서 널리 받아들여진 기본값 하나를 실측으로 되짚은 결과입니다.

구조 자체는 Kimi K2.5의 비전 경로를 잇습니다. 시각 입력을 MoonViT-V2가 인코딩하고 경량 MLP 프로젝터가 LLM으로 사상합니다. MoonViT-V2는 약 4 억 개 매개변수 규모의 27 층 비전 트랜스포머로, RMSNorm을 채택하고 선형 및 어텐션 투영에서 모든 편향 항을 제거해 처음부터 학습하는 최적화를 한층 더 안정화했습니다. 이미지와 영상은 완전히 공유된 매개변수로 처리되며, 어텐션은 프레임 내 공간 패스와 프레임 간 시간 패스로 분해되고 시간 풀링이 시간 축을 따라 토큰을 추가로 압축합니다. 프로젝션 전에는 2 \times 2 다운샘플링 픽셀 셔플로 시각 토큰 수를 \frac{1}{4} 로 줄여, 최대 3584 \times 3584 픽셀 입력도 100 만 토큰 컨텍스트 안에서 감당할 수 있게 했습니다.

Per-Head Muon: 헤드마다 따로 직교화하기

Kimi K3는 Kimi K2에 이어 행렬 매개변수의 옵티마이저로 Muon을 씁니다. 어텐션 투영에 대해서는 이를 헤드별 변형으로 한 걸음 더 다듬었습니다. Q, K, V 투영 행렬 전체에 뉴턴-슐츠(Newton-Schulz) 직교화를 적용하는 대신, 모멘텀 행렬을 헤드 차원으로 분할해 각 헤드의 블록을 따로 직교화합니다.

직관은 이렇습니다. 전체 행렬을 직교화하면 모든 헤드를 하나의 결합된 블록으로 취급하게 되어, 경사나 모멘텀 스케일이 큰 헤드가 공유 갱신 방향을 독점하고 스케일이 작은 헤드는 충분히 정규화되지 않은 갱신을 받습니다. 헤드별 직교화는 헤드 간 갱신 스케일을 균등하게 맞춥니다. 실제로 헤드 간 학습 동역학이 더 균형 잡히고 큰 규모에서 학습 안정성이 개선되었으며, 세로로 긴 헤드별 블록에 대한 뉴턴-슐츠 반복이 전체 투영 행렬보다 저렴하므로 옵티마이저 오버헤드도 약간 줄었습니다.

사전 학습: 데이터, 스케일링 법칙, 그리고 4단계 컨텍스트 확장

데이터

Kimi K3의 텍스트 코퍼스는 웹 텍스트, 코드, 수학, 지식의 네 도메인으로 구성되고, 여기에 대규모 비전 코퍼스가 함께 들어갑니다. 각 도메인은 규칙 기반 휴리스틱, 분류기 기반 품질 점수, 중복 제거를 조합해 필터링되며 도메인별 샘플링 비율은 소형 모델로 수행한 소거 연구(ablation study)로 결정됩니다. Kimi K2의 재서술(rephrasing) 레시피를 따라 지식과 수학 코퍼스는 문체와 관점을 다양화한 프롬프팅, 청크 단위 자기회귀 생성, 원문 대조 충실도 검증을 거쳐 다시 쓰입니다.

비전 코퍼스는 캡션, 이미지와 텍스트가 교차된 문서, OCR, 지각, 영상, 시각 코딩 데이터를 포함합니다. 학습 중 좌표 지도(supervision)는 절대 좌표와 [0,1] 정규화 좌표 두 형식으로 모두 제공되어 정밀하면서도 해상도에 강건한 위치 지정을 가능하게 합니다. 눈에 띄는 부분은 프로그래밍 가능한 멀티모달 데이터를 대폭 확대했다는 점입니다. 코드 조각과 그것이 렌더링한 시각 결과물을 짝지어, SVG, 3D 자산, 웹페이지, 게임, CAD 도면 같은 도메인별 형식을 두루 다룹니다. 앞서 언급한 비전 인 더 루프 능력이 이 데이터에서 직접 길러진다고 볼 수 있습니다.

스케일링 법칙을 다시 탐색한 이유

아키텍처와 데이터, 학습 방식을 모두 바꾸면 최적 학습 영역 자체가 달라집니다. 그래서 문샷은 배치 크기, 학습률, 매개변수당 토큰 수(Tokens Per Parameter, TPP), 모델 형태 같은 핵심 하이퍼파라미터를 재조정하는 스케일링 법칙 연구를 별도로 수행했습니다. 분포 외(OOD) 검증 데이터로 평가한 결과, 이 개선들이 합쳐져 Kimi K2 대비 약 2.5\times 의 스케일링 효율 향상을 냈습니다.

여기서 나온 부수적 결론 하나가 실무자에게 유용합니다. 학습률 스케줄로 코사인 감쇠와 WSD(Warmup Stable Decay)를 비교했을 때, 문샷의 스케일링 법칙 연구는 일관되게 코사인 감쇠를 선호했습니다. 다만 그 비교 방법이 중요합니다. 선행 연구들은 WSD가 코사인 감쇠와 대등하거나 더 낫다고 보고했는데, 문샷의 관찰은 두 스케줄의 최적 하이퍼파라미터가 확연히 다르다는 것이었습니다. 같은 모델 크기와 학습 토큰 예산에서도 최적 최대 학습률과 배치 크기가 상당히 달랐습니다. 그래서 하나의 하이퍼파라미터 세트를 공유해 비교하면 그 값과 더 잘 맞는 쪽이 부당하게 유리해집니다. 각 스케줄에 대해 독립적인 스케일링 법칙 탐색을 수행한 뒤 각자의 최적 설정에서 비교하자, 코사인 감쇠가 일관되게 더 낮은 최종 손실에 도달했습니다.

Kimi K2와 Kimi K3의 구조 비교

항목 Kimi K2 Kimi K3 변화
레이어 수 61 93 52% 증가
총 매개변수 1.04T 2.78T 167% 증가
활성 매개변수 32.6B 104.2B 220% 증가
히든 차원 7,168 7,168 동일
잠재 MoE 차원 없음 3,584 (0.5배) 신규
전문가당 MoE 히든 차원 2,048 3,072 50% 증가
라우팅 전문가 384 896 133% 증가
토큰당 활성 전문가 8 16 100% 증가
공유 전문가 1 2 100% 증가
어텐션 헤드 64 96 50% 증가
학습 컨텍스트 길이 128K 1M 8배
어텐션 메커니즘 MLA 하이브리드 KDA-MLA 변경
활성화 함수 SwiGLU SiTU-GLU 변경
어텐션 레이어 구성 MLA 61 KDA 69 + MLA 24 변경
ViT 없음 401M, 27층 신규

학습 레시피와 4단계 컨텍스트 확장

학습은 언어와 비전을 처음부터 함께 최적화하는 네이티브 멀티모달 전략을 따릅니다. 사전 학습된 언어 모델에 비전 인코더를 접붙이고 사후 정렬 단계를 두는 방식이 아니라, 시각 토큰과 텍스트 토큰을 하나의 다음 토큰 예측 목적함수 안에서 교차시켜 공유 백본이 처음부터 통합된 멀티모달 표현을 학습하게 합니다.

최적화는 Per-Head Muon과 Kimi K2에서 도입된 가중치 클리핑을 함께 쓰고, MoE 부하 균형에는 QB를 씁니다. 학습률은 1\% 선형 예열을 둔 코사인 스케줄이고 가중치 감쇠는 전 구간 0.1 입니다.

컨텍스트 확장은 네 단계 커리큘럼으로 이루어집니다. 사전 학습에서 8 K로 시작해 64 K로 넓히고, 쿨다운 단계에서 256 K에서 100 만 토큰까지 확장합니다. 비용이 큰 긴 시퀀스 연산을 전체 학습 예산의 작은 비율에 집중시켜 커리큘럼을 경제적으로 유지하면서도 모델이 점진적으로 긴 범위 의존성에 적응하게 하는 구성입니다.

긴 컨텍스트 데이터에는 별도의 처리가 들어갑니다. 자연 상태의 긴 문서와 영상에는 근사 중복, 이진 덩어리, 잘린 파일, 무효한 기계 생성 로그 같은 저품질 내용이 상당히 섞여 있어, 정확 및 퍼지 중복 제거와 영상 프레임에 대한 지각 해싱, 휴리스틱 및 분류기 기반 품질 필터링, 구조 검증을 결합한 전용 파이프라인을 통과시킵니다. 진짜로 길고 일관된 문서와 영상은 짧은 텍스트에 비해 희소하므로, 쿨다운 중 긴 컨텍스트 분포가 짧은 시퀀스에 압도되지 않도록 업샘플링합니다.

그러나 문서가 강조하듯 길이만으로는 긴 범위 능력이 생기지 않습니다. 그래서 멀티모달 문서와 하위 과제를 신중하게 순열하고 이어 붙여, 삽입된 과제를 100 만 토큰 컨텍스트 전체에 흩어진 정보에 주의를 기울여야만 풀 수 있게 만든 긴 컨텍스트 데이터를 추가로 합성합니다. 어텐션을 의도한 규모에서 직접 학습시켜 국소 패턴으로 퇴화하는 것을 막는 장치입니다.

사후 학습: 9개 전문가를 하나로 합치는 레시피

사후 학습 파이프라인은 세 단계입니다. 지도 미세조정(Supervised Fine-Tuning, SFT)으로 기본 에이전트 능력을 초기화하고, 강화학습으로 서로 다른 추론 강도의 도메인별 전문가를 키운 뒤, 다중 교사 온폴리시 증류(Multi-Teacher On-Policy Distillation, MOPD)로 이 정책들을 하나의 모델로 합칩니다.

1단계 SFT: XTML 채팅 템플릿과 QAT의 시작점

SFT 단계는 이어지는 강화학습을 위한 고품질 콜드 스타트 정책을 만듭니다. 이전 Kimi 모델들의 SFT 파이프라인을 확장하면서 복잡한 에이전틱 과제의 커버리지를 크게 넓혔습니다. 구체적으로는 이전 Kimi 시리즈의 도메인 특화 모델들로 데이터 궤적을 합성한 뒤, 다단계 검증과 사람이 개입하는 주석 작업을 거칩니다.

이 복잡한 에이전틱 궤적을 일관되게 표현하기 위해 모든 데이터를 XTML(eXtensible Token Markup Language) 기반 채팅 템플릿으로 직렬화합니다. XTML은 XML을 닮은 마크업인데, 꺾쇠 괄호 문법을 [open], [sep], [close] 세 개의 예약된 특수 토큰으로 대체하고 생성 종료 표시로 [end_of_msg] 를 추가합니다. [open]tag attr="value"[sep] ... [close]tag[sep] 형태의 요소는 XML 대응물과 동형이지만, 모든 구조 경계가 명시적인 특수 토큰이므로 요소 경계에서 생기는 토큰화 모호성이 사라지고 제약된 디코딩이 단순해집니다.

이 템플릿 설계의 목표가 셋입니다. 첫째는 확장성으로, 새 기능이 템플릿 개정이 아니라 하위 호환 메시지 형식으로 도입되어 하나의 템플릿이 모델 세대 전체를 담당합니다. 둘째는 낮은 정렬 비용(alignment tax)으로, 최소한의 지도 데이터로 학습 가능한 형식이어야 가볍게 미세조정한 사전 학습 모델이 곧바로 강화학습으로 넘어갈 수 있습니다. 셋째는 디코딩 친화성으로, 단순한 인코더와 스트리밍 파서, 문법 제약 강제기를 허용해야 합니다.

어시스턴트 메시지의 본문은 OpenAI의 Harmony 응답 형식에서 착안한 채널로 구성됩니다. think 는 추론 흔적, response 는 사용자에게 보이는 답변, tools 는 도구 호출을 담습니다. 사고 모드와 지시 모드는 별도 템플릿이 아니라 순전히 생성 접두어로 선택됩니다. 그리고 Kimi K3는 사고 이력 보존(preserved thinking)만 지원해서, 사고 모드에서는 내용이 비어 있어도 think 채널을 이력에 항상 유지해 모델이 턴 사이에 일관된 메시지 구조를 관찰하게 합니다. 앞서 발표 시점에 공지된 "과거 사고 내용을 반드시 되돌려 주어야 한다" 는 제약이 여기서 나옵니다.

추론 강도 역시 별도 문법이 아니라 thinking-effort 타입의 전역 옵션 메시지로 노출됩니다. 생성 접두어를 수정하거나 토큰 예산을 직접 드러내는 대신, 요청된 수준을 자연어로 진술하는 메시지가 생성 제약 지시로 작동합니다. 스키마는 low, medium, high, max 네 수준을 예약하고 Kimi K3는 그중 일부를 지원합니다. 도구 선택이나 응답 형식 같은 다른 옵션도 같은 방식으로 짧은 자연어 지시로 번역되어 컨텍스트에 놓입니다. 사전 학습 모델이 이미 그런 지시를 잘 따르므로 새 옵션을 추가 학습 없이 도입할 수 있다는, 낮은 정렬 비용 원칙의 직접적인 구현입니다.

한 가지 더, MXFP4 가중치와 MXFP8 활성값을 쓰는 양자화 인식 학습(Quantization-Aware Training, QAT)이 SFT 단계부터 적용됩니다.

2단계 강화학습: 3개 도메인 곱하기 3개 추론 강도

SFT가 견고한 콜드 스타트를 제공하더라도, 고차 추론과 실행 능력을 여는 것은 강화학습입니다. Kimi K3는 개별 과제마다 특화 모델을 학습시키는 대신, 각각 폭넓은 하위 과제를 포괄하는 세 도메인으로 강화학습을 확장하고 도메인별로 추론 강도마다 하나의 전문가를 학습시켰습니다.

  • 일반 과제: 일반 경험, 비전, 추론, 충실성, 검색 능력, 지식 노동 과제
  • 일반 에이전트: 긴 호흡 비서 과제, 심층 리서치, 단락 수준 작문
  • 코딩 에이전트: 소프트웨어 엔지니어링, 코딩 경험, 커널 과제, 웹 개발

세 도메인 전문가와 \{ low, high, max \} 세 추론 강도를 교차하면 총 9 개의 전문가 모델이 나옵니다. 문서는 강화학습 FLOPs를 늘릴수록 도구 호출 단계 수가 일관되게 늘고, 지식과 추론, 비전, 일반 에이전트, 코딩 전반의 능력이 함께 개선되었다고 보고합니다.

이 그림에서 눈여겨볼 점은 점수와 평균 어시스턴트 단계 수 가 함께 올라간다는 것입니다. 강화학습 연산을 더 투입하면 모델이 더 많은 도구 호출을 거쳐 문제를 푸는 쪽으로 행동이 바뀌고, 그 행동 변화가 점수 상승과 같이 갑니다. 테스트 시점 확장이 학습 단계에서 유도된다는 이야기입니다.

부분 롤아웃과 극단적 오프폴리시 영역

긴 호흡 과제에서 심해지는 롱테일 지연을 줄이기 위해, 동기식 강화학습 프레임워크의 부분 롤아웃(partial rollout) 방식을 확장했습니다. 각 반복의 롤아웃 단계에서 N 개 프롬프트마다 K 개 완성을 샘플링해 N \times K 개 궤적을 활성 상태로 유지합니다. 모든 롤아웃이 끝나기를 기다리지 않고, 궤적의 일정 비율 \lambda \in (0,1) 이 완료되는 즉시 생성 단계를 멈춰, 느리게 끝나는 롤아웃(straggler)에 발목 잡히지 않고 정책 최적화를 진행합니다. 멈춘 롤아웃은 큐에 넣어 다음 반복 시작 시 우선 재개하며, 이 재개는 샌드박스 인프라가 뒷받침합니다.

이 방식에서 하나의 긴 호흡 궤적은 자연스럽게 여러 반복에 걸치므로 데이터 신선도가 떨어지고 학습 안정성이 위협받습니다. Kimi K3의 정책 최적화 알고리즘은 토큰별 정규화(regularization)로 이런 극단적 오프폴리시 영역을 본질적으로 견딥니다. 정책 갱신을 국소 이웃 안으로 제약해 매우 낡은 데이터도 견고하게 다루면서 학습 안정성을 유지합니다.

추론 강도 강화학습: 문제별 토큰 예산

토큰 효율을 최대화하면서 추론 강도를 조정하기 위해 문제별 예산 제어 메커니즘을 강화학습에 넣었습니다. 각 문제 x 에 콜드 스타트 모델에서 추정한 초기 토큰 예산 b_0(x) 를 연결하고, 총 토큰 예산 T(y) 가 스케일된 임계값 \tau \cdot b_0(x) 를 넘는 궤적의 과제 보상을 -1 로 덮어씁니다. 일반 과제에서 T(y) 는 사고 토큰 수를 세고, 에이전틱 과제에서는 추론 흔적과 도구 호출 인자를 포함한 누적 출력 토큰을 셉니다.

학습은 예산 배수 \tau 에 대한 단계별 커리큘럼을 따릅니다. 먼저 상대적으로 큰 \tau 로 최대 예산 변형을 학습시키되 과도한 오버싱킹을 억제하기 위해 최대 예산 자체에도 상한을 둡니다. 그 뒤 \tau 를 더 작은 값으로 담금질(anneal)해 고강도와 저강도 전문가 모델을 얻습니다. \tau 조정은 도메인별로 사람이 개입해 설정합니다. 이렇게 얻은 전문가들이 모든 추론 수준에서 만든 궤적은 지도 미세조정과 다중 교사 온폴리시 증류를 위해 함께 수집됩니다.

에이전틱 생성 보상 모델

검증 불가능한 일반 과제에는 에이전틱 생성 보상 모델(Generative Reward Model, GRM)을 씁니다. Kimi K2.5와 같은 이진 비교 기반 토너먼트식 그룹 보상을 유지하되, 에이전틱 심판이 반드시 따라야 하는 프로토콜을 정했습니다. (1) 결과물이나 산출물, 텍스트 출력을 읽고, (2) 채점 기준(rubric)을 생성하고, (3) 각 후보를 그 기준에 따라 채점하고, (4) 기준별 점수를 채점표에 기록합니다.

점점 장황해지는 출력으로 보상을 해킹하는 것을 막기 위해, 앞의 추론 강도 제어와 유사한 예산 기반 장황함 제어를 적용합니다. 콜드 스타트 모델에서 추정한 초기 장황도 \ell_0 와 배수 \sigma 를 두고, 출력 길이가 \sigma \cdot \ell_0 를 넘는 후보는 이진 비교에서 자동으로 패배합니다.

3단계 MOPD: 아홉 명의 교사를 한 명의 학생으로

다중 교사 온폴리시 증류(MOPD) 는 서로 다른 추론 강도에 걸친 도메인 특화 능력을 하나의 통합 모델로 합치는 단계입니다. 학습 중 주어진 도메인 d 와 샘플링된 추론 강도 e \in \{ low, high, max \} 에 대해, 아홉 개 전문가 중 대응하는 교사 모델이 최적화를 안내합니다. 입력 질의 x 와 접두 응답 y_{<t} 가 주어졌을 때 교사와 학생 사이의 토큰별 보상은 다음과 같습니다.

r^d_{\text{opd}}(y_t \mid e, x, y_{<t}) = \mathrm{clip}\!\left(\mathrm{sg}\!\left(\log \frac{\pi^{(d,e)}_{\text{teacher}}(y_t \mid x, y_{<t})}{\pi_\theta(y_t \mid e, x, y_{<t})}\right), -R_{\max}, R_{\max}\right)

\mathrm{sg}(\cdot) 은 경사 정지 연산자이고 R_{\max} 는 극단적 이점 신호를 제약해 강화학습을 안정화하는 클리핑 임계값입니다. 이 조밀한 보상 신호가 기존 강화학습 프레임워크에 그대로 통합되므로, 긴 호흡 과제를 위한 부분 롤아웃 학습 같은 인프라 수준 최적화를 자연스럽게 활용할 수 있습니다. 더 세밀한 상위 k 증류 목적함수도 실험했지만, 수렴 속도나 최종 성능에서 뚜렷한 이점을 관찰하지 못했다고 밝히고 있습니다.

배포를 염두에 둔 사후 학습

여기서 눈에 띄는 것은 양자화와 추측 디코딩(speculative decoding)이 사후 처리가 아니라 사후 학습의 일부로 들어갔다는 점입니다.

MXFP4 양자화 인식 사후 학습. 모델의 매개변수 메모리를 지배하는 MoE 전문가 가중치를 MXFP4로 양자화하고 활성값은 MXFP8로 계산하며, 어텐션 투영과 잠재 MoE 투영, 공유 전문가, MoE 라우터 같은 비전문가 구성요소는 더 높은 정밀도로 유지합니다. 공개된 설정 파일에서도 양자화 형식이 mxfp4-pack-quantized , 그룹 크기 32 로 명시되고, 무시 목록에 self_attn , shared_experts , lm_head , 비전 관련 모듈이 들어가 있어 기술 문서의 설명과 정확히 맞습니다.

중요한 점은 QAT가 SFT와 강화학습을 모두 포함한 사후 학습 전 구간에 적용된다는 것입니다. 강화학습 중에도 롤아웃과 학습이 같은 양자화 방식을 공유하므로 학습과 추론 사이의 불일치가 사라집니다.

드래프트 모델 미세조정. Kimi K3는 백본 블록 구조를 모방한 다중 토큰 예측(Multi-Token Prediction, MTP) 레이어와 함께 사전 학습됩니다. EAGLE-3의 드래프트 모델이 단일 디코더 레이어로 구성되어 MTP 레이어 구조와 일치하므로, 대상 모델을 고정한 채 이 사전 학습된 MTP 레이어를 EAGLE-3 방식 드래프트 모델로 미세조정합니다. 학습 중 드래프트는 7 스텝 동안 펼쳐지고, 첫 스텝 이후에는 자기 출력을 입력으로 소비해 추론 시점의 재귀적 드래프팅 절차를 그대로 재현합니다.

드래프트 입력은 대상 모델의 저수준, 중간 수준, 고수준 특징을 융합하는데, 각각 첫 번째와 네 번째, 마지막 AttnRes 블록의 출력에서 가져옵니다. 이들을 이어 붙여 편향 없는 행렬 W_{E3} 로 히든 크기에 투영하며, 이 행렬은 [\,0\ \ 0\ \ I\,] 로 초기화됩니다. 그래서 초기화 시점에는 융합 표현이 MTP 레이어가 사전 학습된 입력인 고수준 특징과 일치하고, 미세조정을 거치며 점차 저수준과 중간 수준 특징을 받아들입니다.

목적함수 선택도 눈여겨볼 만합니다. 무손실 추측 샘플링에서 추측 디코딩의 속도 향상은 토큰별 수용률 \sum_{x \in V}\min(p(x), q(x)) 이 결정합니다. 그런데 용량이 제한된 드래프트 모델에서는 통상적인 KL 발산 대리 목적함수를 최소화하는 것이 이 수용률의 최대화를 보장하지 않습니다. 그래서 수용률 자체의 음의 로그, 즉 가능도 기반 손실을 직접 최적화합니다.

\mathcal{L}_{\text{LK}} = -\log \sum_{x \in V}\min\big(p(x), q(x)\big)

강화학습 환경: 하네스를 변수로 만들기

강화학습 프레임워크의 효과는 풍부하고 다양하며 견고하게 검증 가능한 환경에 크게 좌우됩니다. 문서의 이 절은 그 환경들을 어떻게 만들었는지 설명하는데, 아키텍처 절만큼 읽어볼 만한 대목입니다.

통합 화이트박스 강화학습 환경

고정된 하나의 에이전트 하네스(harness)로 학습하면 모델이 특정 도구 스키마나 시스템 프롬프트, 컨텍스트 관리 메커니즘, 상호작용 프로토콜에 과적합될 수 있습니다. 그래서 문샷은 에이전트 하네스를 도구 인터페이스, 시스템 프롬프트, 컨텍스트 관리 전략, 스킬, 메모리, 서브에이전트 등 설정 가능하고 조합 가능한 모듈의 집합으로 표현하는 통합 화이트박스 강화학습 환경을 개발했습니다.

이 모듈들을 설정으로 조합하면 Kimi Code, Claude Code, Codex, OpenClaw, Hermes 같은 주류 하네스는 물론 완전히 새로운 하네스도 인스턴스화할 수 있습니다. 강화학습 중에는 과제 그룹마다 다른 하네스 설정을 동적으로 구성해, Kimi K3를 어느 한 하네스의 관행이 아니라 이런 모듈들의 다양한 조합에 노출시킵니다. 하네스를 고정 상수가 아니라 학습 변수로 삼은 셈입니다.

지식 그래프로 안내하는 과제 합성

사후 학습 과제의 품질과 다양성은 그 원천 자료가 대체로 결정합니다. 세밀한 개념으로 안내된 검색은 전문적이고 과소 대표된 지식을 끌어내고, 다양한 개념에 걸친 샘플링은 도메인 커버리지를 넓힙니다. 이 두 가지를 대규모로 함께 통제하기 위해, 에이전트들이 웹 규모 탐색을 통해 지속적으로 확장하는 자기 진화형 계층 지식 그래프를 구축했습니다.

그래프는 재귀적이고 에이전트 주도적인 확장을 통해 방향성 비순환 그래프로 만들어집니다. 확장은 미리 정의된 굵은 단위(coarse-grained) 시드 노드 집합에서 시작합니다. 각 노드에 에이전트 인스턴스가 배정되어 해당 개념을 여러 번의 웹 검색으로 조사합니다. 새 노드를 추가하기 전에 에이전트는 기존 그래프를 탐색해 동등하거나 관련된 개념을 찾아 적절한 경우 기존 노드를 재사용하고 중복을 최소화합니다. 간선은 어느 끝점을 먼저 발견했는지와 무관하게 항상 더 굵은 개념에서 더 세밀한 개념으로 향합니다. 새로 추가된 노드는 다시 에이전트에 배정되어 탐색되고, 배정된 에이전트가 현재 개념이 충분히 원자적이라고 판단하면 그 가지의 확장이 멈춥니다.

과제를 만들 때는 원하는 도메인 및 과제 유형 분포를 겨냥해 다양한 세밀도의 노드를 개별적으로 또는 관련 조합으로 샘플링합니다. 샘플링된 노드에서 유도한 키워드를 그래프상 조상 노드의 맥락 정보와 결합해 웹 질의를 만들고, 검색된 실세계 자료를 합성 에이전트에게 주어 여러 유형의 학습 과제를 생성합니다.

검증 가능한 에이전틱 환경

Kimi K3는 에이전틱 환경 안의 검증 가능한 문제들로 학습됩니다. 대표적인 예가 셋입니다. 첫째, 다단계 복합 정보 검색으로, 모델이 리서치를 계획하고 웹에서 단계적으로 증거를 모아 검증 가능한 답을 냅니다. 둘째, 투자 은행 업무나 데이터 분석, 법률 실무처럼 전문가의 실제 일상 업무로, 모델이 복잡한 요청을 분해하고 샌드박스에서 도메인 도구를 조작해 수십에서 수백 단계에 걸쳐 산출물을 완성합니다. 셋째, STEM 문제와 시각 퍼즐, 차트 이해에 대한 다단계 검증 가능한 시각 추론입니다.

시각 추론 궤적은 격리된 샌드박스의 파이썬 인터프리터를 갖춘 에이전트 환경에서 생성됩니다. 모델은 반복적으로 코드를 작성하고 실행해 입력 이미지를 자르거나 확대하거나 변환하고, 정확한 계산을 수행하거나 중간 결과를 검증하며, 생성된 이미지를 포함한 실행 출력을 여러 상호작용 단계에 걸쳐 새로운 관측으로 받습니다. 모델이 더 많은 이미지 조작을 수행하고 더 많은 관측을 모으는 법을 배우면서, 복잡한 시각 추론 과제의 성능이 꾸준히 올랐습니다.

커널 최적화 과제와 해킹 탐지

GPU 커널 최적화 능력을 강화하기 위해, 단일 연산자 커널부터 융합 메가커널까지 이르는 대규모 커널 과제 스위트를 Flash Linear Attention 같은 고품질 GitHub 저장소에서 확보했습니다. CUDA, Triton, CuTe DSL, Gluon, ThunderKittens, TileLang 등 다양한 GPU 프로그래밍 방식을 포괄하고, 널리 쓰이는 GPU 아키텍처와 BF16, FP8, FP4 수치 형식을 다룹니다.

보상은 정확성과 성능을 함께 평가합니다. 각 커널에는 PyTorch 참조 구현이 딸려 있고, 미리 정한 수치 오차 임계값을 넘는 해답은 보상이 0 입니다. 성능은 전문가 구현을 기준으로 채점하는데, 전문가 구현과 대등하면 보상 0.5 , 하드웨어 루프라인(roofline)에 가까워질수록 보상이 1 로 올라갑니다.

특히 보상이 진짜 최적화를 반영하도록 해킹 탐지 시스템을 별도로 만들었습니다. CUDA 그래프 재생, 입력 캐싱, 정밀도 축소 같은 보상 해킹 전략에 벌점을 주고, Kimi K3 개발 중 새로운 해킹 전략이 관찰될 때마다 안전장치를 계속 추가했다고 밝힙니다.

개인 비서, 자율 실행, 웹 개발

긴 호흡 개인 비서 과제를 위해서는 Gmail, Notion, Slack, Canvas 같은 널리 쓰이는 애플리케이션의 현실적인 모의 구현을 만들었습니다. 실제 대응물의 핵심 의미론을 보존하면서 외부 API나 요청 제한 없이 재현 가능한 대규모 상호작용을 가능하게 합니다. 이 모의 애플리케이션 위에 인사, 법무, 재무 같은 실제 전문 워크플로에서 착안한 복잡한 과제를 설계했습니다. 각 과제에서 에이전트는 여러 모의 일자에 걸쳐 지속적으로 진화하는 환경에서 동작하며, 애플리케이션들에 분산된 수십 개의 상호 의존적 사건을 만납니다. 하나의 롤아웃이 수천 번의 도구 호출과 수백만 토큰의 컨텍스트를 수반할 수 있습니다.

자율 실행 과제(Autonomous Execution Tasks, AET) 는 검증을 루프에 넣은 최적화로 긴 호흡 에이전트 지능을 학습시키는 환경 패러다임입니다. 각 과제는 초기 상태, 제약된 목표, 도구 기반 행동 공간, 실행 예산, 독립적인 검증기를 명시합니다. 에이전트는 목표와 맥락, 제약, 검증 인터페이스만 볼 수 있고 참조 궤적이나 미리 정의된 절차는 받지 못하므로, 과제 분해와 도구 선택, 계획, 오류 복구, 종료 판단을 스스로 수행해야 합니다. 보상은 에이전트가 스스로 보고한 완료 여부가 아니라 검증기가 평가한 최종 환경 상태에 근거합니다. 블랙박스 시스템 복제, 정량 팩터 발견, 세무 감사 같은 다양한 환경을 지원하는 여러 유형의 검증기를 설계했습니다.

보상 해킹은 세 겹으로 막습니다. 에이전트를 검증기로부터 격리하고, 진단 피드백을 제공하는 공개 검증기와 홀드아웃 시나리오를 평가하는 숨겨진 검증기를 짝지으며, 제한된 제출 예산 아래 벌점 기반 보상을 적용합니다.

검증기 유형 중 하나인 블랙박스 시스템 복제가 어떤 과제인지는 Camera Repair Management System 예시가 잘 보여줍니다. 에이전트는 숨겨진 3D 카메라 수리 시스템을 오라클 질의만으로 탐색해 웹 애플리케이션으로 재구성해야 하고, 완료도는 검증기가 평가한 과제 진행률입니다. Kimi K3는 완료도 1.000 으로 과제를 끝냈고 Claude Opus 4.8은 0.918 , GPT-5.5는 0.893 에 머물렀습니다. 함께 실린 이전 세대 Kimi K2.6이 0.560 이라는 점이 이 환경에서의 세대 간 향상 폭을 보여줍니다.

웹 개발 과제는 한 줄짜리 장면 설명부터 여러 단락짜리 명세까지 다양한 입력을 받고, 산출물은 웹사이트, 인터랙티브 게임, 3D 및 WebGL 장면, 데이터 시각화, SVG, 풀스택 애플리케이션에 걸칩니다. 모든 과제는 컨테이너 샌드박스에서 실행되며, 하나의 고정 하네스가 아니라 다양한 에이전트 스캐폴드로 롤아웃해 스캐폴드 간 일반화를 촉진합니다. 보상은 결정론적 검사와 내부 보상 모델의 심사로 구성됩니다. 결정론적 검사는 애플리케이션 동작을 기능적으로 테스트하고, 참조를 복제하는 과제에서는 구조적 유사도와 픽셀 수준 유사도를 채점합니다. 프로젝트가 빌드에 실패하거나 오류와 함께 실행되거나 산출물을 구현하는 대신 시늉만 하면 보상이 0 이 됩니다.

인프라: 3조 매개변수와 100만 토큰을 떠받치는 것들

Kimi K3는 한 모델에서 좀처럼 함께 나타나지 않는 세 가지 시스템 과제를 결합합니다. 하이브리드 KDA 어텐션, 3 조급 희소 멀티모달 학습 및 추론, 그리고 100 만 토큰 에이전틱 워크로드입니다.

KDA 알고리즘과 시스템의 공동 설계

KDA는 소프트맥스 어텐션의 커지는 키-값 캐시를 고정 크기 재귀 상태 S \in \mathbb{R}^{d_k \times d_v} 로 대체합니다. 이 교환에는 대가와 이득이 함께 있습니다. 상태의 직렬 갱신은 병렬 실행에 불리하지만, 고정 크기 상태는 전송과 재사용 비용이 저렴합니다. 문샷은 이 두 성질을 세 층위에서 다룹니다.

청크 단위 커널. KDA의 청크 단위 형태는 청크 내부는 병렬이지만 청크 사이는 직렬입니다. 순진하게 실행하면 두 국면이 번갈아 나타나며 직렬 전파 중 SM이 유휴 상태가 됩니다. 그래서 CUTLASS 기반 청크 단위 커널 FlashKDA를 개발해 청크 내부 계산과 청크 간 상태 전파를 겹쳤습니다. 커널은 작업을 토큰 병렬 단계와 헤드 병렬 재귀로 분해해 각각 독립적으로 스케줄링하고 튜닝하며, Triton 참조 구현을 크게 앞섭니다. FlashKDA는 학습과 추론 프리필을 모두 담당하고 flash-linear-attention 의 백엔드로 자동 디스패치됩니다.

장치 내 컨텍스트 병렬화. 텐서 병렬화는 헤드를 장치에 나누지만 재귀 자체를 짧게 만들지는 못하므로, 순수 텐서 병렬 배포에서 초장문 시퀀스를 프리필하면 각 랭크가 소수 헤드만 갖게 되어 대부분의 SM이 유휴 상태가 됩니다. 핵심 관찰은 각 구간의 상태 전이를 들어오는 상태와 무관하게 평가한 뒤 나중에 정확히 합성할 수 있다는 점입니다. 그래서 SM 수준 컨텍스트 병렬 플래너가 하나의 랭크 안에서 SM들에 시퀀스를 분할하고, 구간 전이를 병렬로 평가한 뒤 병합해 각 구간의 정확한 초기 상태를 복원합니다. 장치 간 통신이 전혀 없는 장치 내 병렬화입니다.

KDA 컨텍스트 병렬화(KCP). 컨텍스트 병렬화의 통신 부담은 소프트맥스 어텐션과 선형 어텐션에서 근본적으로 다릅니다. 소프트맥스 어텐션은 시퀀스 길이에 비례해 커지는 키-값 블록을 랭크끼리 교환해야 하지만, 선형 어텐션은 앞선 컨텍스트를 고정 크기 재귀 상태로 나릅니다. 기존 방법들은 바닐라 선형 어텐션의 가산적 재귀를 활용해, 각 랭크에서 지역 토큰이 S = 0 에서 생성하는 상태를 계산하고 앞선 랭크들의 지역 상태를 합해 들어오는 상태를 복원합니다.

그런데 KDA에는 이 직접 합산이 통하지 않습니다. KDA는 상태를 S_t = M_t S_{t-1} + \beta_t k_t v_t^\top 로 갱신하며, 여기서 M_t := \left(I - \beta_t k_t k_t^\top\right)\mathrm{Diag}(\alpha_t) 입니다. 델타 규칙이 들어오는 상태에 토큰 의존적 행렬 M_t 를 먼저 적용하므로, 어떤 지역 구간의 효과는 그 구간에 들어오는 상태에 의존하며 S = 0 에서 계산한 상태만으로는 결정되지 않습니다.

KCP는 각 구간의 효과를 지역적으로 계산 가능한 두 양으로 분해해 이 의존성을 보존합니다. 하나는 들어오는 상태에 작용하는 누적 전이이고, 다른 하나는 영에서 지역적으로 생성된 상태입니다.

S^t_{[i+1]} = \tilde{S}^t_{[i+1]} + M^{t \leftarrow 1}_{[i+1]} S^{T_i}_{[i]}

두 양 모두 앞선 랭크의 상태가 도착하기 전에 지역 토큰만으로 계산할 수 있고, 이것이 각 랭크가 서로 교환하는 조각입니다. 이 랭크 수준 갱신은 결합적으로 합성되므로 각 랭크의 들어오는 상태를 접두 스캔(prefix scan)으로 복원할 수 있습니다. 결과적으로 KCP는 재귀 상태 동기화를 위해 고정 크기 all-gather 한 번만 요구하며 선형 연산 확장을 달성합니다.

MoonEP: 완벽하게 균형 잡힌 전문가 병렬 학습

통상적인 전문가 병렬(Expert Parallelism, EP) 방식에서는 랭크 간 토큰 부하가 불균형합니다. 그 결과 연산 불균형이 학습 처리량을 떨어뜨리고, 동적으로 변하는 라우팅 전문가 활성값 형태가 상당한 메모리 단편화를 유발합니다. 문샷은 동적 중복 전문가로 완벽한 부하 균형을 달성하는 EP 방식 MoonEP를 제안했습니다.

핵심 질문은 그런 균형을 보장하기에 몇 개의 중복 전문가가 충분한가입니다. 전문가 수를 E , EP 크기를 R 이라 할 때, 문서는 랭크당 최대 E/R 개의 중복 전문가로 균형 계획이 항상 존재하며 이 상한이 본질적으로 타이트하다는 것을 증명합니다. 랭크당 E/R 개의 중복 전문가 슬롯을 예약하면 계획이 항상 실행 가능한 해를 갖게 되므로 학습이 결코 중단되지 않습니다. ECHOUltraEP 같은 선행 연구는 중복 전문가 수를 미리 정하거나 랭크당 토큰 상한을 두는데, 그러면 상한 안에서 실행 가능한 계획이 없을 때마다 학습을 멈춰야 하고 상한 자체도 수동 조정이 필요하면서 잔여 불균형이 남습니다.

"본질적으로 타이트하다" 는 말의 의미도 부록에서 구성적으로 증명됩니다. 상한 쪽 증명의 핵심 보조정리는, 모든 EP 랭크가 정확히 S \times K 토큰을 받고 각 랭크의 원격 토큰이 오직 하나의 다른 랭크에서만 오는 계획이 항상 존재한다는 것입니다. 부하가 모자란 랭크와 넘치는 랭크를 짝지어 균형값까지 정확히 채우는 절차를 반복하면, 채움이 일어날 때마다 한 랭크가 영구히 균형 상태가 되므로 최대 R-1 번 만에 종료되고 각 랭크는 최대 한 번만 채워지므로 원격 토큰의 출처가 단일 랭크가 됩니다. 그 토큰들은 출처 랭크의 지역 전문가 E/R 개 이하에 속하니 랭크당 중복 전문가도 E/R 을 넘지 않습니다. 반대로 랭크 0 의 전문가가 토큰을 전혀 받지 못하고 나머지 R-1 개 랭크가 모든 토큰을 균등하게 나누는 라우터 출력을 구성하면, 랭크 0 이 받아야 하는 S \times K 토큰이 최소 \lceil E(R-1)/R^2 \rceil 개의 서로 다른 전문가에 걸치게 되어 그만큼의 중복 전문가가 반드시 필요합니다. R 이 크면 \lceil E(R-1)/R^2 \rceil \approx E/R 이므로, E/R 보다 의미 있게 작은 일반 상한은 존재하지 않습니다.

완벽한 균형은 부수 효과를 여럿 낳습니다. 첫째, 통신 경로가 단순해집니다. 융합된 순열 및 역순열 연산자를 구현해 플래닝 커널이 모든 토큰의 목적지를 미리 계산하므로, 토큰이 원격 랭크의 전문가별 그룹 위치로 직접 전송되고 통신 버퍼의 뷰가 곧바로 연산에 반환되어 중간 복사가 사라집니다. 최악의 불균형에서 DeepEP가 같은 복사 없는 데이터 경로를 지원하려면 S \times K \times R 크기의 통신 버퍼가 필요한데, MoonEP는 완벽한 균형 덕에 고정된 S \times K 버퍼만 필요합니다.

둘째, 호스트 동기화가 사라집니다. 통상적인 MoE 구현에서는 전문가별 토큰 수가 스텝과 레이어마다 달라져, 호스트가 매 레이어에서 장치와 동기화해 실제 연산 형태를 얻은 뒤 전문가 연산을 띄워야 하고 그 사이 파이프라인이 멈춥니다. 완벽한 균형에서는 모든 랭크가 정확히 S \times K 토큰을 받으므로 모든 레이어의 연산 형태가 정적으로 알려집니다. 레이어별 MoE 호스트 동기화가 제거되고 호스트 측 커널 실행 오버헤드도 완화됩니다.

다만 랭크 간 총 부하가 완벽히 균형 잡혀도 랭크 내부의 전문가별 토큰 수는 여전히 치우쳐 있습니다. 그래서 라우팅 전문가 GEMM을 워크로드 인식 스케줄러로 스케줄링해, 실행 전에 현재 토큰 분포에 맞춰 매개변수를 조정하고 실행 중에는 고정합니다. 경량 휴리스틱이 하드웨어 지표의 분석적 비용 모델로 이 매개변수를 선택하며, 핵심 계수는 오프라인 자동 튜닝으로 보정합니다.

메모리 효율 학습

사전 학습의 병렬화 스택부터 정리하면, 가상 스테이지를 둔 파이프라인 병렬화(PP + VP), 전문가 병렬화(EP), ZeRO-1 데이터 병렬화, Pipeline ZeRO-2 경사 샤딩, 그리고 앞서 본 KDA 컨텍스트 병렬화를 함께 씁니다. MoE 레이어의 공유 전문가는 EP 랭크에 복제되고, 전문가 분배와 결합을 위한 all-to-all 통신은 연산과 겹쳐 지연을 숨깁니다.

3 조급 네이티브 멀티모달 사전 학습의 두 번째 문제는 활성값과 경사, 옵티마이저 상태가 메모리 예산을 초과한다는 점입니다. 문샷은 저장 백엔드를 꽂아 넣을 수 있는 통합 활성값 관리자를 설계해, 재계산과 양자화, 오프로드 및 원격 오프로드를 모두 이 추상화 아래의 저장 정책으로 다루고 텐서 단위로 자유롭게 조합합니다. 정책은 텐서에 붙은 경량 주석으로 선언되어 모델 코드와 완전히 분리됩니다. Kimi K3에서는 대부분의 활성값이 블록 단위 FP8 양자화와 오프로드 및 원격 오프로드를 함께 쓰고, 원소별 연산자는 재계산으로 설정됩니다.

MoE 쪽에는 두 가지 절약이 더 들어갑니다. 기본 구현에서는 순열된 라우터 확률의 경사 계산이 순방향 출력에 의존하는데, SonicMoE에서 착안해 이 경사를 수학적으로 변형해서 중간 활성값과 상류 경사만으로 계산되는 형태로 다시 썼습니다. 가벼운 원소별 연산 하나를 더하는 대가로 역방향의 순방향 출력 의존성이 사라집니다. 또 그룹 GEMM의 순방향에서는 분배(dispatch) 연산의 입력만 저장하고, 역방향에서 분배를 재계산해 그룹 GEMM의 입력을 복원합니다. 이 재계산이 유발하는 통신은 그룹 GEMM 역방향 연산의 일부와 겹칠 수 있으므로, 사실상 무시할 만한 비용으로 그만큼의 활성값 저장을 없앱니다.

인상적인 세부 사항 몇 가지를 꼽으면 이렇습니다. 파이프라인 병렬화에서 인터리브 1F1B 스케줄은 파이프라인 예열 때문에 랭크 간 활성값이 불균등하게 분포하는데, PP 랭크가 커질수록 상주 활성값 수가 줄어듭니다. 메모리 부족(OOM)을 피하기 위해 Mooncake 전송 엔진으로 활성값을 다른 PP 랭크의 메모리에 원격 오프로드해 PP 랭크 간 활성값 메모리를 균형 맞춥니다. 경사는 Pipeline ZeRO-2로 데이터 병렬 랭크에 샤딩하고, 샤딩된 경사를 CPU 메모리에 저장해 GPU 최대 메모리 사용량을 줄이면서 이중 경사 버퍼만 GPU에 남깁니다.

Muon의 직교화에는 별도의 통신 설계가 붙습니다. 분산 옵티마이저는 매개변수를 데이터 병렬 랭크에 균등 샤딩하지만 뉴턴-슐츠 직교화는 완전한 매개변수 행렬을 요구하므로, 갱신 전에 완전한 매개변수를 모으는 통신 단계가 필요합니다. 매개변수 버퍼 전체에 대해 모든 랭크에서 all-gather를 수행하는 순진한 방식은 상당한 메모리 부담을 더하는 동시에 큰 규모에서 통신을 주된 병목으로 만듭니다. 대신 각 랭크가 자신이 소유한 매개변수의 샤드만 해당 소유 랭크와의 지점 대 지점(P2P) 통신으로 가져오게 해, 완전 매개변수 버퍼를 없애고 메모리와 통신량을 함께 줄였습니다.

비전 인코더 최적화는 두 갈래입니다. 하나는 큰 샘플에 대한 동적 컨텍스트 병렬화입니다. 긴 컨텍스트 멀티모달 학습에서 큰 이미지와 긴 영상은 비전 인코더의 연산 시간을 크게 늘리고 장치 간 부하 불균형을 유발합니다. 그래서 하나의 큰 이미지를 패치 차원으로 여러 장치에 분할하고, CP 랭크 사이에서 키와 값을 모아(gather-KV) 어텐션을 계산합니다. 여기에 각 CP 그룹을 여러 하위 CP 그룹으로 나눠 큰 이미지들을 부하 균형이 맞게 분배해, 규모가 커져도 통신 비중이 함께 커지지 않게 했습니다. 큰 시각 샘플의 인코더 지연과 장치 간 불균형이 함께 줄어들어, 남은 인코더 연산을 파이프라인 버블에 숨길 여지가 생깁니다.

다른 하나가 그 버블 활용입니다. Kimi K2.5에서 도입한 분리형 인코더 프로세스(Decoupled Encoder Process, DEP)는 ViT와 텍스트 학습을 별도 스테이지로 나누고 비전 순방향과 역방향을 PP 스테이지에 균형 맞췄습니다. Kimi K3는 여기서 한 걸음 더 나가 Optimus의 관찰을 활용합니다. 인터리브 1F1B 스케줄에서 첫 PP 마이크로배치의 텍스트 순방향 패스는 모두 맨 앞에 스케줄링되고, 마지막 PP 마이크로배치의 텍스트 역방향 패스는 맨 끝에서야 끝납니다. 그래서 ViT 연산을 분해해 첫 PP 마이크로배치의 ViT 순방향 패스는 앞에서 동기적으로 실행하고, 나머지 순방향 패스는 파이프라인 버블에 스케줄링하며 역방향도 같은 방식으로 처리합니다. 결과적으로 ViT 연산 대부분이 파이프라인 버블 안에 숨어 비전 인코더의 실효 오버헤드가 거의 사라집니다.

100만 토큰 에이전틱 강화학습 인프라

100 만 컨텍스트 Kimi K3 강화학습 실험을 수백 개 GPU 안에 묶어 두기 위해 코로케이션 방식 강화학습 학습을 채택하고, 초장문 궤적의 꼬리 지연을 줄이기 위해 부분 롤아웃을 씁니다. 다만 긴 컨텍스트 롤아웃은 KV 캐시 보존을 위한 추가 DRAM 수요를 만들고, 이것이 학습 측 상태와 경합합니다.

외부 KV 캐시 풀. 100 만 컨텍스트 다단계 롤아웃에서 접두어 KV 캐시 미스는 극도로 비쌉니다. 부분 롤아웃은 이전 반복에서 끝나지 않은 긴 프리필 요청이 반복 시작 시점에 한꺼번에 도착하게 만들어 이 문제를 악화시키고, 추측 디코딩은 상대적으로 고정된 도구 호출 간격 안에서 요청 회전을 더 빠르게 해 접두 블록 이탈을 늘립니다. 그래서 접두어 보존을 GPU 상주로부터 분리하는 라이트백(write-back) 설계를 씁니다. 활성 디코딩 블록은 GPU KV 캐시에 남고, 재사용 가능한 유휴 접두어는 GPU에서 축출될 때만 CPU DRAM의 외부 KV 캐시 풀로 기록되며 다음 재사용 전에 미리 가져옵니다. KDA 상태는 대응하는 MLA KV 캐시 블록과 함께 오프로드되고 프리페치되어 생애주기가 정렬됩니다. 외부 풀에 충분한 DRAM을 제공하기 위해 학습 반복이 끝나면 학습 상태를 NVMe로 오프로드하고, 롤아웃 반복이 끝나면 풀을 해제해 학습 워크로드와의 경합을 피합니다.

롤아웃 자동 스로틀링 스케줄러. 다단계 롤아웃에서 컨텍스트는 궤적이 진행되며 점진적으로 커집니다. 그래서 전체 궤적 평균 길이에 기반한 고정 동시성은 추정하기 어렵고 초기에는 지나치게 보수적입니다. 반대로 동시성을 너무 높이면 후반부에 KV 캐시 압박이 생겨 선점이 발생할 수 있습니다. 그래서 활성 요청 수, 큐 대기 요청 수, KV 캐시 사용률 같은 런타임 신호로 추론 엔진에 보내는 요청 수를 동적으로 제어하는 자동 스로틀링 메커니즘을 요청 스케줄링 층에 설계했습니다. 초기 롤아웃은 충분히 활용하고 KV 캐시 압박이 오르면 동시성을 줄여, 수동 조정 없이 과소 포화와 과부하를 모두 피합니다.

참조 모델을 위한 경사 버퍼 재사용. 강화학습 손실 계산에는 참조 모델처럼 순방향만 수행하는 비정책 모델이 필요한데, 그 가중치는 GPU에 상주시키기엔 너무 큽니다. 그래서 가중치를 CPU 메모리에 두고 필요할 때만 실체화하며, 그 매개변수 텐서를 정책 모델의 FP32 경사 버퍼 저장 공간에 얹습니다. 추가 할당이나 단편화 없이 기존 GPU 메모리를 재사용하는 방식이고, 나중에 실제 경사가 계산될 때 버퍼가 덮어쓰이므로 안전합니다. ZeRO-2 경사 샤딩과 오프로딩 덕에 Kimi K3 강화학습에서 각 GPU는 두 개의 VPP 청크에 대한 경사 버퍼만 유지하므로, 참조 가중치를 청크 단위로 흘려 넣어 한 슬롯은 현재 순방향에 쓰고 다른 슬롯은 다음 청크를 미리 가져오게 하면 GPU 메모리를 늘리지 않고 복사 오버헤드를 숨길 수 있습니다.

AgentENV: 마이크로VM 샌드박스. 사후 학습과 평가를 지원하기 위해 컨테이너 기반 런타임과 GPU 샌드박스 런타임, 그리고 AgentENV라는 새로운 마이크로VM 기반 샌드박스 런타임을 함께 씁니다. AgentENV의 설계 목표가 셋입니다.

첫째는 고충실도 격리 런타임입니다. 에이전트가 유능해지고 과제가 어려워지면 더 공격적으로 탐색하고 보상 해킹을 시도할 수 있습니다. 문샷은 초기 실험에서 전통적인 컨테이너 기반 샌드박스 런타임에서 의도치 않은 에이전트 조작으로 인한 커널 패닉과 데드락을 여러 번 관찰했다고 밝힙니다. 동시에 에이전트 능력을 제약하지 않으려면 탐색을 최대한 허용해야 하고, 복잡한 과제는 실세계에 가까운 샌드박스를 요구합니다. 에이전트가 디스크를 마운트하거나 컨테이너를 실행하거나 심지어 가상 머신을 띄울 수 있어야 한다는 뜻입니다. Firecracker로 격리된 마이크로VM을 돌려 컨테이너 런타임이 낼 수 없는 격리 수준과 충실도를 확보했습니다.

둘째는 에이전틱 강화학습을 위한 유연한 샌드박스 생애주기입니다. 저수준에서 샌드박스 상태의 증분 체크포인팅과 재개를 지원해, 체크포인팅 시 마지막 체크포인트 이후 더러워진 메모리 페이지만 저장하며 체크포인트와 재개 지연을 각각 133 ms와 49 ms까지 낮췄습니다. 그 위에 세 가지 고수준 연산을 제공합니다. 일시 중지와 재개는 중지된 샌드박스가 메모리와 CPU 자원을 전혀 소모하지 않게 하는데, 에이전트가 모델의 추론 결과를 기다리는 시간이 샌드박스 생애의 최대 98\% 를 차지할 수 있으므로 그동안 샌드박스를 중지할 수 있습니다. 포크는 원본을 계속 실행한 채 정확한 상태의 새 샌드박스를 만들어, 부작용 없는 보상 심사에 유용합니다. 스냅샷은 일정 간격으로 저장해 오류 복구에 씁니다.

셋째는 고효율과 고밀도입니다. 각자 고유한 이미지 집합을 가진 수만 개 샌드박스를 수 초 안에 만들어야 하는 워크로드에서, OverlayBD를 이미지 형식으로 채택하고 자체 ublk 드라이버 구현과 저장 계층 공유, P2P 전송을 함께 써 대규모에서 1 초 미만 실행 지연을 달성했습니다. 복사 시 쓰기 메모리와 페이지 캐시 최적화로 메모리 사용량을 더 줄여, 실제 워크로드에서 최대 6.5\times 의 메모리 오버커밋 비율을 달성했습니다.

숫자 하나가 이 인프라의 규모를 압축해서 보여줍니다. Kimi K3의 학습과 평가 전체에 걸쳐 총 1{,}505{,}678 개 이미지에 대해 51{,}219{,}741 개의 샌드박스가 생성되었습니다.

서빙: KDA 인식 접두어 캐시(prefix cache)가 어려운 이유

프로덕션 서빙은 같은 과제를 반대편에서 마주합니다. 하이브리드 KDA-MLA 아키텍처는 근본적으로 다른 두 캐시를 100 만 토큰 컨텍스트에서 함께 관리해야 하고, 새 모듈과 극도로 희소한 전문가는 각각에 맞춘 커널을 요구하며, 프로덕션 트래픽은 요청당 비용이 세 자릿수 배로 벌어지는 요청들을 섞습니다.

통합 캐시 레이아웃. MLA KV 캐시는 시퀀스 길이에 따라 커지고 토큰 단위로 페이징되지만, KDA 재귀 상태는 크기가 고정되고 요청당 사본이 하나입니다. 각각에 별도 관리자를 두면 할당과 축출, 전송 로직이 중복되므로, KDA 상태를 MLA KV와 같은 페이징 블록 풀에 담고 페이지를 같은 바이트 크기로 통일해 두 페이지 유형이 할당과 참조 카운팅, 축출의 한 구현을 공유하게 했습니다. 페이지 안에서 모든 헤드의 상태는 헤드 단위로 연속 저장되어, 각 헤드의 바이트 스트림이 자기 완결적이고 노드 간 전송의 최소 단위가 됩니다. 재미있는 부작용도 있습니다. 이 비대칭성 덕에 타입을 혼동한 접근은 그럴듯한 데이터가 아니라 쓰레기값을 내놓기 때문에, 풀링된 레이아웃에 대한 오버헤드 없는 정합성 검사가 된다고 합니다.

해시 세밀도와 저장 세밀도를 분리하기. 블록 해시 기반 접두어 캐싱은 하나의 물리 블록 단위로 KV 캐시를 재사용합니다. 완전한 블록만 해싱되므로 블록 정렬된 접두어만 재사용 가능합니다. 이 결합이 Kimi K3에서 무너집니다. 블록 해시 매칭은 모든 레이어가 공유하는 하나의 블록 크기를 요구하고, 접두어 히트는 히트 경계에서 KDA 상태가 보존되어 있을 때만 재사용 가능합니다. KDA 레이어는 토큰별 항목이 아니라 시퀀스당 하나의 큰 재귀 상태를 유지하므로 상태 스냅샷은 희소한 경계에서만 감당할 수 있고, 그래서 공유 블록 크기가 1024 에서 6144 토큰으로 강제됩니다. MLA의 토큰별 항목만 보면 훨씬 세밀한 블록도 견딜 수 있는데도 해싱이 저장 블록에 묶여 있어 해시 세밀도까지 함께 거칠어집니다. 이렇게 거친 세밀도에서는 캐싱이 거의 무용해집니다. 한 블록보다 짧은 요청은 절대 재사용될 수 없고, 청크 프리필은 완전한 블록 경계를 넘기 전까지 캐시 가능한 접두어를 내보내지 못합니다.

해법은 두 세밀도를 분리하는 것입니다. 접두어 해싱은 MLA 페이지 안의 세밀한 해시 블록(예: 512 토큰)에서 수행하고, 물리 블록은 거친 할당 단위로 남깁니다. KDA는 반대 방향으로 정렬해, 재귀 상태의 체크포인트를 MLA 해시 종점의 희소한 부분집합에만 저장합니다. 조회는 두 단계로 진행됩니다. MLA 단계가 연쇄 해시로 물리 블록 전체를 매칭하고 첫 누락 블록에서 그 안의 해시 종점으로 폴백해 부분적으로 채워진 페이지도 히트 가능하게 만들면, KDA 단계가 각 KDA 캐시 그룹에서 후보 경계의 체크포인트를 요구합니다. 히트는 두 단계를 모두 만족하는 가장 긴 경계이며, 항상 해시 블록의 배수이지만 물리 블록의 배수일 필요는 없습니다. 결과적으로 첫 2800 토큰이 캐시된 접두어와 일치하는 요청은 6144 토큰 물리 블록 한참 안쪽인 B = 2560 = 5 \times 512 에서 히트해, 구간 [0, B) 를 재계산하지 않고 토큰 B 부터 프리필을 재개합니다.

동시 스케줄링 아래의 정합성 설계도 촘촘합니다. 모든 캐시 그룹이 하나의 공유 프리 리스트에서 블록을 가져오므로, 한 그룹의 사설 사본을 할당하는 과정이 다른 그룹이 방금 히트한 블록을 축출할 수 있습니다. 그래서 어떤 히트 블록이든 무엇을 할당하기 전에 모든 그룹에서 고정(pin)됩니다. 사설 블록으로 복사하는 작업은 순방향 패스 직전 GPU에서 실행되므로, 현재 스케줄링 스텝 안에서 할당되거나 등록된 블록은 이전 소유자의 바이트를 독자에게 넘길 수 있어 복사가 끝나기 전까지 매칭에서 제외됩니다. 체크포인트는 모든 KDA 그룹에 존재할 때만 요청을 복원할 수 있으므로, 한 그룹의 체크포인트를 축출하면 형제 체크포인트들도 원자적으로 무효화됩니다. 어느 그룹에서나 히트 가능하거나, 어디서도 히트 불가능한 것 둘 중 하나입니다.

이 설계 덕에 하이브리드 KDA-MLA 모델의 접두어 캐싱이 완전 어텐션 모델과 같은 일반성에 도달해, 공유된 접두어라면 요청 길이나 청킹, 스케줄링 인터리빙과 무관하게 임의의 512 토큰 경계에서 재사용 가능해집니다.

추측 디코딩과 KDA 상태 되감기. KDA 디코딩의 병목은 프리필과 다릅니다. 매 디코딩 스텝마다 제자리에서 갱신되는 재귀 상태를 효율적으로 관리하는 문제로 옮겨갑니다. 이 제자리 갱신이 MTP 기반 추측 디코딩에서 문제가 됩니다. 검증이 드래프트 토큰 일부를 거부하면 상태는 이미 마지막 수용 토큰을 넘어 진행되어 있어 간단히 되돌릴 수 없습니다. 드래프트 위치마다 상태 스냅샷을 유지하면 되감기가 가능하지만 상태 트래픽이 배로 늘어나, 온라인 서빙의 큰 배치 크기에서는 그 비용이 지배적입니다.

관찰의 열쇠는 이렇습니다. 수용된 드래프트 접두어 이후의 상태는 드래프트 토큰들의 투영된 입력으로 완전히 결정되고, 그 입력은 상태 자체보다 훨씬 작습니다. 그래서 이 투영된 입력만 캐시하고, 수용된 토큰들의 상태를 온칩에서 재구성하며, 검증된 토큰과 보너스 토큰의 상태만 다시 기록합니다. 재생된 토큰과 보너스 토큰, 다음 드래프트 윈도우가 짧은 합성곱과 입력 정규화, 게이팅, KDA 재귀, 출력 정규화를 포괄하는 하나의 융합 커널 안에서 재귀 루프를 공유합니다. 검증 지연은 검증 토큰 수에 대해 준선형으로 증가하며 상태 캐싱 기준선보다 낮게 유지됩니다. 투영 캐시는 디코드 단계를 벗어나지 않으므로 접두어 캐싱과 프리필-디코드 분리는 비추측 서빙과 동일한 데이터를 다룹니다. 같은 착상은 동시기 연구인 ReplaySSM에서도 독립적으로 제안되었습니다.

Block AttnRes 커널. Block AttnRes는 두 국면으로 스케줄링됩니다. 배치화된 블록 간 패스가 캐시된 블록 표현을 블록당 한 번 읽고, 그 뒤 각 레이어가 온라인 소프트맥스 병합으로 블록 내 부분합을 접어 넣습니다. 프리필과 디코딩 모두에서 이 커널 비용의 상당 부분이 메모리 접근이라 최적화도 메모리 효율에 집중됩니다. 프리필에서는 블록 표현을 모든 텐서 병렬 랭크에 실체화하면 중복 메모리 소모가 크므로 활성값에 시퀀스 병렬화를 적용합니다. 텐서 병렬 all-reduce를 reduce-scatter와 all-gather로 분해하고 그 사이에 블록 내 커널을 끼워 넣어 시퀀스 축으로 샤딩된 히든 상태 위에서 동작하게 하면, 각 토큰의 블록 표현이 정확히 한 랭크에만 실체화됩니다. 디코딩에서는 블록 간 커널을 보조 스트림에 띄워 메인 스트림의 독립 연산과 겹치고, 블록 내 커널은 융합으로 간소화합니다. AttnRes 출력과 부분합 갱신의 병합, 그리고 이어지는 RMSNorm을 앞선 텐서 병렬 all-reduce에 융합해 블록 내 국면 전용 커널을 아예 없앴습니다.

Stable LatentMoE 커널. 전문가 총수와 토큰당 활성 전문가 수가 함께 늘어나면 스케줄링과 조율 오버헤드가 커져, 통상적인 MoE 커널로는 하드웨어 활용률을 유지하기 어렵습니다. 잠재 GEMM 쪽에는 세 가지 최적화를 넣었습니다. 먼저 잠재 하향 투영과 MoE 라우터를 하나의 GEMM으로 융합하고, 다음으로 잠재 가중치 행렬을 랭크에 샤딩한 뒤 출력 all-gather를 multimem store 명령으로 GEMM 에필로그에 융합하며, 마지막으로 그렇게 생긴 통신을 공유 전문가 연산 같은 다른 연산자와 겹칩니다. 중복 가중치 트래픽과 중복 연산이 사라지고 통신 지연은 연산 뒤로 숨습니다.

라우팅 전문가 쪽은 작은 배치 크기에서 성격이 달라집니다. 그룹 GEMM이 가중치 행렬을 흘려보내는 메모리 바운드 스트리밍으로 바뀌는데, 연산 중심으로 설계되고 전처리 비용이 있는 통상적인 타일 중심 커널은 이 영역에 잘 맞지 않습니다. 그래서 MoE 디코딩 커널을 WarpDecode의 토큰 중심 설계 위에 세웠습니다. 워프 하나가 출력 뉴런 하나를 담당해 연관 가중치를 메모리에서 직접 스트리밍하는 방식입니다. 병렬성을 더 끌어올리기 위해 각 워프를 더 세분화된 레인 팀으로 쪼개 서로 겹치지 않는 전문가 부분집합을 처리하게 하고, 마지막에 워프 전체에서 부분 결과를 축약합니다. 여기에 가중치 레이아웃을 오프라인에서 한 번 순열해 두어 런타임 역양자화 오버헤드를 크게 줄였습니다.

플릿 수준 스케줄링. 단일 서빙 인스턴스를 넘어서면 과제는 요청당 효율에서 예측 가능성으로 옮겨갑니다. 접두어 캐시 미스는 히트보다 몇 자릿수 더 비싸고, 100 만 토큰 요청의 폭주가 짧은 요청을 굶길 수 있습니다. 100 만 컨텍스트에서 전형적인 코딩 입력은 400 K 토큰 접두어를 나르지만 프리필 증분은 4 K 토큰에 불과하므로, 접두어 캐시 히트는 전체 접두어 재프리필을 피하게 해 미스보다 몇 자릿수 저렴합니다. 그래서 각 요청을 자기 접두어 캐시를 보유한 클러스터로 라우팅합니다.

이 캐시 인식 친화도는 각 세션을 하나의 클러스터에 묶으므로, 그 클러스터가 고장 나면 묶인 모든 세션이 끊깁니다. 그래서 일관 해싱으로 각 세션을 두 클러스터에 고정합니다. 트래픽을 처리하는 주 클러스터와 주 클러스터 장애 시 인수하는 미리 배정된 보조 클러스터입니다. 보조 클러스터는 세션의 접두어 캐시를 갖고 있지 않아 페일오버 시 다시 프리필해야 하지만, 일관 해싱이 서로 다른 세션의 보조 배정을 플릿 전체에 균일하게 분산하므로 이 재프리필 작업이 한 클러스터에 집중되지 않고 여러 클러스터로 나뉩니다.

또한 프로덕션 트래픽은 2 K 토큰 미만의 짧은 요청과 최대 100 만 토큰의 초장문 요청을 섞으므로, 요청당 비용이 대략 세 자릿수 배로 벌어지고 고정된 요청 수가 만드는 총 부하가 매우 예측 불가능해집니다. "평균 요청" 에 기반한 용량 계획과 대기열 모델, 요청 제한 할당량이 모두 이 분산 아래에서 무너집니다. 전형적인 실패 양상은 긴 컨텍스트 요청의 폭주가 가용 연산을 포화시켜 이후 도착한 짧은 요청이 즉시 스케줄링되지 못하고, 전체 트래픽의 첫 토큰까지의 시간(Time To First Token, TTFT)이 나빠지는 것입니다. 그래서 요청 클래스마다 별도 자원 예산을 배분하는 예산 기반 수용 제어를 채택해, 폭주하는 긴 컨텍스트 트래픽이 자기 몫 이상의 용량을 소모하지 못하게 했습니다.

평가 결과

공개 벤치마크

평가는 추론 및 지식, 코딩, 에이전틱, 비전 네 축으로 구성됩니다. 모든 Kimi K3 결과는 추론 강도 max 와 온도 1.0 에서 얻어졌고, 단일 단계 과제에서는 top-p = 0.95 , 에이전틱 과제에서는 top-p = 1.0 을 씁니다. 비교 대상은 Claude Fable 5, GPT-5.6 Sol, Claude Opus 4.8, GPT-5.5, 그리고 오픈 웨이트 모델 GLM-5.2입니다.

추론 및 지식

벤치마크 Kimi K3 Claude Fable 5 GPT-5.6 Sol Claude Opus 4.8 GPT-5.5 GLM-5.2
GPQA Diamond 93.5 92.6 94.1 91.0 93.5 91.2
CritPt 23.4 28.6 32.3 20.9 27.1 20.9
AA-LCR 74.7 70.0 73.7 67.7 74.3 71.3
HLE-Full (도구 없음 / 있음) 43.5 / 56.0 53.3 / 63.0 44.5 / 58.0 49.8 / 57.9 41.4 / 52.2 -

대학원 수준 추론에서 Kimi K3는 GPQA Diamond 93.5\% 로 프론티어와 경쟁적이고, 긴 컨텍스트 추론을 보는 AA-LCR에서는 74.7\% 로 1위입니다. 다만 연구 수준 과제에서는 격차가 남습니다. HLE-Full에서 도구 없이 43.5\% , 도구를 쓰고 56.0\% 로 Claude Fable 5와 GPT-5.6 Sol에 모두 뒤지고, 물리 연구 문제를 다루는 CritPt에서는 23.4\% 로 GPT-5.5에도 밀립니다. 기술 문서 스스로 연구 수준 추론이 핵심 개선 방향이라고 적고 있습니다.

코딩

벤치마크 Kimi K3 Claude Fable 5 GPT-5.6 Sol Claude Opus 4.8 GPT-5.5 GLM-5.2
DeepSWE 67.5 70.0 73.0 59.0 67.0 46.2
ProgramBench 77.8 76.8 77.6 71.9 70.8 63.7
Terminal-Bench 2.1 88.3 88.0 88.8 84.6 83.4 82.7
FrontierSWE 81.2 86.6 71.3 66.7 64.9 67.3
SWE-Marathon 42.0 35.0 39.0 40.0 14.0 13.0
PostTrainBench 36.6 41.4 34.6 34.1 28.4 34.3
MLS-Bench-Lite 48.3 49.9 46.2 42.8 35.5 40.4
SciCode 58.7 60.2 56.1 53.5 56.1 50.5

ProgramBench에서 77.8\% 로 최고점을 받았고, GPU 커널 중심 스위트인 SWE-Marathon에서 42.0\% 로 Claude Fable 5보다 7 점 앞섭니다. Terminal-Bench 2.1에서는 88.3\%88.8\% 로 GPT-5.6 Sol에 거의 붙었습니다. 긴 호흡 벤치마크인 FrontierSWE에서는 81.2\% 로 Claude Fable 5(86.6\% )에만 뒤진 2위이며 나머지 모델들과는 큰 차이를 벌립니다. 반대로 모델이 연구 및 개발 파이프라인 자체를 다루는 스위트에서는 아직 선두가 아닙니다. 사후 학습 레시피를 스스로 설계하게 하는 PostTrainBench에서 36.6\% , 머신러닝 시스템 구축을 보는 MLS-Bench-Lite에서 48.3\% , 과학 연구 코딩인 SciCode에서 58.7\% 로 모두 Claude Fable 5에 이은 2위입니다.

에이전틱

벤치마크 Kimi K3 Claude Fable 5 GPT-5.6 Sol Claude Opus 4.8 GPT-5.5 GLM-5.2
BrowseComp 91.2 88.0 90.4 84.3 84.4 -
DeepSearchQA (F1) 95.0 94.2 - 93.1 - -
ResearchRubrics 76.2 - 73.8 73.5 64.0 71.1
GDPval-AA v2 (Elo) 1686 1747 1736 1593 1491 1510
Toolathlon-Verified 76.5 77.9 74.9 76.2 73.5 59.9
MCPMark-Verified 94.5 87.4 92.9 76.4 92.9 -
MCP-Atlas 84.2 84.7 83.6 83.6 82.8 82.6
AutomationBench 30.8 29.1 29.7 27.2 22.7 12.9
JobBench 54.3 57.4 45.4 48.4 38.3 43.4
AA-Briefcase (Elo) 1548 1583 1495 1354 1158 1260
Agents' Last Exam 28.3 25.7 29.6 27.0 26.6 20.4
APEX-Agents 41.0 43.3 39.9 39.4 38.5 35.6
OfficeQA Pro 63.3 69.9 63.2 63.9 60.9 41.4
SpreadsheetBench 2 34.8 34.7 32.4 31.6 29.1 28.1
OSWorld-Verified 84.8 85.0 83.0 83.4 79.0 -
OSWorld 2.0 58.3 66.1 62.6 55.7 49.5 -
SaaS-Bench 60.1 - 61.4 56.1 43.8 -
\tau^3 -Banking 33.4 26.8 33.0 27.6 31.3 26.8
Harvey Lab-AA 94.6 93.6 87.2 91.1 86.3 91.0
CorpFin v2 71.6 71.8 64.4 66.7 68.4 66.1
Finance Agent v2 54.4 56.3 53.8 53.9 51.8 49.7
Legal Research Bench 44.2 49.5 48.1 43.8 40.4 31.3

에이전틱 축이 Kimi K3의 강점이 가장 넓게 드러나는 영역입니다. 검색과 리서치 계열에서 BrowseComp 91.2\% , DeepSearchQA 95.0\% (F1), ResearchRubrics 76.2\% 로 모두 1위이고, 도구와 MCP 사용 계열에서도 MCPMark-Verified 94.5\% , AutomationBench 30.8\% 로 앞섭니다. 전문 업무 계열에서는 법률 에이전트 벤치마크인 Harvey Lab-AA에서 기준 통과율 94.6\% , 은행 업무 대화를 다루는 \tau^3 -Banking에서 33.4\% , 스프레드시트 워크플로를 보는 SpreadsheetBench 2에서 34.8\% 로 1위입니다.

주된 예외는 Elo로 평가하는 지식 노동 스위트인데, 둘 다 Claude Fable 5가 이끕니다. GDPval-AA v2에서 1686 으로 3위, AA-Briefcase에서 1548 로 2위입니다. 그 밖에도 상당수 항목은 근소한 차이로 갈립니다. CorpFin v2와 OSWorld-Verified에서는 Claude Fable 5에 각각 0.2 점 차이로 붙었고, 도구 사용 종합 스위트 Toolathlon-Verified(76.577.9 )와 MCP-Atlas(84.284.7 )도 소폭 뒤처집니다. 반면 더 어려운 컴퓨터 사용 벤치마크인 OSWorld 2.0(58.3\% )과 SaaS-Bench(60.1\% ), 그리고 실제 채용 업무를 모사한 JobBench(54.3\% ), 문서 기반 질의응답인 OfficeQA Pro(63.3\% )에서는 격차가 조금 더 벌어집니다. 에이전트 종합 시험인 Agents' Last Exam에서는 28.3\% 로 GPT-5.6 Sol(29.6\% )에 이어 2위인데, 이 리더보드에서 Claude Fable 5 항목은 xhigh 강도로 실행되며 과제의 40\% 가 강등 표시된 상태라는 각주가 붙어 있습니다.

비전

벤치마크 Kimi K3 Claude Fable 5 GPT-5.6 Sol Claude Opus 4.8 GPT-5.5 GLM-5.2
WorldVQA ForceAnswer 51.0 56.7 41.8 39.1 38.5 -
OmniDocBench 91.1 89.8 85.8 87.9 89.4 -
PerceptionBench 58.5 57.2 59.7 47.2 55.8 -
Video-MME (자막 포함) 90.0 - 89.5 86.0 89.3 -
MMVU 82.1 - 81.2 79.2 81.7 -
BabyVision (Python 도구) 85.7 90.5 88.9 81.2 83.6 -
MMMU-Pro (도구 없음 / 있음) 81.6 / 83.4 81.2 / 86.5 83.0 / 84.6 78.9 / 82.7 81.2 / 83.2 -
CharXiv (RQ, 도구 없음 / 있음) 84.8 / 91.3 88.9 / 93.5 84.6 / 89.1 80.5 / 89.9 84.1 / 89.0 -
Math-Vision (도구 없음 / 있음) 94.3 / 97.8 94.8 / 98.6 95.8 / 97.8 86.7 / 97.1 92.2 / 96.8 -
ZeroBench-main (pass@5, 도구 없음 / 있음) 23.0 / 41.0 23.0 / 46.0 17.0 / 35.0 17.0 / 34.0 22.0 / 41.0 -

비전 축에서 눈에 띄는 것은 파이썬 도구가 붙었을 때의 증폭입니다. Math-Vision에서 94.3\% 가 도구를 쓰면 97.8\% 로 오르고, 까다로운 ZeroBench-main에서는 pass@5 23.0\% 로 Claude Fable 5와 동률이던 것이 도구를 쓰면 41.0\% 로 뛰어오릅니다. 앞서 강화학습 환경에서 살펴본 이미지를 자르고 확대하며 코드로 검증하는 시각 추론 학습이 여기에 직접 대응합니다. 문서 파싱을 보는 OmniDocBench에서 91.1\% , 영상 이해인 Video-MME(자막 포함) 90.0\% 와 MMVU 82.1\% 로 1위이고, 세계 지식을 묻는 WorldVQA에서는 51.0\% 로 Claude Fable 5에 이은 2위이지만 GPT-5.6 Sol(41.8\% )과 Claude Opus 4.8(39.1\% )은 크게 앞섭니다. 반면 원자적 시각 지각을 보는 자체 벤치마크 PerceptionBench(58.5\% )와 언어 없이 시각 추론을 요구하는 BabyVision(85.7\% )에서는 선두를 내줍니다.

벤치마크 표를 읽을 때 반드시 함께 봐야 하는 조건들이 있습니다. Kimi K3는 대체로 Kimi Code 하네스로 평가되었고, Claude 모델은 Claude Code, GPT 모델은 Codex로 평가되었습니다. 하네스를 바꾸면 점수도 바뀝니다. 예를 들어 DeepSWE에서 Kimi K3는 mini-SWE-agent 하네스로는 67.3\% 이고, Kimi Code Bench 2.0에서는 Kimi Code로 72.9\% , Claude Code로 73.7\% 입니다. BrowseComp의 91.2\%300 K 토큰에서 발동하는 컨텍스트 압축 전략을 쓴 결과이고, 100 만 토큰 컨텍스트를 그대로 쓰고 컨텍스트 관리를 하지 않으면 90.4\% 입니다. 또한 문서는 Claude Fable 5 결과에 폴백 동작이, GPT-5.6 Sol 결과에 사이버 가드가 포함될 수 있다고 명시합니다. SWE-Marathon에서는 Claude Fable 5가 과제의 35\% 에서 폴백에 걸렸다고 밝히고 있습니다.

내부 벤치마크가 더 선명하게 보여주는 것

문샷은 공개 평가가 충분히 다루지 못하는 능력 영역을 겨냥한 내부 벤치마크 모음을 유지합니다. 문서는 이쪽이 Kimi K3의 강점과 약점을 공개 벤치마크보다 훨씬 선명하게 갈라 준다고 밝히는데, 실제로 그렇습니다.

이 벤치마크들은 자주 갱신되고 확장되어 모델의 변화하는 실패 양상을 추적하고 데이터와 학습 반복을 직접 안내하는 역할을 합니다. 크게 코딩 능력과 경험, 일반 에이전트 경험, 대화 경험 세 갈래입니다.

벤치마크 하네스 Kimi K3 Claude Fable 5 GPT-5.6 Sol Claude Opus 4.8 GPT-5.5 GLM-5.2
Kimi Code Bench 2.0 Claude Code 73.7 76.9 - 71.7 - 64.2
Kimi Code Bench 2.0 Kimi Code 72.9 - - - 66.0 -
Kimi Code Bench 2.0 Codex - - 64.8 - 69.0 -
Coding Experience Claude Code 59.9 59.8 - 58.0 - 53.3
Coding Experience Kimi Code 56.6 - - - - -
Coding Experience Codex - - 59.3 - 56.8 -
24/7 ClawBench 2.0 OpenClaw 48.3 47.4 52.0 47.2 48.5 43.2
MIRA Bench MIRA 64.1 72.9 62.2 59.8 54.6 -
KAET Kimi Code 83.5 - 85.4 78.7 79.7 74.7
CLIF Bench Kimi Code 52.4 - 50.6 48.8 52.3 39.2
Agentic Vision Bench Kimi Code 78.3 81.1 82.9 82.8 76.9 -
Swarm Bench Kimi Agent 76.3 - 73.2 72.6 61.8 58.5
Online Experience Kimi Agent 77.9 74.2 84.0 69.4 73.7 64.0
Deep Research Bench Kimi Agent 90.0 - 85.3 87.2 81.9 84.0
Finance Bench - 62.6 - 62.7 60.7 58.4 55.4
KWV Bench - 64.7 63.6 66.9 61.7 65.8 -
DECK Bench - 73.5 73.0 74.7 66.9 68.2 68.6
Agent Behavior Bench Kimi Work 65.0 75.5 76.4 65.7 70.1 -
Faithfulness - 85.5 - 84.8 83.6 86.5 74.8
Chat All-in-One Bench Kimi Work 85.2 88.0 79.0 83.8 71.8 -

Kimi Code Bench 2.0에는 사이버 보안 및 안전 관련 과제가 포함되어 있어, 문샷은 거부되거나 폴백된 과제 비율도 함께 공개했습니다. 80 개 과제 중 Claude Fable 5는 폴백 13 건과 거부 1 건, GPT-5.6 Sol은 사이버 가드에 걸린 거부 10 건, GPT-5.5는 거부 3 건이 있었습니다. Claude Fable 5 쪽에는 거부가 점수에 포함된 항목이 더 있습니다. Online Experience에 14 건, 24/7 ClawBench 2.0에 2 건, Agent Behavior Bench에 95 개 중 6 건입니다. 표의 빈칸은 이 기술 문서 시점에 아직 채워지지 않은 값입니다.

각 벤치마크가 무엇을 재는지 짧게 정리하면 이렇습니다.

코딩 능력과 경험:

  • Kimi Code Bench 2.0: 다양한 언어와 실무 기술 스택에 걸친 종단간 소프트웨어 엔지니어링 과제
  • Kimi Webdev Bench: 실제 사용 시나리오에서 뽑은 까다로운 웹 개발 프롬프트, 블라인드 전문가 심사
  • Coding Experience: 실제 개발 워크플로에서 코딩 에이전트로 함께 일할 때의 실용적 경험

일반 에이전트 경험:

  • 24/7 ClawBench 2.0: 과제가 여러 날에 걸치고 사건이 동시에 도착하며 중단이 일상인 상시 비서 업무
  • MIRA Bench: 긴 사슬의 다중 역할 다중 시스템 기업 협업 과제와 서브에이전트에게 위임할 시점 판단
  • KAET: 실제 사용자 요청과 기업 시스템 운영을 모사한 긴 호흡 자율 실행
  • CLIF Bench: 주어진 맥락에서 배우면서 여러 복잡한 스킬이 뒤섞인 지시를 따르는 문맥 학습 능력
  • Agentic Vision Bench: 과제 수행 중 핵심 시각 사실을 알아차리고 올바르게 쓰는지
  • Swarm Bench: 복잡한 과제에서 에이전트 스웜을 조율하는 능력
  • Online Experience: 실제 온라인 사용 분포를 반영한, 사용자가 가장 많이 요청하는 산출물 파일 유형별 성능
  • Deep Research Bench: 전문가가 큐레이션하고 전문가 정렬 채점 기준으로 채점한 심층 리서치 질의
  • Finance Bench: 원자료에서 검토 가능한 산출물까지 이어지는 금융 업무 전체 실행
  • KWV Bench: 실제 지식 노동 시나리오에서 추출한 원자적 시각 능력
  • DECK Bench: 실제 사용 시나리오의 과제 설명에서 고품질 발표 자료를 만드는 능력
  • Agent Behavior Bench: 결과의 정확성을 넘어 도구 사용 행동과 효율성, 규율 같은 과정 품질

대화 경험:

  • Faithfulness: 사실 검증기로 확인한 환각률의 역수(높을수록 좋음)
  • Chat All-in-One Bench: 제품 사용 전 단계에 걸친 대화 경험

가장 분명한 강점은 오케스트레이션과 리서치형 에이전시입니다. Swarm Bench 76.3 과 Deep Research Bench 90.0 에서 뚜렷한 차이로 앞서, 복잡한 목표를 분해하고 병렬 작업을 조율하며 채점 기준을 만족하는 산출물을 만드는 능력이 강함을 보여줍니다. 코딩도 강점입니다. Kimi Code Bench 2.0에서 Claude Fable 5에만 뒤지고, Coding Experience에서는 최고점을 받았습니다. 문서는 이를 두고 코딩 에이전트로서의 실용적 행동, 즉 소통 품질과 행동의 적절성, 지시 이행 안정성이 원시 과제 점수보다 앞서 있음을 시사한다고 해석합니다.

내부 Kimi Webdev Bench의 블라인드 전문가 심사 결과가 특히 눈에 띕니다. Claude Opus 4.8과 비교해 전체적으로 승률에서 패율을 뺀 값이 +31.0 포인트이고, 3D 및 WebGL 셰이더 과제에서는 +59.1 포인트로 격차가 가장 큽니다.

도메인 승 - 패
게임 55.6 3.7 40.7 +14.9
3D / WebGL / 셰이더 72.7 13.7 13.6 +59.1
웹사이트 / UI 클론 52.6 21.1 26.3 +26.3
전체 58.6 13.8 27.6 +31.0

반대로 Kimi K3가 선두에 뒤진 영역은 Agent Behavior Bench, MIRA Bench, 24/7 ClawBench 2.0, Agentic Vision Bench, KWV Bench입니다. 특히 Agent Behavior Bench는 결과의 정확성을 넘어 과정 품질, 즉 도구 사용 행동과 효율성, 규율을 채점하는 벤치마크인데 여기서 65.0 으로 GPT-5.6 Sol(76.4 )과 Claude Fable 5(75.5 )에 크게 뒤처집니다. 뒤에서 다룰 "과도한 적극성" 한계와 맞물려 읽히는 지점입니다.

사이버 보안 평가: 취약점 발견과 익스플로잇 개발

기술 문서에는 다른 모델 카드에서 보기 드문 절이 하나 있습니다. 모델의 사이버 보안 능력을 운영적 위험이 커지는 두 단계로 나눠 평가한 결과입니다. Tier 1은 취약점 발견과 개념 증명 개발이고, Tier 2는 종단간 익스플로잇 개발입니다. Anthropic과 OpenAI의 프론티어 모델은 사이버 관련 과제를 거부하므로 비교 평가가 불가능해 이 스위트에서 제외했다고 밝히고 있습니다.

Tier 1(취약점 발견) 은 알려진 취약점을 재현하는 것이 아니라 현재 코드베이스에서 진짜 버그를 찾아내고 재현 가능함을 입증하는 과제로, 주로 방어적 보안 연구와 연결됩니다. 운영체제 커널, 데이터베이스, AI 서비스, 웹 프레임워크, 블록체인, VPN 소프트웨어 등 널리 배포된 수십 개 시스템에서 모델은 수백 개의 후보 취약점을 찾아냈고, 사람이 검토한 발견 중 약 70\% 가 진짜로 확인되었으며 그중 여섯 개 프로젝트에 걸쳐 16 개는 이전에 알려지지 않은 취약점이었습니다.

리눅스 커널에서 나온 두 발견이 결과의 깊이를 보여줍니다. 첫째는 원격에서 촉발 가능한 힙 범위 초과 쓰기로, 불완전한 업스트림 수정에서 비롯되어 이후 모든 릴리스와 최신 업스트림 코드까지 영향을 줍니다. 보안 전문가들이 원격 서비스 거부 프리미티브로 확인했습니다. 둘째는 RDMA 서브시스템의 Dirty COW 계열 취약점으로, 이전 업스트림 수정이 권한 검사를 의도치 않게 빠뜨려 커널 측에서 읽기 전용 메모리 페이지에 쓸 수 있게 된 사례입니다. 전문가들이 결정론적 로컬 권한 상승 프리미티브로 확인했습니다.

Tier 2(익스플로잇 개발) 는 취약점을 동작하는 종단간 익스플로잇으로 전환하는 단계로, 오용 위험과 가장 직접적으로 관련됩니다. GLM-5.2를 기준선으로 두고 두 트랙, 총 36 개 과제 스위트에서 평가했습니다. 사용자 공간 익스플로잇 16 개는 PostgreSQL, XWiki, Apache HTTP Server 등 널리 배포된 소프트웨어의 실제 CVE를 종단간으로 익스플로잇하는 과제이고, 리눅스 커널 익스플로잇 20 개는 과거 커널 CVE로 만든 재현 가능한 QEMU 환경에서 비특권 사용자로부터 루트로 권한을 상승시키는 C 익스플로잇을 작성하는 과제입니다. 모든 과제는 사람 보안 전문가가 풀 수 있음을 검증했고, 전체 스위트 완주에 약 540 전문가 시간, 과제당 평균 약 15 시간이 필요하다고 추정합니다.

결과는 36 개 중 14 개(38.9\% )를 해결해 GLM-5.2의 8 개(22.2\% )를 앞섭니다. 다만 성공이 고르지 않아 14 개 중 10 개가 사용자 공간 트랙에서 나왔고, 커널 트랙에서는 두 모델 모두 과제의 \frac{3}{4} 을 풀지 못했습니다. 모든 과제가 전문가에게는 풀리므로, 풀리지 않은 과제가 곧 사람 수준까지의 남은 격차를 측정합니다. 궤적 분석은 그 격차를 네 가지 반복되는 실패 양상으로 설명합니다. 이미 확보한 프리미티브에서 익스플로잇 체인의 마지막 단계를 완성하기 어려워하는 것, 완화 기법 아래에서 전략 선택이 나빠 데이터 전용 공격이 더 간단하고 신뢰할 만한데도 제어 흐름 탈취를 고집하는 것, 길고 비생산적인 디버깅 루프에 갇히는 것, 제출 전 최종 산출물 검증이 부족한 것입니다.

영국 AI 보안 연구소(UK AISI)와 미국 NIST의 CAISI가 공동으로 수행한 독립 평가도 비슷한 결론에 도달했습니다. Kimi K3는 익스플로잇 개발에서 GLM-5.2를 앞섭니다. ExploitBench에서 32\%24\% 이고, 사람 전문가가 약 20 시간 걸리는 32 단계 모의 기업 네트워크 침투에서 17 단계를 진행해 GLM-5.2의 11 단계를 앞섰습니다. 그러나 종단간 익스플로잇 완성에서는 프론티어 사이버 능력 모델에 뒤져 41 개 과제 중 0 개에서만 임의 코드 실행에 성공했습니다. 문샷은 자체 평가를 능력의 하한으로 보며, 현재 모델 버전과 평가 커버리지에 조건부인 결과이므로 주요 모델 갱신마다 다시 확인하겠다고 밝혔습니다.

제3자 평가

평가 Kimi K3 Claude Fable 5 GPT-5.6 Sol Claude Opus 4.8 GPT-5.5 GLM-5.2
Artificial Analysis Intelligence Index v4.1 (580개 중 4위) 57.1 59.9 58.9 55.7 55.0 51.1
Vals Index (39개 중 2위) 74.7 75.1 73.1 70.4 68.0 65.0
WebDev Arena (Elo, 99개 중 1위) 1,678 1,634 1,630 1,565 1,507 1,592
Text Arena (Elo, 200개 중 8위) 1,486 1,507 1,485 1,484 1,482 1,469
Agent Arena (37개 중 4위) 9.1 12.7 10.1 9.8 8.8 6.5

가장 눈에 띄는 기록은 WebDev Arena입니다. Kimi K3는 99 개 모델 중 1 위(1{,}678 Elo)로, 이 리더보드 정점에 오른 첫 오픈 모델입니다. 내부 Kimi Webdev Bench의 3D 및 WebGL 강세와 방향이 일치합니다. 반면 Agent Arena에서는 37 개 중 4 위에 머물러, 사람 선호 기준에서는 여전히 격차가 있습니다.

비용 효율

점수만이 아니라 과제당 비용 대비 점수도 함께 봐야 그림이 완성됩니다.

Kimi Code Bench 2.0에서 Kimi K3는 Claude Fable 5보다 4.0 점 뒤지지만 비용은 38\% 수준이고, 고강도 설정만으로도 이미 Claude Opus 4.8의 최대 강도 점수를 약 \frac{1}{3} 비용으로 따라잡습니다. BrowseComp에서는 과제당 2.03 달러로 최고점(91.2\% )을 받았는데, 이는 GPT-5.6 Sol(90.4\% )의 절반 비용이고 최대 강도의 Claude 모델들보다는 한 자릿수 배 저렴합니다. GDPval-AA v2에서는 GPT-5.6 Sol과 50 Elo 이내 차이를 13\% 낮은 비용으로 냈고 Claude Fable 5보다 2.6\times 저렴합니다. AA-Briefcase에서는 Claude Fable 5에 이은 2위 점수를 대략 절반 비용으로 달성했습니다.

사례 연구: 모델이 자기 아키텍처의 커널을 최적화하다

GPU 커널 최적화

각 모델에 동일하게 구성된 샌드박스와 과제당 최대 24 시간의 예산을 주고 프로파일링, 재작성, 벤치마킹을 시켰습니다. 평가 대상은 AttnRes, DeepSeek Sparse Attention(DSA), KDA, 그리고 헤드 차원 512 의 MLA 커널 네 가지이며, NVIDIA Hopper GPU와 다른 벤더의 범용 GPU에서 수행되었습니다.

Kimi K3는 네 커널 모두에서 성능을 크게 개선했습니다. AttnRes 지연을 283.6 ms에서 114.4 ms로 줄이고, DSA와 KDA 실행 시간을 각각 55.1\%73.6\% 단축했으며, MLA에서 최대 TFLOPS의 절반 이상에 도달했습니다. 이 과제들에서 Kimi K3는 (폴백을 포함한) Claude Fable 5와 대등했고 Claude Opus 4.8, GPT-5.6 Sol, GPT-5.5를 크게 앞섰습니다.

이 사례에서 가장 인상적인 대목은 벤치마크 밖에 있습니다. 개발 후반부에는 이미 초기 Kimi K3 체크포인트가 팀의 커널 최적화 작업 대부분을 처리하고 있었다고 합니다. 모델이 자기 아키텍처를 위한 커널을 최적화하는 순환이 생긴 셈입니다.

MiniTriton: 밑바닥부터 만든 GPU 컴파일러

Kimi K3는 MiniTriton을 만들었습니다. 자체 타일 수준 파이썬 프론트엔드와 레이아웃 시스템, 경량 워프 수준 MLIR 주석 및 최적화 계층, PTX 코드 생성 파이프라인을 갖춘 소형 Triton 계열 컴파일러입니다. 컴파일러 위에는 PyTorch를 닮은 고수준 인터페이스를 가진 이중 모드 텐서 라이브러리가 있고, 즉시 실행 경로와 순방향 전용 컴파일 경로가 같은 DSL 컴파일러와 런타임을 공유합니다. 라이브러리는 역방향 자동미분과 신경망 모듈, NCCL 기반 분산 학습 프리미티브, 희소 및 시각화 프리미티브까지 제공합니다.

성능도 장식이 아닙니다. NVIDIA L20에서 MiniTriton은 핵심 벤치마크 스위트의 기하 평균에서 PyTorch 즉시 실행과 torch.compile 을 앞섭니다. 밑바닥부터 만든 텐서 코어 행렬곱 경로는 가장 큰 형태에서 cuBLAS에 근접해 측정된 기계 상한의 약 90\% 에 도달하고, DSL 수준 KDA 프리필 커널은 동등 조건의 Triton 참조를 분명한 차이로 앞섭니다. GPT 모델을 종단간으로 학습시켜 손실 곡선이 PyTorch 참조를 밀접하게 따라가고, 전체 모델 경사가 torch 자동미분과 10^{-4} 수준, 즉 torch 자체의 FP32 반올림 오차 이내로 일치함을 FP64 참조에 대해 측정했습니다.

칩 설계

개념 증명으로, Kimi K3는 자기와 같은 아키텍처를 따르는 나노 모델을 위한 추론 칩 프로토타입을 설계했습니다. 하이브리드 KDA와 NoPE-MLA 어텐션, 블록 크기 2 의 Block AttnRes, 공유 전문가 하나를 가진 시그모이드 기반 MoE 라우팅을 그룹 크기 128 의 그룹별 INT4 가중치 양자화 아래 구현했습니다. Kimi Code로 진행된 단 한 번의 48 시간 자율 실행에서, 오픈소스 EDA 도구와 Nangate45 표준 셀 라이브러리를 써서 칩을 만들고 최적화하고 검증했습니다. 4 mm$^2$ 의 해석적 면적 예산 안에서 100 MHz 타이밍을 맞추고 RTL 시뮬레이션 기준 초당 8{,}700 개 이상의 토큰 디코드 처리량을 달성하며, 표준 셀 146 만 개와 0.277 MiB SRAM, 융합 역양자화를 갖춘 INT4 MAC 배열을 통합했습니다. RTL 코드는 nano-kpu 저장소에 공개되어 있습니다.

연구용 코딩, 지식 노동, 영상 편집

계산 천체물리학의 I-Love-Q 보편 관계를 재현하는 과제에서, Kimi K3는 20 편이 넘는 논문을 검토하고 교차 검증하며, 전체 수치 파이프라인을 구현하고 300 개 이상의 상태 방정식을 평가했으며, 발표된 수식들에서 불일치를 찾아냈고, 3{,}000 줄이 넘는 파이썬 코드를 작성해 인터랙티브 HTML 대시보드를 만들었습니다. 숙련된 연구자가 통상 1 주에서 2 주 걸리는 작업을 약 2 시간에 마쳤습니다.

지식 노동에서는 Kimi Work에서 AI ASIC 산업 42 년을 다루는 인터랙티브 리서치 웹사이트를 만들었습니다. 120 회가 넘는 반복 개선을 거치며 87 개 분기 보고서와 99 개 원본 PDF, 총 11{,}000 쪽이 넘는 자료를 2{,}800 회 이상의 웹 검색과 1{,}100 회 이상의 터미널 질의로 훑었습니다. 또 다른 사례에서는 GWTC-5의 중력파 사건 391 건을 20 개 이상의 동시 서브에이전트로 분석해 과학적 시각화 7 개와 요약 표 2 개, 10 편 이상의 논문에 대한 문헌 종합을 만들었습니다.

영상 편집에서는 네이티브 멀티모달 구조를 활용해 자기 아키텍처를 설명하는 3Blue1Brown 스타일 모션 그래픽 해설을 만들고, 56 개 소스 클립으로 자신의 티저 영상을 편집했습니다. 클립 선택과 모션이 맞물리는 컷, 프레임 단위 비트 동기화, 오디오 처리, 여러 차례의 수정이 포함된 작업입니다.

한계와 시사점

문샷은 세 가지 한계를 명시합니다.

사고 이력에 대한 민감성. Kimi K3는 사고 이력 보존 모드로 학습되었습니다. 에이전트 하네스가 요구대로 과거 사고 내용을 전부 되돌려 주지 못하거나, 다른 모델로 진행 중인 세션을 K3로 전환하면 생성 품질이 크게 불안정해질 수 있습니다. 호환성이 검증된 하네스를 쓰고 세션 도중 모델을 K3로 바꾸지 않는 것이 권장됩니다. 앞서 살펴본 XTML 템플릿의 think 채널 설계를 알고 나면 이 제약이 왜 근본적인지 이해가 됩니다. 모델이 학습 내내 관찰한 메시지 구조 자체가 사고 채널의 존재를 전제하기 때문입니다.

과도한 적극성. K3의 학습은 긴 호흡의 어려운 과제를 특히 강조합니다. 그 결과 과제 수행 중 사소한 문제나 모호한 사용자 의도를 만나면 사용자를 대신해 예상 밖의 결정을 내릴 수 있습니다. 에이전트가 잘 정의된 경계 안에서 동작하고 즉흥적 판단을 자제해야 하는 애플리케이션이라면, 시스템 프롬프트나 AGENTS.md 에 행동 제약을 더 명시적으로 두라고 권합니다. 앞서 내부 평가에서 Agent Behavior Bench 점수가 상대적으로 낮았던 것과 같은 뿌리를 가진 문제로 보입니다. 긴 호흡 자율성을 강하게 학습시킨 결과가 짧고 모호한 상황에서는 과잉 개입으로 드러나는 셈입니다.

사용자 경험 격차. 전반적으로 매우 경쟁력 있는 모델이지만, 사용자 경험 측면에서는 Claude Fable 5와 GPT-5.6 Sol에 눈에 띄는 격차가 남아 있다고 스스로 인정합니다.

이 한계들을 감안해도 Kimi K3 기술 문서가 남기는 의미는 분명합니다. 첫째, 오픈 모델이 3 조급 규모에 도달했다는 사실보다 중요한 것은 그 규모를 감당하기 위해 어떤 설계 결정이 필요했는지가 문서로 공개되었다는 점입니다. 수치 안정성 제약이 커널 성능으로 이어진 하한 감쇠, 하이퍼파라미터를 통계량으로 대체한 Quantile Balancing, 상한을 증명한 뒤 정적 형태와 무동기 실행을 얻어낸 MoonEP처럼, 문서의 상당 부분은 "규모가 커지면 이전에는 사소했던 것이 일급 문제가 된다" 는 관찰과 그 대응으로 채워져 있습니다.

둘째, 사후 학습의 무게중심이 옮겨가고 있습니다. 도메인과 추론 강도를 교차해 아홉 개 전문가를 만들고 다중 교사 온폴리시 증류로 합치는 레시피, 하네스 자체를 학습 변수로 만든 화이트박스 환경, 검증기를 루프에 넣은 자율 실행 과제는 모두 "무엇을 답하는가" 보다 "긴 시간에 걸쳐 어떻게 일하는가" 를 학습시키는 장치입니다. 양자화와 추측 디코딩이 사후 처리가 아니라 사후 학습 안으로 들어온 것도 같은 방향입니다.

셋째, 인프라가 모델 설계의 제약 조건이자 결과물이 되었습니다. KDA를 쓰기로 한 결정이 접두어 캐시 설계를 다시 쓰게 만들고, 그 구현이 vLLM 커뮤니티에 기여되어 다시 생태계로 돌아갑니다. 오픈 웨이트 모델의 가치가 가중치 파일 하나에 그치지 않는 이유를 이 순환이 잘 보여줍니다.

사용 방법

Kimi K3는 항상 사고가 켜져 있고 reasoning_content 를 반환합니다. 사고 강도는 최상위 reasoning_effort 요청 필드로 설정하며 "low" , "high" , "max" 를 지원하고 기본값은 "max" 입니다.

가장 주의할 점은 앞서 다룬 사고 이력 보존입니다. 다중 턴 대화와 도구 호출에서 Kimi K3는 API가 반환한 어시스턴트 메시지 전체를 content 만이 아니라 reasoning_contenttool_calls 까지 포함해 그대로 messages 에 다시 넣어 주기를 요구합니다.

import openai

def chat_with_preserved_thinking(client: openai.OpenAI, model_name: str):
    messages = [
        {"role": "user", "content": "Tell me three random numbers."},
        {
            "role": "assistant",
            "reasoning_content": "I'll start by listing five numbers: 473, 921, 235, 215, 222, and I'll tell you the first three.",
            "content": "473, 921, 235",
        },
        {"role": "user", "content": "What are the other two numbers you have in mind?"},
    ]

    response = client.chat.completions.create(
        model=model_name,
        messages=messages,
        stream=False,
        max_tokens=4096,
        reasoning_effort="max",
    )
    return response.choices[0].message.content

자체 서빙은 vLLM, SGLang, TokenSpeed에서 지원됩니다. 다만 규모를 감안해야 합니다. 추론 효율이 더 큰 고대역폭 통신 도메인에서 이득을 보므로, 문샷은 가속기 64 개 이상을 묶은 슈퍼노드 구성에 배포하기를 권장합니다. API 가격은 100 만 토큰당 캐시 적중 입력 0.30 달러, 캐시 미적중 입력 3.00 달러, 출력 15.00 달러이며, Mooncake의 분리형 추론 아키텍처를 기반으로 코딩 워크로드에서 90\% 를 넘는 캐시 적중률을 달성한다고 합니다. 가중치와 코드는 모두 Kimi K3 라이선스로 공개되었습니다.

:scroll: Kimi K3: Open Frontier Intelligence 기술 문서

:scroll: Kimi K3 기술 블로그

:github: Kimi K3 GitHub 저장소

:hugs: Kimi-K3 (Hugging Face)

:github: MoonEP GitHub 저장소

:github: MiniTriton GitHub 저장소

:github: nano-kpu GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: