--- base_model: Qwen/Qwen3.8-2.4T-A95B license: other license_name: qwen3.8-max license_link: https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B/blob/main/LICENSE language: - en - ja tags: - gguf - qwen3.8 - moe - reap --- # Qwen3.8 REAP30 Width50 UD GGUF [English](./README.md) [Qwen3.8-2.4T-A95B](https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B)を二段階で軽量化した実験的なGGUFです。 routed expert数を約30%削減したあと、残した各expertのintermediate widthを50%削減しています。1トークンあたりに選択するexpert数は10のままです。 ## キャリブレーションと選択 英語・日本語の通常応答と推論、コード生成、ツール使用を含む97サンプルを使用しました。計測対象94,874 tokensのうち、スコアに使用したsemantic assistant tokensは78,061です。promptと構造tokenは除外しています。 ### REAP30: expert軸 expert `e`のスコアは次のように計算しています。 ```text REAP(e) = mean[tがeへroute]( Top-10内で再正規化したrouter weight(t,e) × ||重み付け前のexpert output(t,e)||₂ ) ``` 92のMoE層ごとに512 expertsを個別に並べ、上位358を残しました。手動で固定したexpertはありません。 ### Width50: intermediate軸 REAP30へ削減したモデルを、同じキャリブレーションデータでもう一度計測しました。各expertのintermediate channelを1 channel単位で評価しています。 ```text a(t,e,c) = SiLU(gate(t,e,c)) × up(t,e,c) score(e,c) = Σ[tがeへroute](router_weight(t,e) × a(t,e,c))² × ||Wdown,e[:,c]||₂² ``` 各expertで2,048 channels中の上位1,024を残しました。観測tokenが少ないexpertでは、activation scoreとweight energyによるpriorを混合しています。 ## GGUFの変更点 | | 元モデル | このモデル | |---|---:|---:| | MoE層 | 92 | 92 | | 1層あたりのrouted experts | 512 | 358 | | routed expertのFFN width | 2,048 | 1,024 | | 1トークンあたりの選択expert数 | 10 | 10 | routerとgrouped expert tensorは、層ごとに同じexpert mapでsliceしています。shared expertは残し、MTP tensorは除外しました。 Widthは256-channel block単位ではなく、channel単位で選んでいます。残したgate/upの行は直接コピーしています。`ffn_down_exps.weight`は一度dequantizeし、選択channelを新しいQK256 blockへ詰め直して、元GGUFと同じ型へrequantizeしています。 どちらのフォルダも同じREAP・Widthランキングを使用しています。 ## ファイル | フォルダ | shard数 | サイズ | |---|---:|---:| | `UD-IQ1_S` | 12 | 約184.72 GiB | | `UD-Q1_0` | 10 | 約148.54 GiB | 使用するフォルダの先頭shardを読み込んでください。各フォルダの`slice_manifest.json`には、適用したrankingのhashとslice設定が入っています。 ## 使い方 `UD-Q1_0`は実験的なIQ1_XXXS GGML typeを使用しています。llama.cppの[iq1-narrowブランチ](https://github.com/unslothai/llama.cpp/tree/iq1-narrow)を使用してください。 ```bash git clone --branch iq1-narrow https://github.com/unslothai/llama.cpp cmake -S llama.cpp -B llama.cpp/build \ -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release cmake --build llama.cpp/build -j --target llama-server ``` MoE weightをCPUへ置き、32 GB GPUで動かす例です。 ```bash ./llama.cpp/build/bin/llama-server \ -m ./UD-Q1_0/Qwen3.8-2.4T-A95B-UD-Q1_0-00001-of-00010.gguf \ --cpu-moe \ -ngl 80 \ --ctx-size 8192 \ --flash-attn on \ --cache-type-k q8_0 \ --cache-type-v q8_0 ``` この設定はsystem RAM 512 GB、RTX 5090 32 GB 1枚で確認しています。92層中80層をoffloadし、VRAM使用量は約30.6 GiBでした。使用可能なVRAMとRAMに合わせて`-ngl`とcontext sizeを調整してください。 強く削減した実験モデルです。元モデルとは品質や安定性が異なる場合があり、キャリブレーションデータと実際の用途の分布差にも影響されます。