論文概要(Abstract)
Kimi K2は、Moonshot AIが開発した1兆パラメータ(活性32B)のMixture-of-Experts(MoE)大規模言語モデルである。384個の専門家を持ち、Top-8ルーティングで32Bパラメータのみを活性化する。事前学習は15.5兆トークンで実施され、MuonClipオプティマイザにより損失スパイクなしで完走した。Post-trainingでは大規模エージェントデータ合成パイプラインと統合強化学習ステージを経て、ソフトウェアエンジニアリングやツール使用などのエージェント能力で最先端の性能を達成している。
この記事は Zenn記事: 2026年版 フロンティアLLM学習パイプライン完全解説:事前学習からRLまで の深掘りです。
情報源
- arXiv ID: 2507.20534
- URL: https://arxiv.org/abs/2507.20534
- 著者: Kimi Team(Moonshot AI、199名)
- 発表年: 2025
- 分野: cs.CL, cs.AI, cs.LG
背景と動機(Background & Motivation)
2025年後半、LLMの進化はモデルサイズの拡大からアーキテクチャ効率の追求へと明確にシフトした。DeepSeek V3がMoEアーキテクチャとMulti-Latent Attention(MLA)の組み合わせで効率的な推論を実現して以降、「パラメータ総数を増やしつつ活性パラメータを抑える」MoEアプローチが主流となった。Kimi K2はDeepSeek V3のアーキテクチャを起点とし、(1) 専門家数を256→384に増加させた超高スパースMoE、(2) Muonオプティマイザを大規模に適用するためのQK-Clip安定化手法、(3) エージェント能力に特化したPost-trainingパイプラインという3つの技術革新を導入した。
主要な貢献(Key Contributions)
- 貢献1: 384専門家・Top-8ルーティングの超高スパースMoEで、1Tパラメータから32Bのみを活性化し推論コストを大幅削減
- 貢献2: MuonClipオプティマイザ(Muon + QK-Clip)により、15.5Tトークンの学習を損失スパイクなしで完走
- 貢献3: スケーリング則分析で、専門家数の増加がモデル品質に大きく寄与することを定量的に実証
- 貢献4: 大規模エージェントデータ合成パイプラインと統合RL(GRPO + DPO)でエージェント能力を獲得
- 貢献5: オープンウェイト公開(非思考型モデルとして最先端性能)
技術的詳細(Technical Details)
MoEアーキテクチャ
Kimi K2は各Transformer層にFeed-Forward Network(FFN)の代わりにMoEレイヤーを配置する。各MoEレイヤーは384個の専門家と、入力トークンを専門家にルーティングするゲート関数で構成される。
ゲート関数は各トークンの隠れ状態 $\mathbf{h}$ からTop-8の専門家を選択する:
\[\text{scores} = \text{softmax}(\mathbf{W}_g \mathbf{h})\] \[\text{indices} = \text{TopK}(\text{scores}, k=8)\]ここで、
- $\mathbf{W}_g \in \mathbb{R}^{384 \times d}$: ゲート行列($d$は隠れ次元)
- $\text{scores} \in \mathbb{R}^{384}$: 各専門家への割り当てスコア
- $k = 8$: 活性化する専門家の数
補助損失なし(Auxiliary-Loss-Free)バランシング: DeepSeek V3に倣い、従来の補助損失(auxiliary loss)を廃止。各専門家にバイアス項 $b_i$ を導入し、ルーティング時にスコアへ加算することでロードバランスを動的に維持する。バイアス項はルーティング統計に基づき学習率1e-3で更新される。
Multi-Latent Attention(MLA)
MLAはKVキャッシュを圧縮する注意機構である。従来のMulti-Head Attention(MHA)が $d_{\text{model}} \times n_{\text{heads}}$ のKVキャッシュを必要とするのに対し、MLAは低次元の潜在表現に圧縮する:
\[\mathbf{c}_{KV} = \mathbf{W}_{DKV} \mathbf{h} \in \mathbb{R}^{d_c}\] \[\mathbf{K} = \mathbf{W}_{UK} \mathbf{c}_{KV}, \quad \mathbf{V} = \mathbf{W}_{UV} \mathbf{c}_{KV}\]ここで、
- $d_c \ll n_h \cdot d_h$: 圧縮次元($n_h$はヘッド数、$d_h$はヘッド次元)
- $\mathbf{W}_{DKV}$: ダウンプロジェクション行列
- $\mathbf{W}{UK}, \mathbf{W}{UV}$: アッププロジェクション行列
KVキャッシュには $\mathbf{c}_{KV}$ のみを保存するため、メモリ使用量がGQA(8)比でさらに削減される。
MuonClipオプティマイザ
MuonClipはMuonオプティマイザにQK-Clip機構を追加し、大規模学習での安定性を確保する。
QK-Clip: Attention層のQuery-Key内積が過大になることを防ぐ安定化手法。Attention計算時にQK内積の値をクリップし、softmaxの勾配消失を回避する:
\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{\text{clip}(QK^T, -\tau, \tau)}{\sqrt{d_k}}\right)V\]MuonClipは15.5Tトークンの学習を通じて一度も損失スパイクを起こすことなく安定的に学習を完走した。これはAdamWベースの学習で散見されるスパイク問題(学習率のロールバックが必要)を完全に解消するものである。
学習スケジュール
Kimi K2はWSD(Warmup-Stable-Decay)スケジュールを採用する:
| フェーズ | トークン数 | 学習率 | バッチサイズ |
|---|---|---|---|
| Warmup | 500ステップ | 0 → 2e-4 | 2048 |
| Stable | ~10T | 2e-4(定数) | 2048→4096 |
| Decay | ~5.5T | コサイン減衰 → 2e-5 | 4096 |
安定期を長く取ることで、中間チェックポイントの品質が均一に保たれる。
アルゴリズム
以下にMoEルーティングとMLAの組み合わせの概念実装を示す:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import torch
import torch.nn as nn
import torch.nn.functional as F
class KimiK2MoELayer(nn.Module):
"""Kimi K2 style MoE layer with auxiliary-loss-free balancing.
Args:
hidden_dim: Hidden dimension of the model
num_experts: Total number of experts (384 for K2)
top_k: Number of activated experts per token (8 for K2)
expert_dim: FFN intermediate dimension per expert
"""
def __init__(
self,
hidden_dim: int,
num_experts: int = 384,
top_k: int = 8,
expert_dim: int = 2048,
):
super().__init__()
self.num_experts = num_experts
self.top_k = top_k
self.gate = nn.Linear(hidden_dim, num_experts, bias=False)
self.expert_bias = nn.Parameter(torch.zeros(num_experts))
self.experts = nn.ModuleList([
nn.Sequential(
nn.Linear(hidden_dim, expert_dim),
nn.SiLU(),
nn.Linear(expert_dim, hidden_dim),
)
for _ in range(num_experts)
])
def forward(self, x: torch.Tensor) -> torch.Tensor:
"""Forward pass with top-k expert routing.
Args:
x: Input tensor of shape (batch, seq_len, hidden_dim)
Returns:
Output tensor of shape (batch, seq_len, hidden_dim)
"""
batch, seq_len, dim = x.shape
x_flat = x.view(-1, dim)
# Gate scoring with auxiliary-loss-free bias
logits = self.gate(x_flat) + self.expert_bias
scores = F.softmax(logits, dim=-1)
# Top-k selection
top_scores, top_indices = torch.topk(scores, self.top_k, dim=-1)
top_scores = top_scores / top_scores.sum(dim=-1, keepdim=True)
# Expert computation (simplified; production uses grouped GEMM)
output = torch.zeros_like(x_flat)
for k in range(self.top_k):
expert_idx = top_indices[:, k]
weight = top_scores[:, k].unsqueeze(-1)
for e in range(self.num_experts):
mask = expert_idx == e
if mask.any():
output[mask] += weight[mask] * self.experts[e](x_flat[mask])
return output.view(batch, seq_len, dim)
class MultiLatentAttention(nn.Module):
"""Multi-Latent Attention (MLA) for KV cache compression.
Args:
d_model: Model dimension
n_heads: Number of attention heads
d_compress: Compression dimension for KV cache
"""
def __init__(self, d_model: int, n_heads: int, d_compress: int):
super().__init__()
self.n_heads = n_heads
self.d_k = d_model // n_heads
self.W_q = nn.Linear(d_model, d_model)
self.W_dkv = nn.Linear(d_model, d_compress) # Down-projection
self.W_uk = nn.Linear(d_compress, d_model) # Up-projection for K
self.W_uv = nn.Linear(d_compress, d_model) # Up-projection for V
self.W_o = nn.Linear(d_model, d_model)
def forward(self, x: torch.Tensor) -> torch.Tensor:
"""Compute MLA with compressed KV cache.
Args:
x: Input tensor (batch, seq_len, d_model)
Returns:
Output tensor (batch, seq_len, d_model)
"""
B, S, D = x.shape
Q = self.W_q(x)
# Compress to latent representation (this is what gets cached)
c_kv = self.W_dkv(x) # (B, S, d_compress)
# Decompress for attention computation
K = self.W_uk(c_kv)
V = self.W_uv(c_kv)
# Reshape for multi-head attention
Q = Q.view(B, S, self.n_heads, self.d_k).transpose(1, 2)
K = K.view(B, S, self.n_heads, self.d_k).transpose(1, 2)
V = V.view(B, S, self.n_heads, self.d_k).transpose(1, 2)
# Scaled dot-product attention
scores = (Q @ K.transpose(-2, -1)) / (self.d_k ** 0.5)
attn = F.softmax(scores, dim=-1)
out = (attn @ V).transpose(1, 2).contiguous().view(B, S, D)
return self.W_o(out)
実装のポイント(Implementation)
スパース度とスケーリングの関係
Kimi K2のスケーリング則分析で最も重要な発見は、専門家数の増加がモデル品質に大きく寄与することだ。384専門家・Top-8のスパース構成は、総パラメータ1Tに対して活性パラメータ32B(スパース度約97%)を実現し、推論FLOPsをDenseモデルの約3%に抑える。
ロードバランシングの実践
補助損失なしバランシングでは、各専門家の使用頻度を追跡し、使用頻度が低い専門家のバイアスを増加させる。バイアス更新率(1e-3)は学習全体を通じて一定であり、追加のハイパーパラメータ調整は不要である。
KVキャッシュの実装
MLAのKVキャッシュは圧縮次元 $d_c$ のみを保存する。推論時はキャッシュから $\mathbf{c}{KV}$ を読み出し、$\mathbf{W}{UK}$, $\mathbf{W}_{UV}$ で復元する。この追加計算コストはKVキャッシュのメモリ削減効果に比べて無視できる。
Production Deployment Guide
AWS実装パターン(コスト最適化重視)
1T MoEモデルの推論を前提としたAWSデプロイ構成を示す。
| 規模 | 月間リクエスト | 推奨構成 | 月額コスト | 主要サービス |
|---|---|---|---|---|
| Small | ~3,000 | Serverless | $50-150 | Lambda + Bedrock + DynamoDB |
| Medium | ~30,000 | Hybrid | $300-800 | ECS Fargate + ElastiCache |
| Large | 300,000+ | Container | $2,000-5,000 | EKS + Karpenter + EC2 Spot |
コスト削減テクニック:
- Spot Instances: g5.xlarge使用で最大90%削減
- Bedrock Batch API: 非リアルタイム処理で50%割引
- Prompt Caching: システムプロンプト固定で30-90%削減
コスト試算注意事項: 2026年2月時点のAWS ap-northeast-1料金に基づく概算値。最新料金は AWS料金計算ツール で確認してください。
Terraformインフラコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
resource "aws_lambda_function" "moe_handler" {
filename = "lambda.zip"
function_name = "kimi-k2-inference"
role = aws_iam_role.lambda_bedrock.arn
handler = "index.handler"
runtime = "python3.12"
timeout = 90
memory_size = 2048
environment {
variables = {
BEDROCK_MODEL_ID = "anthropic.claude-3-5-sonnet-20241022-v2:0"
ENABLE_PROMPT_CACHE = "true"
}
}
}
resource "aws_dynamodb_table" "kv_cache" {
name = "moe-kv-cache"
billing_mode = "PAY_PER_REQUEST"
hash_key = "session_id"
attribute {
name = "session_id"
type = "S"
}
ttl {
attribute_name = "expire_at"
enabled = true
}
}
運用・監視設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import boto3
cloudwatch = boto3.client('cloudwatch')
cloudwatch.put_metric_alarm(
AlarmName='moe-inference-latency',
ComparisonOperator='GreaterThanThreshold',
EvaluationPeriods=2,
MetricName='Duration',
Namespace='AWS/Lambda',
Period=300,
Statistic='p99',
Threshold=30000,
AlarmDescription='MoE推論レイテンシP99異常'
)
コスト最適化チェックリスト
- EC2 Spot Instances優先(最大90%削減)
- Reserved Instances 1年コミット(72%削減)
- Bedrock Batch API使用(50%割引)
- Prompt Caching有効化(30-90%削減)
- Lambda メモリサイズ最適化
- ECS/EKS アイドル時スケールダウン
- AWS Budgets 月額予算設定
- CloudWatch トークン使用量監視
- Cost Anomaly Detection有効化
- 日次コストレポート自動送信
- 未使用リソース定期削除
- タグ戦略(環境/プロジェクト別)
- S3ライフサイクル(30日自動削除)
- 開発環境夜間停止
- Savings Plans検討
- モデル選択ロジック(Haiku/Sonnet使い分け)
- max_tokens制限設定
- CloudTrail/Config有効化
- KMS暗号化(S3/DynamoDB)
- IAM最小権限設定
実験結果(Results)
ベンチマーク比較
Kimi K2はオープンソース非思考モデルとして最先端の性能を示す。
| ベンチマーク | Kimi K2 | DeepSeek V3 | Llama 4 Maverick | 分野 |
|---|---|---|---|---|
| Tau2-Bench | 66.1 | 52.7 | 55.3 | エージェント |
| ACEBench (En) | 76.5 | 71.2 | 73.1 | 総合 |
| SWE-Bench Verified | 65.8 | 42.0 | 38.5 | SE |
| LiveCodeBench v6 | 53.7 | 49.2 | 47.8 | コーディング |
| AIME 2025 | 49.5 | 39.2 | 41.0 | 数学 |
特にエージェント系タスク(Tau2-Bench, SWE-Bench)で顕著な優位性を示し、これはPost-trainingにおけるエージェントデータ合成パイプラインの有効性を裏付ける。
スケーリング則実験
専門家数を64→128→256→384と増加させた場合の検証損失を比較した結果、専門家数の増加は対数的に品質を改善し、384専門家は256専門家比で約3%の損失改善を示した。Top-kの値は8が最適であり、4では表現力不足、16では計算効率が低下した。
実運用への応用(Practical Applications)
エージェントAIのバックボーン
Kimi K2の最大の実用価値はエージェント能力にある。SWE-Bench Verified 65.8%は、ソフトウェアエンジニアリングタスク(バグ修正、機能追加)の6割以上を自動化できる水準である。企業のCI/CDパイプラインに組み込むことで、PR自動生成やコードレビュー支援に活用できる。
MoEによる推論コスト最適化
1Tパラメータのうち32Bのみを活性化するため、同等品質のDenseモデル(例: 70B)と比較して推論コストが大幅に低い。API提供する場合、1トークンあたりのコストをDense比1/2以下に抑えられる。
関連研究(Related Work)
- DeepSeek V3 (2024): MoE+MLA+補助損失なしバランシングの先駆者。Kimi K2はこのアーキテクチャを起点に専門家数を384に拡大した。
- Muon (Liu et al., 2025): 行列直交化オプティマイザ。Kimi K2はQK-Clipを追加しMuonClipとして採用。
- GPT-4o (OpenAI, 2024): 推定MoEアーキテクチャ。プロプライエタリモデルの推論効率はMoE活用が示唆される。
- Llama 4 Maverick (Meta, 2025): 128専門家MoE。Kimi K2の384専門家と比較してスパース度が低い。
まとめと今後の展望
Kimi K2は、384専門家の超高スパースMoEとMuonClipオプティマイザの組み合わせにより、1Tパラメータモデルを効率的に学習・推論する方法を示した。特にエージェント能力(SWE-Bench 65.8%)は実用的な水準に達しており、ソフトウェア開発の自動化に直接貢献する。
今後は、(1) 思考型モデル(Kimi K2-Thinking)のさらなる強化、(2) マルチモーダルMoEへの拡張、(3) 専門家の動的プルーニングによる推論効率のさらなる改善が期待される。
参考文献
- arXiv: https://arxiv.org/abs/2507.20534
- Related Zenn article: https://zenn.dev/0h_n0/articles/a8792c6407d6e3