--- license: apache-2.0 base_model: google/gemma-4-E4B-it pipeline_tag: image-text-to-text library_name: openvino tags: - openvino - npu - intel - intel-npu - gemma4 - onw language: - ja - en --- # gemma-4-E4B-it for onw — Intel NPU だけで動く(テキスト+画像) **日本語** | [English](README_en.md) [google/gemma-4-E4B-it](https://huggingface.co/google/gemma-4-E4B-it) を **[onw](https://huggingface.co/ryugyosoft/onw)**(俺のNPUがこんなに動くわけない)用に変換したモデルです。onw は LLM を Intel NPU だけで動かすエンジンで、このリポジトリにはモデルだけが入っています(エンジンは別にダウンロードします)。 テキストと画像に対応。単独版 [ryugyosoft/gemma-4-E4B-it-npu](https://huggingface.co/ryugyosoft/gemma-4-E4B-it-npu) と同じ検証済みの NPU グラフを、共通エンジンで動かします。 **私たちの知る限り、画像エンコーダーと層ごとの埋め込みまで含めて Gemma 4 全体を NPU で動かす公開実装は onw が初めてです**(2026 年 9 月、Fable 5.1 調べ。Intel 公式の OpenVINO GenAI は画像エンコーダーを CPU で動かし、他の公開例はテキストのみです)。 | NPU 3720(Core Ultra 9 285HX) | | |---|---| | 入力 | テキスト+画像 | | 生成速度 | **7.2 tok/s(先読み検証あり、出力は通常生成と同一)** | | プロンプト処理 | 画像+質問 284 トークン:画像 1.9 秒+処理 2.0 秒(64 トークン版、RAM 24 GB 以上) | | ダウンロード | **4.3 GB** | | 使用メモリ(読み込み後の作業セット) | 約 6 GB(画像処理中 8.5 GB) | | 初回起動(NPU 向けコンパイル)/2 回目以降 | 約 4 分/約 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 やメモリ量によって変わります。 ## 使い方 1. **onw(エンジン)を入れます。** まだの場合は、[onw の「インストール」](https://huggingface.co/ryugyosoft/onw) のとおり 1 行貼るだけです。Windows はスタートメニューで「PowerShell」を開き、次の 1 行を貼って Enter(Ubuntu は onw の README の `curl ... | bash`)。 ```powershell irm https://huggingface.co/ryugyosoft/onw/resolve/main/install.ps1 | iex ``` 2. タスクトレイの onw アイコンから開く **onw ウィンドウ** の「モデル」タブで **gemma-4-E4B-it** を選び、「ダウンロード」を押します(4.3 GB)。 3. 「サーバー」タブでモデルを選んで「ロード」を押します。初回だけ NPU 向けの準備に約 4 分かかります。 4. 「チャット」ですぐ試せます。他のアプリからは **OpenAI 互換 API** として使えます(base URL は `http://localhost:8000/v1`)。 onw ウィンドウの「モデル」タブ 「サーバー」タブ 「設定」タブ ```python from openai import OpenAI c = OpenAI(base_url="http://localhost:8000/v1", api_key="none") r = c.chat.completions.create(model="gemma-4-E4B-it-onw", messages=[{"role": "user", "content": "こんにちは"}]) print(r.choices[0].message.content) ``` 上級者向け:`hf download ryugyosoft/gemma-4-E4B-it-onw` で取得したフォルダを `onw serve フォルダ` で起動することもできます。Git LFS なしの `git clone` では重みが入らないので使わないでください(onw が検出して止めます)。 ## バージョン - **v2(現在)**:デコーダーの重みを 1/16/64 トークン用で共有、層ごとの埋め込み表を INT4 化(9.2 → 4.3 GB、使用メモリ 16.1 → 14.8 GB)。回答は v1 と同じでした。 onw 0.3 以降が必要です。 - v1:`hf download ryugyosoft/gemma-4-E4B-it-onw --revision v1 --local-dir ...` で取り出せます。 ダウンロード量の削減の大半は同じ重みを 1 つにまとめたことによるもので、実行時は NPU がブロックサイズごとにコンパイル済みの重みを持つため、使用メモリの減り方は小さめです。 ## 仕組み - Gemma 4 用に書き換えた静的デコーダー(ヘッド次元 512 のアテンションを 256 幅に分割、マスクはホストで作成)をそのまま取り込んでいます。 - 埋め込みと 2.7 GB の層ごとの埋め込み表はホストで引きます(表を引くだけなので NPU メモリを使わず、単独版にあった別プロセスも不要)。 - 出力層は全ブロックサイズで共有する INT8 入力。logit の softcap は NPU コンパイラの不具合を避ける形で組んでいます。 - 詳しくは [onw の技術解説](https://huggingface.co/ryugyosoft/onw/blob/main/TECHNICAL.md)。 ## ファイル | ファイル | 内容 | |---|---| | `seg00_S{1,16,64}.xml` + `seg00.bin` | 静的デコーダー(1/16/64 トークン用、重みは共有) | | `seg01_S*.xml` + `seg01.bin` | 出力層と logit softcap | | `vision.xml` | 静的な画像エンコーダー(280 トークン) | | `shared.bin` | INT8 の埋め込み(出力層と共有)、INT4 の層ごとの埋め込み表と ID 変換表 | | `engine.json`、トークナイザー/設定ファイル | onw 用のメタデータ、元のリポジトリの設定 | ## 品質 エキスパートなどはチャネル単位・グループ単位の INT4(四捨五入量子化)です。確認した範囲では最初のトークンの予測は bf16 と一致し、回答は自然ですが、数トークン先から言い回しが元のモデルと分かれることがあります。 ## ライセンス Apache 2.0(元モデルと同じ)。重みは元モデルから再量子化・再構成したものです。