GOBA-AI-Labs/PrunedHub-Qwen3-30B-A3B-JP-80pct-MxMoE
027
Qwen3-30B-A3B JP 80% MxMoE: 言語認識 Expert Pruning + 混合量子化
13.45 GB | 102/128 experts | 混合 Q5K/Q4K/Q3K | -22% サイズ削減 | GGUF | Apache 2.0
Qwen3-30B-A3B の日本語最適化圧縮バリアント。2つの技術を組み合わせて作成:
- 言語認識 Expert Pruning (80% 保持): 日本語 specialist expert を保護しながら calibration ベースで重要度スコアリング
- MxMoE 混合量子化: 層ごとに適応的な精度 (重要層は Q5K、標準層は Q4K、冗長層は Q3K)
日本語タスク向けに最適化。英語向けは EN バリアント を参照。
特長
- 13.45 GB: 16 GB RAM で全 GPU 常駐推論が可能
- 22% サイズ削減 (オリジナル Q4KM: 17.28 GB)
- MMLU 73% (no-think) / think-ON モードも利用可能
- GSM8K 96% (no-think, 50Q) -- 数学推論能力を完全保持
- 日本語品質 85% (20Q) -- 地理・文化・科学・数学・言語の 6 カテゴリ
- 日本語 specialist expert を保護: 30 個の日本語特化 expert を優先保持
- 約 57 tok/s (Apple M4 Pro 24GB、llama-server、Metal GPU)
- llama.cpp 互換 (build 7970+) および moe-stream 対応
ベンチマーク結果
モデル仕様
使い方
llama.cpp による推論 (推奨)
# llama-server で起動 (Metal GPU、約 57 tok/s)
llama-server \
-m Qwen3-30B-A3B-pruned80-JA-MxMoE.gguf \
--port 8090 \
-ngl 99 \
-c 4096moe-stream による推論 (代替)
moe-stream でも推論可能です:
git clone https://github.com/GOBA-AI-Labs/moe-stream
cd moe-stream && cargo build --release --features accelerate
./target/release/moe-stream-server \
--model Qwen3-30B-A3B-pruned80-JA-MxMoE.gguf \
--port 11434OpenAI 互換 API で使用
llama-server または moe-stream-server 起動後:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8090/v1", api_key="none")
response = client.chat.completions.create(
model="default",
messages=[{"role": "user", "content": "量子もつれについて簡単に説明してください。"}],
max_tokens=512,
temperature=0.7,
)
print(response.choices[0].message.content)必要環境
- [llama.cpp](https://github.com/ggerganov/llama.cpp) (build 7970+) または [moe-stream](https://github.com/GOBA-AI-Labs/moe-stream)
- 16 GB RAM 以上 (モデル約 13.5 GB + KV キャッシュ)
- Apple Silicon (Metal) 推奨、CUDA も対応
圧縮手法
ステップ 1: 言語認識 Expert Pruning (80% 保持)
各 Expert は calibration ベースの重要度で評価:
importance(l, e) = activation_magnitude(l, e) × routing_frequency(l, e)本モデルの特徴は日本語 specialist expert の保護です。Qwen3-30B-A3B では 128 expert 中約 30 expert が日本語に特化していることが分析で判明しており、これらの expert を優先的に保持します。
ステップ 2: MxMoE 層レベル混合量子化
Pruning 後、各層の Expert FFN テンソルを重要度に基づき異なる精度で量子化:
制約:
- Attention 層 (12 層) は Tier 2 以上を保証
- 日本語 specialist 多含層は Tier 2 以上を保証
- 層重要度 =
平均 Expert 重要度 × 平均ルーティング頻度
サイズ内訳
オリジナル Q4_K_M: 17.28 GB (128 experts × 48 layers)
80% Pruning 後: 約 15.0 GB (102 experts × 48 layers)
MxMoE 適用後: 13.45 GB (Q5K/Q4K/Q3K 混合)
総削減率: -22.2%EN バリアントとの比較
JP モデルが全カテゴリで EN モデルを上回っています。これは日本語 specialist expert が STEM 推論にも寄与しているためです。
Pruning Curve (Qwen3-30B-A3B)
\* MxMoE 込み。80% Pruning のみ (Q4KM 均一) では約 15.0 GB。
制限事項
- 後処理なし: Pruning + 再量子化のみ、ファインチューニングなし
- STEM 感度: STEM 精度 (60.0%) は人文科学 (73.3%) や社会科学 (90.0%) より圧縮の影響を受けやすい
再現手順
Pruning スクリプトとプランは GOBA-AI-Labs/moe-prune で公開:
# 1. Qwen3-30B-A3B Q4_K_M GGUF をダウンロード
# 2. 重要度スコア生成
python scripts/qwen3_30b_importance.py
# 3. 言語認識 Pruning (80% 保持、JA 保護)
python scripts/reprune_gguf.py \
Qwen3-30B-A3B-Q4_K_M.gguf \
Qwen3-30B-A3B-pruned80-JA.gguf \
results/calibration/qwen3_30b_a3b/plan_80pct_ja_aware.json
# 4. MxMoE 混合量子化
llama-quantize --allow-requantize \
--tensor-type-file results/mxmoe/tensor_types_pruned.txt \
Qwen3-30B-A3B-pruned80-JA.gguf \
Qwen3-30B-A3B-pruned80-JA-MxMoE.gguf q4_k_m引用
@misc{goba2026moe,
title = {Language-Aware Expert Pruning with Mixed Quantization for MoE Language Models},
author = {GOBA-AI-Labs},
year = {2026},
url = {https://github.com/GOBA-AI-Labs/moe-prune},
note = {日本語specialist expert保護 + MxMoE混合量子化で22\%サイズ削減を達成}
}謝辞
- Qwen Team -- Qwen3-30B-A3B の Apache 2.0 公開
- llama.cpp -- GGUF フォーマットと
llama-quantizeツール - moe-stream -- MoE 推論エンジン
ライセンス
本モデルはベースモデル (Qwen/Qwen3-30B-A3B) の Apache 2.0 ライセンス を継承します。
