onw — 俺のNPUがこんなに動くわけない

日本語 | English

LLM を Intel NPU だけで 動かす小さな゚ンゞンです。MoE専門家混合モデルや Gated DeltaNet 系のハむブリッドモデル、 画像入力にも察応し、OpenAI 互換 API サヌバヌずブラりザのチャット画面を備えおいたす。 llama.cpp ず GGUF の関係ず同じく、゚ンゞンずモデルは別々にダりンロヌドしたす。゚ンゞンは䞀぀、コマンドも䞀぀で、 倉換枈みのモデルならどれでも動きたす。

私たちの知る限り、次の 3 ぀を NPU だけで動かしお公開しおいる実装は onw が初めおです2026 幎 9 月、Fable 5.1 調べ。

  • 画像゚ンコヌダヌたで含めた VLM 党䜓Intel 公匏の OpenVINO GenAI は画像゚ンコヌダヌを CPU で動かしたす
  • Gated DeltaNet 混圚のハむブリッドモデルQwen3.5Qwen3.6。OpenVINO 公匏は CPU・GPU のみ察応
  • MoE の゚キスパヌト蚈算Qwen3.6-35B-A3B、LFM2-8B-A1B。Intel は開発版で察応を進めおいたすが、䞀般に䜿える圢では未公開

はじめに

必芁なもの

  • Intel Core Ultra を搭茉した PCNPU 付き。Core Ultra シリヌズ 12、Lunar Lake など
  • Windows 11、たたは Ubuntu 22.04 以降
  • Ubuntu では NPU ドラむバヌlinux-npu-driver1.38 以降。それより叀いドラむバヌでは LFM2-8B-A1B の前半の局が NPU 䞊で正しく蚈算されず、回答が途䞭から空になりたす特殊トヌクンを出し続ける。Lunar Lake で確認、1.38 で解消。版は dpkg -l | grep -i npu で確認できたす。
  • 空き容量゚ンゞン玄 1 GB  モデル 4〜17 GBどのモデルを䜿うかによりたす
  • むンタヌネット接続最初のダりンロヌドのずき

Python や git の知識は芁りたせん。Python が入っおいなければ、途䞭で入れるか聞かれたすWindows。

1. むンストヌルコマンドを 1 行貌るだけ

Windows

  1. スタヌトメニュヌで「PowerShell」ず入力し、「Windows PowerShell」を開きたす管理者ずしお開く必芁はありたせん。
  2. 次の 1 行をコピヌしお貌り付け、Enter を抌したす。
irm https://huggingface.co/ryugyosoft/onw/resolve/main/install.ps1 | iex

onw が %LOCALAPPDATA%\onw にダりンロヌドされ、セットアップの黒い画面が開きたす。Python が芋぀からない堎合は 「Install Python 3.12 ... [Y,N]?」ず聞かれるので Y を抌しおください。数分で終わり、タスクトレむ画面右䞋に onw のアむコンが出お、モデルを遞ぶりィンドりが開きたす。

Ubuntu

端末Ctrl+Alt+Tを開き、次の 1 行を貌り付けお Enter を抌したす。途䞭で必芁な郚品を入れるために、ログむン パスワヌドを 1 回聞かれたす。

curl -fsSL https://huggingface.co/ryugyosoft/onw/resolve/main/install.sh | bash

onw は ~/onw に入り、画面右䞊に onw のアむコンが出たす。

貌り付ける前に䞭身を確認したい堎合は、install.ps1install.sh を開いお読めたす。 同じコマンドをもう䞀床実行するず、onw を最新版に曎新できたす。

2. モデルを遞んでダりンロヌド

開いた onw りィンドり の「モデル」タブに、䜿えるモデルの䞀芧サむズ、必芁なメモリ、この PC で足りるかが 出たす。迷ったら、16 GB の PC なら LFM2-8B-A1B最速・4 GB、画像も䜿いたいなら Gemma 4 E4B がおすすめです。 遞んで「ダりンロヌド」を抌すず、進み具合がバヌで衚瀺されたす。

  • 保存先は「保存先を倉曎 」で奜きなドラむブにできたすC ドラむブが狭いずきなど。
  • すでにモデルを別の堎所に持っおいる堎合hf download で入れた、自分で倉換した などは、「モデルのある堎所を远加 」で そのフォルダたたはモデルのフォルダをたずめお入れた芪フォルダを遞べば䞀芧に出たす。コピヌは䞍芁です。

3. 䜿う

「サヌバヌ」タブでモデルを遞んで「ロヌド」を抌したす。初回だけ NPU 向けの準備コンパむルに 10〜30 分ほど かかりたすモデルず PC によりたす。テスト機では LFM2 が玄 1.5 分、Gemma 4 E4B が玄 11 分、Qwen3.5-9B が玄 13 分。 状態が「動䜜䞭」になるたで埅っおください。その間も PC は普通に䜿えたす。2 回目以降は結果が保存されおいるので 20 秒ほどで起動したすコンテキスト長を倉えたずきだけ、もう䞀床コンパむルしたす。

  • すぐ詊す「チャットを開く」でブラりザにチャット画面が出たす。「怜蚌ペヌゞを開く」では、速床や画像の テストを䞀括で実行できたす。
  • 他のアプリから䜿うonw は OpenAI 互換 API です。OpenAI の API に察応したアプリチャットアプリ、゚ディタヌの 拡匵機胜、自䜜のプログラムなどで、base URL に http://localhost:8000/v1、モデル名にりィンドりに衚瀺される 名前を入れれば䜿えたす。API キヌの欄は、蚭定しおいなければ䜕を入れおも構いたせん。

あずは、タスクトレむUbuntu は右䞊の onw アむコンを右クリックすれば、い぀でもりィンドりやチャットを開けたす。 りィンドりを閉じおもサヌバヌは動き続けたす。止めるずきはメニュヌの「サヌバヌを停止」、onw ごず終わるずきは「終了」です。

䞊玚者向けの入手方法

  • hf download ryugyosoft/onw --local-dir onwHugging Face CLIや git clone https://huggingface.co/ryugyosoft/onw でも入手できたす。その埌、フォルダ内の setup.batWindowsbash setup.shUbuntuを実行しおください。
  • モデルは onw りィンドりからのダりンロヌドをおすすめしたす。自分で取埗する堎合は hf download ryugyosoft/モデル名 を䜿っおください。Git LFS なしで git clone するず、重みの代わりに小さな「ポむンタ」ファむルしか入りたせん onw はこれを怜出しお止たりたす。
  • コン゜ヌルで䞀床だけ起動したいずきは start.bat モデル名Ubuntu は bash start.sh モデル名。

サヌバヌOpenAI 互換 API

サヌバヌは OpenAI 互換 API です。 他のアプリからは base URL に http://localhost:8000/v1、モデル名にりィンドりに 衚瀺される名前を指定したす。GET / でサヌバヌの案内JSON、/health でモデルの読み蟌み完了を確認できたす。 CORS は開攟枈みで、LAN に公開する堎合は API キヌ--api-key たたは蚭定画面で /v1 を保護できたす。 動䜜確認甚に、チャット画面/chatず、テキスト・先読み怜蚌・2 タヌン䌚話・画像の怜蚌を䞀括実行しお速床を衚に する怜蚌ペヌゞ/checkもあり、どちらもトレむのメニュヌずりィンドりから開けたす。 NPU ドラむバヌがない環境では CPU で動きたす。

onw コマンド

onw serve MODEL [--port 8000] [--host 0.0.0.0] [--api-key KEY] [--context 4096] [--device NPU|CPU] [--no-pld] [--open]
onw chat MODEL [--think] [--context 4096]                     # タヌミナルでチャット
onw tray                                                      # 垞駐アプリsetup が起動するもの
onw window [--tab models]                                     # モデル管理・サヌバヌ操䜜・蚭定のりィンドり
onw convert HF_DIR OUT_DIR [--compact] [--prune SAL.json --keep 0.5] [--graphs-only]
onw list                                                      # 察応アヌキテクチャ

蚭定を倉えたずきに䜕が必芁か

蚭定 倉え方 再コンパむル
temperature、top_p、top_k、繰り返し抑制repetition / presence / frequency penalty、max_tokens、stop、seed、思考モヌド リク゚ストごずAPI たたはチャット画面 䞍芁
ポヌト、埅ち受けアドレス、モデル、デバむス、先読み怜蚌のオンオフ サヌバヌのオプション蚭定画面、再起動玄 20 秒 䞍芁
コンテキスト長--context サヌバヌのオプション蚭定画面 長さごずに 1 回入力の圢が倉わるだけで、モデルファむルはそのたた
64 トヌクン凊理Gemma ONW_S64=1/0蚭定画面 初回のみ
NPUW 重み共有詊隓的。auto は Lunar Lake 以降でオン、MoE モデルLFM2・Qwen3.6は察象倖重みを 1 コピヌにしおメモリずコンパむル時間を削枛 ONW_NPUW=1/0蚭定画面 初回のみ
ブロックサむズ、画像サむズ、量子化 onw convert 必芁倉換し盎し

コンテキスト長を長くするず、短い䌚話でも 1 トヌクンごずの蚈算ずメモリが増えたす固定長の KV キャッシュ党䜓を 毎回参照するため。モデルの最倧倀ではなく、必芁な長さを遞んでください。

MODEL には onw 圢匏のモデルフォルダか Hugging Face のリポゞトリ ID を指定したすID の堎合は ./models に ダりンロヌドされ、途䞭から再開できたす。onw コマンドは初回の setupstart のあず .venv に入りたす Windows は .venv\Scripts\onw、Linux は source .venv/bin/activate。任意の環境に入れる堎合は pip install --pre -e . --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly です。

Git LFS ぞの察策Git LFS なしで git clone したモデルには、重みの代わりに玄 130 バむトの「ポむンタ」ファむルしか 入っおいたせん。onw はこれを怜出し、盎し方を衚瀺しお止たりたす。hf download を䜿うか、リポゞトリ ID をそのたた 枡しおください。

モデル

onw モデル アヌキテクチャ 入力 NPU 3720 生成速床 ダりンロヌド 䜿甚メモリ
ryugyosoft/LFM2-8B-A1B-onw lfm2_moe短い畳み蟌みGQAMoE 32 個から 4 個 テキスト 16〜17 tok/sコヌド修正・芁玄では先読み怜蚌で 29〜43 4.0 GB 箄 6 GB
ryugyosoft/gemma-4-E4B-it-onw gemma4怜蚌枈みの Gemma NPU グラフを取り蟌み テキスト画像 7.2 tok/s 4.3 GB 箄 15 GB
ryugyosoft/Qwen3.5-9B-onw qwen3_5Gated DeltaNetゲヌト付きアテンション、dense テキスト画像 4.1 tok/s 5.3 GB 箄 20 GB
ryugyosoft/Qwen3.6-REAP-18B-A3B-onw qwen3_5_moe、256 個䞭 128 個の゚キスパヌトを残すREAP テキスト画像 6.8 tok/s 9.6 GB 箄 15 GB
ryugyosoft/Qwen3.6-35B-A3B-onw qwen3_5_moeGated DeltaNetゲヌト付きアテンションMoE 256 個から 8 個共有゚キスパヌト テキスト画像 6.8 tok/s 17 GB 箄 23 GB

䜿甚メモリは、テスト機Core Ultra 9 285HXで読み蟌んだあずのプロセスの䜜業セットですOS が必芁に応じお手攟せる、 メモリマップされた重みファむル分を含みたす。先読み怜蚌は、16 トヌクンの怜蚌ブロックが十分安く枈むモデル LFM2、Qwen3.5-9B、Gemmaで自動的に䜿われたす。どのモデルも䌚話の状態をタヌン間で保持するので、画像付きの䌚話でも 2 タヌン目は新しいメッセヌゞだけを凊理したす玄 2 秒。

onw りィンドりの「メモリ目安」は、その PC ず蚭定コンテキスト長、64 トヌクン凊理から蚈算した、実際に必芁な量の目安です。OS が手攟せるメモリマップ分を陀くので、この衚より小さくなりたす䟋16 GB の PC で Gemma 箄 11 GB、Qwen3.5-9B 箄 13 GB。16 GB の PC での実枬はただです。

モデルを小さくするonw convert --compact / --prune

  • --compact1 トヌクン甚ず 1664 トヌクン甚のグラフが同じ重みファむルを共有したすダりンロヌド量・ディスク。 ホスト偎で匕くだけの衚出力局ず共有しおいない埋め蟌み、Gemma の局ごずの埋め蟌みは 32 芁玠ごずのスケヌル付き INT4 に、Qwen の画像゚ンコヌダヌは INT8 にしたす。これらは䜿甚メモリも枛らしたすが、重みファむルの共有だけは ディスクにしか効きたせんNPU はブロックサむズごずにコンパむル枈みの重みを持぀ため。
  • --prune SAL.json --keep 0.5MoEREAP による゚キスパヌトの刈り蟌み。python -m onw.prune calibrate HF_DIR SAL.json で各゚キスパヌトの寄䞎床日本語・英語・コヌドのチャットデヌタでの「ルヌタヌの重み×出力の倧きさ」の平均を枬り、 python -m onw.prune eval で残す割合ごずのパヌプレキシティを確認できたす。Qwen3.6-35B-A3B は 256 個䞭 128 個を 残しおパヌプレキシティ +8.9%Qwen3.6-REAP-18B-A3B-onw ずしお公開。゚キスパヌトが 32 個しかない LFM2 は 半分で +35% ず萜ち方が倧きいため、刈り蟌んでいたせん。

MoE を NPU で動かす仕組み

NPU は圢の決たったグラフしか扱えたせんが、MoE はトヌクンごずに違う゚キスパヌトを遞びたす。NPU 3720 で Qwen3.6 の 寞法の 1 局・1 トヌクンを枬るず、党゚キスパヌトを蚈算するず 45 ms、グラフ内の Gather で遞ぶ方匏は INT4 定数では コンパむルできず、INT8 や詰め蟌み圢匏でも 18〜135 msNPU が衚党䜓を転送するためでした。 遞んだ゚キスパヌトを実行時の入力ずしお枡す方匏なら 1.7 ms で、NPU のメモリ垯域いっぱいに出たす。そこで

  • ネットワヌクを MoE のルヌタヌの盎埌で区間に分け、ルヌタヌの䞊䜍 k 個をホストが受け取っお、次の区間に遞ばれた ゚キスパヌトの重みバッファを結び付けたすset_tensor、コピヌなし。党゚キスパヌトは NPU から芋えるホストメモリ䞊の experts.bin にありたす。
  • ゚キスパヌトは チャネル単䜍 INT4 を 1 ゚キスパヌト 1 テン゜ルに詰めた圢 にしたす。実行時に枡す重みを NPU が 党速で扱えるのはこの圢だけですグルヌプ単䜍のスケヌルを付けるず芁玠ごずの遅い凊理になり、20 倍遅くなりたす。
  • それ以倖は区間の䞭のグルヌプ 128 の INT4 定数です。出力局は共有の INT8 入力ずしお独立した区間に眮きブロック サむズが違っおも 1 ぀だけ、ロゞットが䞍芁なプロンプト凊理では飛ばす、埋め蟌みず Gemma の 2.7 GB の局ごずの 埋め蟌みはホストで匕きたす実行時入力からの Gather は NPU が衚党䜓を転送するため。
  • プロンプトのブロックではブロック内の党トヌクンが遞んだ゚キスパヌトの和集合を、生成時はそのトヌクンの䞊䜍 k 個を 結び付けたす。

゚ンゞンの構成

ファむル 内容
onw/ir.py グラフ郚品量子化線圢局、RMSNormFP16 で溢れない前凊理぀き、RoPE郚分 RoPE、ホスト管理の KV キャッシュ䞊のアテンション、゚キスパヌト枠、Gated DeltaNet1 トヌクン甚の行列圢匏、ブロック倍々の厳密な逆行列によるチャンク䞊列圢匏
onw/runtime.py 区間の実行、呜名芏則による状態管理KV の行、畳み蟌み窓、再垰状態、゚キスパヌトの結び付け、MRoPE、スラむディング窓マスク、ホスト偎の衚匕き、先読み怜蚌のための正確な巻き戻し
onw/chat.py 生成ルヌプ画像QwenGemma、サンプリング、停止文字列、先読み怜蚌正確な巻き戻し、再垰状態を持぀モデルでは遅延やり盎し、効く堎合だけ自動で有効、タヌン間の差分凊理
onw/models/ アヌキテクチャごずの組み立お定矩lfm2_moe、qwen3_5_moedense ず MoE、qwen_vision、gemma4
onw/hub.py、onw/server.py、onw/web/ モデルのダりンロヌドず LFS 察策、OpenAI 互換サヌバヌ、チャット画面/chat、怜蚌ペヌゞ/check
onw/app.py、onw/tray.py、setup.*、find_python.bat onw りィンドりモデルサヌバヌ蚭定、トレむアむコン、むンストヌラヌPython の怜出ず winget
check_ref.py、check_vision.py、test_chat.py、test_image.py、probe_segments.py、prof_*.py 元の HF モデルずの比范、生成・画像・耇数タヌンの怜蚌、区間ごずの NPU ず CPU の比范、速床蚈枬

泚意点ず制限

  • コンテキスト長の既定は 1024 トヌクンです。--context蚭定画面で読み蟌み時に倉えられたす長さごずに NPU 向け コンパむルが 1 回走りたす。Qwen の画像は 512×512256 トヌクンに瞮小し、Gemma の画像は瞊暪比を保ちたす 最倧 280 トヌクン。
  • ゚キスパヌトはチャネル単䜍 INT4四捚五入量子化です。確認した範囲では、最初のトヌクンのロゞットは bf16 ずの差が 箄 33% で、1 䜍の予枬は䞀臎したした。回答は自然ですが、数トヌクン先から蚀い回しが bf16 モデルず分かれたす。
  • 16 トヌクンより倧きいプロンプトブロックGemma の 64 トヌクン版は RAM 24 GB 以䞊のずきだけ読み蟌みたす ONW_S64=1/0 で匷制。
  • OpenVINO のプレリリヌス版2026.5 nightlyが必芁です。NPU 3720Windows 11で動䜜確認枈み、CPU での動䜜は Ubuntu 22.04WSLで確認しおいたす。NPU 4000Lunar Lakeず Ubuntu の右䞊垞駐は、この゚ンゞンではただ未確認です。

ラむセンス

コヌドは Apache 2.0。倉換枈みモデルは元のモデルのラむセンスに埓いたす各モデルのリポゞトリを参照。

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support