llm-jp-4.1-8b-thinking for onw — Intel NPU だけで動く
日本語 | English
llm-jp/llm-jp-4.1-8b-thinking を onw(俺のNPUがこんなに動くわけない)用に変換したモデルです。onw は LLM を Intel NPU だけで動かすエンジンで、このリポジトリにはモデルだけが入っています(エンジンは別にダウンロードします)。
国立情報学研究所(NII)の LLM-jp が日本語を中心に一から学習した llm-jp-4.1-8b-thinking の思考型 8B です(構造は Llama 型、語彙 19.7 万)。元のカードでは、日本語の MT-Bench 7.58(gpt-oss-20b は 7.33)、日本語中心の指示への従い方で Qwen3.5-9B を上回ります(数学・コード・複数ターンのツール利用は Qwen3.5-9B が上)。日本語の文章を扱う用途に向いています。
思考とツール呼び出し:gpt-oss と同じ系統の harmony 形式で、必ず(英語で)考えてから答えます。思考は思考モードのときだけ reasoning_content で返り、思考の量は reasoning_effort(low/medium/high。onw は思考モード以外では low)で変えられます。思考も文字数上限に含まれるので、max_tokens は 300 以上にしてください。ツールは OpenAI 互換 API の tools で使えます(並列呼び出しも可)。
元のモデルにより近い高精度版(重み INT8、7.7 GB)は ryugyosoft/llm-jp-4.1-8b-thinking-int8-onw。
| NPU 3720(Core Ultra 9 285HX) | |
|---|---|
| 入力 | テキスト |
| 生成速度 | 4.2〜4.7 tok/s |
| プロンプト処理 | 短い質問は 1 秒未満 |
| ダウンロード | 4.6 GB |
| 使用メモリ(読み込み後の作業セット) | 約 10 GB(設定の「メモリ節約モード」なら待機中 約 5 GB、入れ替えの数秒だけ約 9 GB。Lunar Lake 16 GB 機の実測。入れ替えは片道 4〜5 秒で、その間は回答を書く速さが落ちます) |
| 初回起動(NPU 向けコンパイル)/2 回目以降 | 約 11 分/約 20 秒 |
対応 PC:NPU 付きの Intel Core Ultra(シリーズ 1/2:Meteor Lake・Arrow Lake・Lunar Lake、シリーズ 3:Panther Lake)、Windows 11 または Ubuntu 22.04 以降。上の数値はテスト機(NPU 3720)での実測で、NPU やメモリ量によって変わります。
使い方
-
onw(エンジン)を入れます。 まだの場合は、onw の「インストール」 のとおり 1 行貼るだけです。Windows はスタートメニューで「PowerShell」を開き、次の 1 行を貼って Enter(Ubuntu は onw の README の
curl ... | bash)。irm https://huggingface.co/ryugyosoft/onw/resolve/main/install.ps1 | iex -
タスクトレイの onw アイコンから開く onw ウィンドウ の「モデル」タブで llm-jp-4.1-8b-thinking を選び、「ダウンロード」を押します(4.6 GB)。
-
「サーバー」タブでモデルを選んで「ロード」を押します。初回だけ NPU 向けの準備に約 11 分かかります。
-
「チャット」ですぐ試せます。他のアプリからは OpenAI 互換 API として使えます(base URL は
http://localhost:8000/v1)。
from openai import OpenAI
c = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
r = c.chat.completions.create(model="llm-jp-4.1-8b-thinking-onw", messages=[{"role": "user", "content": "こんにちは"}])
print(r.choices[0].message.content)
上級者向け:hf download ryugyosoft/llm-jp-4.1-8b-thinking-onw で取得したフォルダを onw serve フォルダ で起動することもできます。Git LFS なしの git clone では重みが入らないので使わないでください(onw が検出して止めます)。
仕組み
- 32 層を 8 層ずつ 4 区間+出力層の区間にした静的グラフ(グループ 128 の INT4)。19.7 万語彙の出力層は INT8 の独立した区間で、ロジットが不要なプロンプト処理では飛ばします。
- トークナイザーは元のリポジトリの tokenizer.json をそのまま使います(独自コードの実行は不要。トークン番号は元の実装と一致を確認)。harmony の区切りごとに文字列へ戻し、ツール呼び出しの宛先の位置の違いも onw が読み替えます。
- 詳しくは onw の技術解説。
ファイル
| ファイル | 内容 |
|---|---|
seg*_S1.xml, seg*_S16.xml + seg*.bin | 4 区間+出力層(重みは区間ごとに 1 ファイル) |
shared.bin | INT8 の出力層、INT4 の埋め込み(ホストで参照) |
engine.json、トークナイザー/設定ファイル | onw 用のメタデータ、元のリポジトリの設定 |
品質
元のモデル(bf16、CPU)と教師強制で比べると、思考の量 low で 24/24、medium で 23/24 トークンが一致し、NPU と CPU(FP32)の結果は同じでした。日本語の 20 問では回答の最初のトークンが 19/20 一致(残り 1 問も「東京」と「日本の」の違い)。2 つのツールの並列呼び出しと結果を使った日本語の回答を確認済みです。
ライセンス
Apache 2.0(元モデルと同じ)。重みは元モデルから再量子化・再構成したものです。学習はしていません。