Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- ja
|
| 5 |
+
base_model: llm-jp/llm-jp-4-33b-thinking
|
| 6 |
+
base_model_relation: quantized
|
| 7 |
+
library_name: vllm
|
| 8 |
+
tags:
|
| 9 |
+
- nvfp4
|
| 10 |
+
- compressed-tensors
|
| 11 |
+
- blackwell
|
| 12 |
+
- japanese
|
| 13 |
+
- reasoning
|
| 14 |
+
pipeline_tag: text-generation
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
# llm-jp-4-33b-thinking-NVFP4
|
| 18 |
+
|
| 19 |
+
[llm-jp/llm-jp-4-33b-thinking](https://huggingface.co/llm-jp/llm-jp-4-33b-thinking)(国立情報学研究所 LLM勉強会による日本語特化 33B・推論モデル)の **NVFP4 (W4A4, group 16)** 量子化です。モデル本体の功績はすべて [LLM-jp](https://huggingface.co/llm-jp) にあります。本リポジトリは量子化重みのみを配布します。
|
| 20 |
+
|
| 21 |
+
**66.5 GB → 21 GB。** 16GBカード2枚から載ります。
|
| 22 |
+
|
| 23 |
+
- アーキテクチャは素直な **LlamaForCausalLM**(Dense 33B・64層・語彙196,608の日本語特化トークナイザ・64kコンテキスト)
|
| 24 |
+
- **SM120(Blackwell)+ 素のvLLM v0.22.0** 向け。compressed-tensors自動判定、`--quantization`フラグ不要
|
| 25 |
+
- 量子化除外は `lm_head` のみ(視覚塔もMoEルーターも無い、当ラボで最も素直な焼き上がり)
|
| 26 |
+
|
| 27 |
+
## 実測(TP=4・32kコンテキスト・KV fp8・RTX PRO 2000 Blackwell ×4)
|
| 28 |
+
|
| 29 |
+
| 並列数 | 合計スループット |
|
| 30 |
+
|---|---|
|
| 31 |
+
| 1 | 43.1 t/s |
|
| 32 |
+
| 2 | 85.1 t/s |
|
| 33 |
+
| 4 | **167.3 t/s** |
|
| 34 |
+
|
| 35 |
+
プリフィル単流: **3,597 tok/s**(8kプロンプト・prefix cache無効・3回平均)
|
| 36 |
+
|
| 37 |
+
## 起動方法 — ⚠️公式の推論パーサが必須です
|
| 38 |
+
|
| 39 |
+
このモデルは OpenAI Harmony 形式(analysis / final チャンネル)で応答します。**素のvLLMでは思考(analysis)が本文に混ざって返る**ため、[公式cookbook](https://github.com/llm-jp/llm-jp-4-cookbook) の専用パーサを登録してから起動してください。**本リポジトリに同梱してあります**(`llmjp4_reasoning_parser.py` / `example_cli.py`)。
|
| 40 |
+
|
| 41 |
+
```bash
|
| 42 |
+
# リポジトリのファイルがあるディレクトリで
|
| 43 |
+
python3 example_cli.py serve <このモデルのパス> \
|
| 44 |
+
--served-model-name llmjp4 --trust-remote-code \
|
| 45 |
+
--tensor-parallel-size 4 --max-model-len 32768 \
|
| 46 |
+
--kv-cache-dtype fp8 --enable-prefix-caching \
|
| 47 |
+
--reasoning-parser llmjp4
|
| 48 |
+
```
|
| 49 |
+
|
| 50 |
+
P2Pの無いボードでは `NCCL_P2P_DISABLE=1` と `--disable-custom-all-reduce` を追加してください。
|
| 51 |
+
|
| 52 |
+
思考の深さはリクエストごとに指定できます:
|
| 53 |
+
|
| 54 |
+
```json
|
| 55 |
+
"chat_template_kwargs": {"reasoning_effort": "low"} // low / medium / high
|
| 56 |
+
```
|
| 57 |
+
|
| 58 |
+
## 検証メモ — reasoning_effort の使い分け(実測)
|
| 59 |
+
|
| 60 |
+
日本語の音韻課題(モーラ数え・俳句の音数走査・字余り検出)で汎用27Bと突き合わせた結果:
|
| 61 |
+
|
| 62 |
+
- **effort=low**: 語のモーラ数え 10/12。俳句の音数走査はほぼ不能(これは汎用モデルも同じ。表記→音の透視がボトルネックで、ひらがな分かち書きを与えればどちらも正解できる)
|
| 63 |
+
- **effort=high**: **一変します。**「古池や〜」を5-7-5と正しく走査し、字余りの句を「5-7-6、字余りあり」と検出できました(比較対象は汎用27B一体のみ・小規模な検証です。汎用側はeffortを上げてもここまで到達しませんでした)
|
| 64 |
+
- 目安: **日常会話・実務は low(速い)、韻文・言葉の精査は high(-thinkingの真骨頂)**
|
| 65 |
+
|
| 66 |
+
品質の実弾例(effort=low・本文分離済み):
|
| 67 |
+
|
| 68 |
+
> 潮騒に 足あと残す 夕焼けかな
|
| 69 |
+
|
| 70 |
+
## ⚠️ 量子化時に踏んだ罠(再現する方へ)
|
| 71 |
+
|
| 72 |
+
- **カスタムトークナイザのラッパー**(`llmjp4_tokenizer.py`)は環境によって日本語を一文字ずつに分割します(「ありがとうございます」が11トークン)。**生の `tokenizer.json` は正常**(同じ語が1トークン)。キャリブレーションは生のtokenizer.jsonで行い、chat_templateだけ`tokenizer_config.json`から移植しました。壊れたトークナイザでのキャリブは日本語品質を静かに損なうので、焼く前に必ず検問を
|
| 73 |
+
- GPU常駐でキャリブした場合、保存時の集約でOOMすることがあります。このモデルはCPU側に重みを置く方式(llm-compressorのSequentialPipeline既定)で問題なく焼けます
|
| 74 |
+
|
| 75 |
+
## レシピ
|
| 76 |
+
|
| 77 |
+
llm-compressor NVFP4 (W4A4, group 16)、`targets: [Linear]`、`ignore: ["lm_head"]`、キャリブレーション 32サンプル × 8192トークン(`neuralmagic/calibration`)。
|
| 78 |
+
|
| 79 |
+
🙏 [LLM-jp](https://huggingface.co/llm-jp)(モデルと公式パーサ)、vLLM / llm-compressor の各チームに感謝します。
|