README.md, LICENSE, 그리고 기술보고서 PDF(k3_tech_report.pdf) 딱 하나가 들어 있다. 즉 이 딥다이브는 "코드베이스 해부"가 아니라 한 편의 기술보고서를 초보자가 읽어낼 수 있게 풀어 쓰는 작업이다. 그 안에 KDA·Gated MLA·AttnRes·Stable LatentMoE 같은 새 이름들이 빼곡히 들어 있다.
MoonshotAI/Kimi-K3 · 라이선스 Kimi K3 License(커스텀, MIT 유사) · 공개 2026-07-27 · ★ 3,336 · 포크 267 · 이슈 10 · 가중치는 huggingface.co/moonshotai 배포 · 기술보고서 PDF 직접 분석)
먼저 이름부터 풀자. Kimi는 Moonshot AI가 만든 AI 어시스턴트 브랜드(우리로 치면 ChatGPT 같은 제품명)이고, K3는 그 밑에서 도는 3세대 기반 모델이다. 계보는 K2 → K2.5 → K3로 이어진다. 이번 K3의 새로움은 두 단어로 요약된다 — 더 크게(2.8조), 더 싸게(효율 2.5배).
규모를 감으로 잡아 보자. 보통 우리가 아는 오픈 모델(Llama 70B 등)은 파라미터가 수백억(B) 단위다. Kimi-K3는 총 2조 8천억 개다. 그런데 이 숫자를 그대로 "매번 2.8조 개를 계산한다"고 읽으면 안 된다. 핵심은 MoE(Mixture-of-Experts)라는 구조에 있다.
일반 모델(밀집/dense 모델)은 모든 의사가 모든 환자를 다 본다. 정확할지 몰라도 의사가 많아질수록 진료가 느려지고 비싸진다. 그래서 밀집 모델은 크기를 키우기가 부담스럽다.
Kimi-K3(MoE)는 접수처에 라우터(router)라는 안내 데스크를 둔다. 환자(토큰)가 오면 증상을 보고 "당신은 심장내과 3번, 영상의학과 7번… 이렇게 16명에게 가세요"라고 배정한다. 병원 전체 의사는 896명이라 어떤 희귀병이 와도 담당 전문가가 있지만, 실제 회진 부담은 16명분뿐이다.
여기에 공유 전문가 2명이 늘 상주한다 — 모든 환자에게 공통으로 필요한 기본 검진(활력 징후 등)을 담당하는 당직의다. 전문 지식은 나눠 갖되, 기본기는 공유해서 중복 학습을 줄인다.
이 병원에는 특별한 점이 하나 더 있다. 글자만 읽는 게 아니라 사진과 영상도 본다. Kimi-K3는 자체 눈(비전 인코더 MoonViT-V2)을 달고 태어나서, 문서 스캔·차트·비디오 프레임을 텍스트와 같은 통로로 이해한다. 그리고 한 번에 기억할 수 있는 분량이 100만 토큰(책 여러 권 분량)이라, 긴 코드베이스 전체나 장시간 에이전트 작업 로그를 통째로 머릿속에 올려놓고 일할 수 있다.
기술보고서의 태도가 이례적으로 솔직하다. Kimi-K3는 스스로 최정상 상용 모델인 Claude Fable 5, GPT-5.6 Sol에는 종합적으로 뒤진다고 못 박는다. 대신 그 두 개를 뺀 다른 모든 오픈·상용 모델(Claude Opus 4.8, GPT-5.5, GLM-5.2 등)은 일관되게 능가한다고 주장한다.
보고서가 내세운 대표 점수들이다(Kimi K3 max 설정 기준). 특히 코딩·에이전트·검색 계열에서 강하다.
| 벤치마크 | 측정 대상 | Kimi-K3 |
|---|---|---|
| FrontierSWE | 실전 소프트웨어 이슈 해결 | 81.2 (Opus 4.8=66.7 압도, Fable 5=86.6에만 뒤짐) |
| SWE-Marathon | 장기 호흡 코딩 | 42.0 (평가 전 모델 중 1위) |
| BrowseComp | 웹 탐색 에이전트 | 91.2 |
| DeepSearchQA (F1) | 심층 검색 QA | 95.0 |
| GPQA Diamond | 대학원급 과학 추론 | 93.5 |
| OmniDocBench | 문서 이미지 이해(비전) | 91.1 (1위) |
| Video-MME | 비디오 이해 | 90.0 |
위 표는 전부 Moonshot AI가 자사 기술보고서에 실은 자체 측정치다. 제3자 재현이나 독립 리더보드 검증을 거친 값이 아니다. 모델 제작사가 자기 모델에 유리한 설정·프롬프트를 골랐을 가능성은 늘 존재한다. "1위"라는 표현도 보고서가 비교 대상으로 고른 모델들 안에서의 1위임을 기억하자. 실제 체감 성능은 공개 리더보드(LMArena 등)와 사용자 후기가 쌓여야 판가름 난다.
스케일만 키운 게 아니다. 보고서는 K2 대비 전체 스케일링 효율을 약 2.5배 개선했다고 주장하는데, 그 핵심에 KDA(Kimi Delta Attention)라는 새 어텐션이 있다. 뒤 §4에서 자세히 풀지만, 한 줄로 말하면 "긴 문맥을 처리할 때 계산량이 폭발하지 않도록 설계한 선형 계열 어텐션"이다. 트랜스포머의 고질병인 "길이가 늘면 비용이 제곱으로 증가"를 완화하는 시도다.
대부분의 오픈 모델은 이 둘 중 하나만 잘한다. Kimi-K3는 100만 토큰 컨텍스트와 이미지·비디오 이해를 하나의 모델에 담았다. 게다가 컨텍스트 확장 방식이 특이하다 — 위치 정보를 넣는 흔한 트릭(RoPE 재조정, YaRN)을 안 쓰고, 아예 위치 인코딩을 빼는 NoPE 레이어로 1M까지 늘렸다(§4-2 참조).
2.8조짜리 모델을 누가 돌리나? Moonshot은 이걸 예상하고 학습 단계부터 4비트 양자화를 염두에 둔(QAT) 상태로 만들었다. 전문가 가중치를 MXFP4(4비트)로 표현해 서빙 메모리와 비용을 줄였다. "크게 만들되, 굴릴 수 있게"라는 실용적 균형이다.
보고서에 등장하는 경쟁 모델명(GPT-5.6 Sol, Claude Fable 5, Claude Opus 4.8, GLM-5.2)과 날짜는 모두 이 문서 작성 시점 기준으로 실재하는 최신 명칭이다. 아래 모든 수치·이름은 실제 클론한 저장소의 README·LICENSE·PDF 원문 그대로이며, 추정으로 채운 부분은 "확인 불가"로 표기했다.
Kimi-K3는 웹 서비스가 아니라 신경망 한 덩어리다. 그래서 "기술 스택"을 코드 언어가 아니라 모델을 구성하는 부품으로 읽어야 한다. README의 Model Summary 표를 기준으로 정리하면 이렇다.
| 항목 | 값 | 초보자 해설 |
|---|---|---|
| 총 파라미터 | 2.78T (2.8조) | 모델이 저장한 지식의 총량 |
| 활성 파라미터 | 104.2B | 토큰 1개당 실제로 켜지는 양(≈ 실 계산 비용) |
| 레이어 수 | 93 (밀집 1개 포함) | 정보가 통과하는 층의 개수 |
| 어텐션 구성 | 69 KDA + 24 Gated MLA | 두 종류 어텐션을 섞어 쌓았다 (§4) |
| 어텐션 hidden dim | 7,168 | 한 토큰을 표현하는 벡터의 폭 |
| 어텐션 헤드 수 | 96 | 문맥을 동시에 여러 각도로 보는 눈 개수 |
| 전문가 수(routed) | 896 | MoE의 전문가 총원 |
| 토큰당 활성 전문가 | 16 + 공유 2 | 질문마다 회진 도는 전문의 수 |
| 어휘 크기(Vocab) | 160K | 모델이 아는 토큰(단어 조각)의 종류 |
| 활성함수 | SiTU-GLU | 전문가 내부의 비선형 처리 방식(§4-3) |
| 비전 인코더 | MoonViT-V2 (401M) | 이미지·비디오를 읽는 눈 |
| 컨텍스트 길이 | 1,048,576 (1M) | 한 번에 기억하는 최대 분량 |
| 양자화 | MXFP4 가중치 / MXFP8 활성값 | 4비트로 압축해 서빙 (QAT) |
93개 레이어 중 69개는 KDA, 24개는 Gated MLA다. 왜 하나로 통일하지 않았을까? 각각 잘하는 게 다르기 때문이다.
KDA는 싸지만 멀리 못 보는 선형 어텐션이고, Gated MLA는 비싸지만 문맥 전체를 정밀하게 연결하는 어텐션이다. 값싼 KDA를 3개 깔고 정밀한 MLA를 1개 끼우기를 반복하면, 대부분의 계산은 싸게 하면서도 주기적으로 전역 정보를 섞을 수 있다. "동네 순찰차 3대 + 헬기 1대" 조합인 셈이다.
이미지와 비디오는 MoonViT-V2(27레이어, 약 401M 파라미터)라는 별도 인코더가 먼저 처리한다. 특징은 이미지와 비디오가 파라미터를 완전히 공유한다는 점 — 비디오는 그냥 "시간축이 붙은 이미지"로 취급한다. 그리고 LLM에 넘기기 전에 2×2 pixel-shuffle로 다운샘플해 비주얼 토큰 수를 1/4로 줄인다. 그래야 최대 3584×3584 크기 이미지도 1M 컨텍스트 예산 안에 욱여넣을 수 있다.
이미지 한 장을 그대로 토큰으로 바꾸면 어마어마하게 많아진다. 1M 컨텍스트라도 고해상도 이미지 몇 장이면 금세 꽉 찬다. pixel-shuffle은 인접한 2×2 픽셀 정보를 하나로 접어 개수를 줄이되 정보는 채널 방향으로 보존하는 기법이다. "해상도를 버리는 게 아니라, 넓게 펴 있던 걸 두껍게 접는다"고 보면 된다.
Kimi-K3 기술보고서의 핵심 신규 요소는 크게 어텐션 쪽 3가지 + MoE 쪽 1가지다. 하나씩, 왜 필요했는지부터 풀어 본다.
KDA는 이 선형 어텐션 계열의 최신 변형(Moonshot의 이전 연구 "Kimi Linear"의 후속)이다. 이름의 Delta(Δ)는 상태를 통째로 갈아치우지 않고 "차이(변화분)만 반영해 갱신"하는 델타 규칙에서 왔다. 보고서가 강조하는 실무적 트릭 두 가지:
16토큰 타일로 잘라, 타일 안은 GPU가 좋아하는 밀집 행렬곱으로 병렬 처리하고, 타일 사이만 재귀로 잇는다. "순차적이라 느리다"는 선형 어텐션의 약점을 하드웨어 친화적으로 우회한 것.
이걸 실제로 빠르게 돌리려고 전용 커널 FlashKDA(Triton 레퍼런스 구현보다 대폭 빠름)와 학습·prefill·디코딩 각 단계용 최적화(KDA Context Parallelism, state-aware prefix caching)를 따로 만들었다.
일반 어텐션이 "회의실에 온 모두가 서로 일일이 악수"라면(참석자가 늘면 악수 횟수가 폭발), KDA는 "입장하는 사람이 방명록(state) 하나에 자기 요약만 갱신하고 지나간다"에 가깝다. 방명록만 보면 지금까지의 흐름을 알 수 있으니, 사람이 100만 명 와도 비용은 인원수에 비례할 뿐이다.
KDA가 값싼 다수라면, Gated MLA(24개 레이어)는 주기적으로 등장해 전역 상호작용을 보존하는 정밀 어텐션이다. MLA(Multi-head Latent Attention)는 어텐션의 키·값을 저차원 latent로 압축해 메모리(KV 캐시)를 줄이는 기법으로, 이미 DeepSeek 등이 쓴 계열이다. Kimi는 여기에 게이팅(gated)을 더했다.
더 흥미로운 건 위치 정보 처리다. 이 레이어들은 NoPE(No Positional Encoding)를 쓴다.
실제 확장 절차도 점진적이다 — 사전학습 중 8K → 64K로 늘리고, cooldown 단계에서 256K → 1M까지 밀어 올린다. 위치 인코딩을 손대지 않으니 이 확장이 매끄럽다.
앞의 두 개가 "옆(시퀀스) 방향" 연결이라면, AttnRes는 "위아래(깊이) 방향" 연결이다. 93층이나 쌓으면 아래층의 정보가 위층까지 도달하며 희석된다. AttnRes는 각 레이어가 학습된 pseudo-query로 이전 모든 레이어의 표현에 데이터 의존적으로 직접 접근하게 한다.
보통의 잔차연결은 "바로 아래층 결과를 그대로 더해 준다" — 옆집에서만 정보를 받는다. AttnRes는 "필요하면 20층 아래 자료실까지 직접 열람"할 수 있게 한다. 다만 모든 레이어가 모든 하위 레이어를 보면 비용이 크니, 레이어들을 몇 개 블록으로 묶어 블록 단위로만 접근하는 Block Attention Residuals로 오버헤드를 줄였다.
전문가를 896명까지 늘리면 새 문제가 생긴다. 극단적으로 희소한(sparse) 라우팅은 학습이 불안정하고, 특정 전문가에게 일이 몰리는 로드 불균형이 심해진다. Kimi-K3의 Stable LatentMoE는 이걸 세 가지로 잡는다.
| 장치 | 역할 |
|---|---|
| Normalized LatentMoE | 전문가 가중치를 latent 공간에서 분리·정규화해, 라우팅 다중도가 커질 때의 트래픽·불안정을 완화 |
| SiTU-GLU 활성함수 | 전문가 내부의 비선형 처리를 안정화하는 새 활성함수(GLU 계열 변형) |
| Quantile Balancing | 전문가 부하를 분위수 기준으로 고르게 맞추는 로드밸런싱 — "일 몰림"을 막는다 |
모델 구조만큼 어떻게 학습시켰나도 이 보고서의 볼거리다.
MoonshotAI/MoonEP)로도 공개돼 있고, 이 역시 지금 TrendShift 상위권에 함께 올라 있다.MXFP4(4비트), 그 입력 활성값을 MXFP8(8비트)로 두되, 어텐션 프로젝션·라우터·공유 전문가 등 민감한 부분은 고정밀로 유지한다.이 저장소를 clone하면 초보자가 당황한다. 파이썬 코드도, config.json도, 가중치도 없다. 이건 실수가 아니라 요즘 대형 모델 배포의 전형적 형태다 — GitHub는 "모델 카드 + 논문 배포용 창구"로만 쓰고, 실제 무거운 가중치는 Hugging Face·ModelScope로 나른다.
2.8조 파라미터 가중치는 파일 크기가 수백 GB~TB급이다. git은 이런 대형 바이너리에 최악이다(버전마다 통째로 복제). 그래서 업계는 "코드·문서는 GitHub, 대용량 가중치는 Hugging Face"로 역할을 나눈다. GitHub 레포는 사실상 "이 모델을 어디서 어떻게 받아 쓰는지 알려주는 안내판"인 셈이다.
그래서 이 딥다이브의 원천은 사실상 k3_tech_report.pdf 한 파일이다(추출 본문 약 5,451줄). 우리가 §4에서 푼 KDA·NoPE·AttnRes·Stable LatentMoE는 전부 이 PDF에서 나온다.
총 파라미터와 활성 파라미터가 다르다는 것, 그리고 전문가 수·활성 전문가·공유 전문가가 각각 무슨 뜻인지가 이 모델에 다 들어 있다. Kimi-K3는 896/16/2라는 극단적 희소성으로 "MoE를 어디까지 밀 수 있나"의 실제 사례다.
선형 어텐션은 오랫동안 "이론은 좋은데 실전 성능이 아쉽다"는 평가를 받았다. KDA는 순수 선형이 아니라 정밀 어텐션(MLA)과 3:1로 섞는 하이브리드로 이 약점을 우회한다. "왜 통일하지 않고 섞었나"를 이해하면 현대 롱컨텍스트 설계의 핵심 감각이 잡힌다.
RoPE·YaRN에 익숙한 사람에게 NoPE는 반직관적이다. "순서 정보 없이 어떻게?"라는 질문을 스스로 던지고, 인과 마스크와 재귀 구조가 순서를 암묵적으로 담는다는 답을 이해하는 것 자체가 좋은 공부다.
MXFP4 QAT는 "배포를 학습 설계에 반영한다"는 사고방식의 예다. 어떤 부품은 4비트로 줄이고 어떤 부품(라우터·어텐션 프로젝션)은 고정밀로 남기는 선택적 정밀도의 실전 기준을 볼 수 있다.
MoonViT-V2가 이미지·비디오 파라미터를 공유하고 pixel-shuffle로 토큰을 줄이는 방식은, 비전을 사후에 접붙이는 게 아니라 처음부터 컨텍스트 예산 안에서 설계했음을 보여준다.
MoonEP(expert parallelism), FlashKDA 커널, resumable microVM RL — 이 보고서의 절반은 모델 구조가 아니라 그걸 굴리는 인프라 이야기다. 현대 프론티어 모델은 아이디어만으로 안 되고 학습·추론 시스템이 받쳐줘야 한다는 교훈.
학습 코드도, 데이터도, 하이퍼파라미터 전체도 공개되지 않았다. 즉 여기서 배우는 건 "설계 사상과 용어"이지, 이 모델을 처음부터 다시 만드는 레시피가 아니다. 벤치마크도 자체 측정치라는 점(§2)을 함께 기억하자.
결론부터: 개인 장비로는 사실상 불가능하다. 2.8조 MoE는 4비트로 압축해도 가중치만 수백 GB급이라, 데이터센터급 다중 GPU 노드가 필요하다. 보고서는 정확한 추론 VRAM/GPU 수를 명시하지 않았다(확인 불가).
| 항목 | 내용 |
|---|---|
| 추론 엔진 | vLLM(recipes.vllm.ai/moonshotai/Kimi-K3), SGLang, TokenSpeed 권장 |
| 양자화 | 전문가 가중치 MXFP4(4비트) — 서빙 메모리·비용 절감 목적 |
| 학습/평가 GPU | 보고서 각주 기준 H20 GPU 사용(H100 아님). TP degree 등에 "8×" 표기 등장 |
| 추론 최적화 | speculative decoding용 draft model 파인튜닝 언급 |
| 개인 VRAM 요구 | 보고서 미명시 — 확인 불가 (다만 다중 GPU 필수로 추정) |
대부분의 사용자에게 현실적인 경로는 자체 서빙이 아니라 Moonshot의 API(platform.kimi.ai에서 kimi-k3 선택)나 Kimi 웹/앱이다. OpenAI·Anthropic 호환 API를 제공하므로 기존 코드에 모델명만 바꿔 붙일 수 있다.
reasoning_content(사고 과정)가 함께 온다. reasoning_effort 필드로 "low"/"high"/"max"(기본 max)를 조절한다.reasoning_content + tool_calls 포함)를 그대로 다시 messages에 넣어야 한다. 이걸 빼먹으면 에이전트가 자기 사고 맥락을 잃는다.k3_tech_report.pdf를 내려받아 §3의 스펙표(레이어 93, 어텐션 69 KDA + 24 MLA, 전문가 896/16/2)를 스스로 표로 재구성해 본다. 숫자 하나하나가 무슨 뜻인지 이 문서의 해설과 대조하며 채우면, 논문 읽는 근육이 붙는다.
platform.kimi.ai에서 같은 질문을 low / high / max로 각각 호출하고, 응답 품질 vs. 지연시간·토큰 비용을 표로 정리한다. "생각을 더 시키면 정말 더 잘하나, 어디서 수익이 꺾이나"를 체감할 수 있다.
"총 2.78T인데 활성 104B"가 왜 성립하는지 종이에 계산한다. 전문가 1명의 크기(MoE hidden dim 3,072 기준)를 추정하고, 896명 중 16명 + 공유 2명만 켜질 때의 대략적 활성 비중을 손으로 맞춰 본다. MoE의 경제학이 몸에 들어온다.
토큰 길이 N을 x축에 두고, 표준 어텐션(N²)과 선형 어텐션(N)의 연산량 곡선을 직접 플롯한다. N=1M 지점에서 격차가 얼마나 벌어지는지 눈으로 확인하면, KDA를 왜 만들었는지가 그래프 한 장으로 이해된다.
PyTorch로 전문가 8명짜리 미니 MoE를 만들고, 로드밸런싱 없이 학습시켜 특정 전문가에게만 토큰이 몰리는 현상을 재현한다. 그 다음 간단한 밸런싱 로스를 추가해 분포가 고르게 펴지는 걸 확인한다. Kimi의 Quantile Balancing이 푸는 문제를 축소판으로 체험하는 과제다.
모든 것의 출발점. Attention is All You Need(2017)를 읽고, 왜 어텐션 비용이 N²인지를 손으로 유도해 본다. Q·K·V가 무엇이고 멀티헤드가 왜 필요한지가 흔들림 없이 잡혀야 KDA·MLA가 이해된다.
Shazeer의 Sparsely-Gated MoE(2017) → Switch Transformer → DeepSeek-MoE로 이어지는 흐름을 훑는다. 공유 전문가·라우팅·로드밸런싱 로스 개념이 Kimi의 Stable LatentMoE로 어떻게 발전했는지 대조하면 좋다.
Linear Attention, RetNet, Mamba(SSM), 그리고 Moonshot의 Kimi Linear를 본다. "재귀 상태로 어텐션을 근사한다"는 공통 아이디어와, 델타 규칙(DeltaNet) 계열이 KDA의 직계 조상임을 확인한다.
RoPE → YaRN → NoPE로 이어지는 위치 인코딩 논쟁을 따라간다. "위치 신호를 넣을까 뺄까"가 왜 1M 컨텍스트의 핵심 쟁점인지, 그리고 Kimi가 왜 빼는 쪽을 택했는지를 스스로 판단해 본다.
FP8·MXFP4 같은 저정밀 포맷, QAT vs. PTQ, 그리고 vLLM·SGLang의 서빙 구조(paged attention, KV 캐시 관리)를 본다. "모델을 어떻게 굴리나"가 성능의 절반이라는 §6-⑥의 교훈을 실물로 확인하는 단계.
긴 궤적 위에서 도구를 쓰며 학습하는 에이전틱 RL이 최전선이다. partial rollout, resumable sandbox, on-policy distillation 같은 Kimi의 시스템 기법을 최근 에이전트 RL 논문들과 나란히 놓고 읽으면, "왜 microVM까지 동원하나"가 납득된다.
FlashKDA 동반. 93층 중 69층이 이것.NoPE 적용.2×2 pixel-shuffle로 비주얼 토큰을 1/4로 줄여 1M 예산 안에서 고해상도 처리.MoonshotAI/MoonEP로 별도 공개.reasoning_content + tool_calls 포함)를 그대로 다시 넣어야 하는 사용 규약. 빼먹으면 에이전트가 사고 맥락을 잃는다.| 대상 | 위치 |
|---|---|
| 저장소 | github.com/MoonshotAI/Kimi-K3 |
| 기술보고서 | k3_tech_report.pdf (저장소 내) — KDA·AttnRes·LatentMoE·인프라 |
| 기술 블로그 | kimi.com/blog/kimi-k3 |
| 가중치 | huggingface.co/moonshotai (모델 Kimi-K3) |
| API / 문서 | platform.kimi.ai (모델명 kimi-k3) |
| 챗 / 앱 | kimi.com · Kimi Code CLI kimi.com/code |
| 추론 레시피 | recipes.vllm.ai/moonshotai/Kimi-K3 · SGLang cookbook |
| 학습 인프라 | github.com/MoonshotAI/MoonEP (Expert Parallelism) |