File size: 6,516 Bytes
6f63f42 41c0510 6f63f42 41c0510 6f63f42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | ---
license: mit
base_model:
- ornith-ai/Ornith-1.5-9B
language:
- ja
- en
pipeline_tag: image-text-to-text
tags:
- openvino
- npu
- intel
- onw
- agent
- tool-use
library_name: onw
---
# Ornith-1.5-9B for onw — Intel NPU だけで動く(テキスト+画像)
**日本語** | [English](README_en.md)
[ornith-ai/Ornith-1.5-9B](https://huggingface.co/ornith-ai/Ornith-1.5-9B) を **[onw](https://huggingface.co/ryugyosoft/onw)**(俺のNPUがこんなに動くわけない)用に変換したモデルです。onw は LLM を Intel NPU だけで動かすエンジンで、このリポジトリにはモデルだけが入っています(エンジンは別にダウンロードします)。
ornith-ai の [Ornith-1.5](https://huggingface.co/ornith-ai) は、Qwen3.5 系に継続事前学習・中間学習・事後学習を重ね、コーディングエージェント・ツール呼び出し・長い作業向けに自己改善ループで鍛えたモデルです(元のカードでは SWE-bench Verified、Terminal-Bench、MCP-Atlas などで元の Qwen を大きく上回っています)。構造は Qwen3.5/3.6 と同じなので、onw の Qwen 用の変換・実行がそのまま使えます。この 9B は dense で、テキストと画像に対応します。
**ツール呼び出し**:OpenAI 互換 API の `tools` に対応(並列呼び出しも可)。思考モードでは思考が `reasoning_content` で返り、次のターンでそれを履歴に含めて送るとモデルに渡ります(Ornith のテンプレートは過去のターンの思考も残す作りで、エージェント用途ではこれが効きます)。元のカードの推奨設定は、一般用途 temperature 1.0・top_p 0.95・top_k 20・presence_penalty 1.5、コーディング temperature 0.6 です(onw の既定は貪欲生成)。
| NPU 3720(Core Ultra 9 285HX) | |
|---|---|
| 入力 | テキスト+画像 |
| 生成速度 | **4.9 tok/s(先読み検証で 9〜15 tok/s)** |
| プロンプト処理 | 画像+質問 281 トークン:画像 0.5 秒+処理 8.0 秒 |
| ダウンロード | **5.3 GB** |
| 使用メモリ(読み込み後の作業セット) | 約 11 GB |
| 初回起動(NPU 向けコンパイル)/2 回目以降 | 約 10 分/約 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 ウィンドウ** の「モデル」タブで **Ornith-1.5-9B** を選び、「ダウンロード」を押します(5.3 GB)。
3. 「サーバー」タブでモデルを選んで「ロード」を押します。初回だけ NPU 向けの準備に約 10 分かかります。
4. 「チャット」ですぐ試せます。他のアプリからは **OpenAI 互換 API** として使えます(base URL は `http://localhost:8000/v1`)。
<img src="https://huggingface.co/ryugyosoft/onw/resolve/main/images/onw-models.png" width="640" alt="onw ウィンドウの「モデル」タブ">
<img src="https://huggingface.co/ryugyosoft/onw/resolve/main/images/onw-server.png" width="49%" alt="「サーバー」タブ"> <img src="https://huggingface.co/ryugyosoft/onw/resolve/main/images/onw-settings.png" width="49%" alt="「設定」タブ">
```python
from openai import OpenAI
c = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
r = c.chat.completions.create(model="Ornith-1.5-9B-onw", messages=[{"role": "user", "content": "こんにちは"}])
print(r.choices[0].message.content)
```
上級者向け:`hf download ryugyosoft/Ornith-1.5-9B-onw` で取得したフォルダを `onw serve フォルダ` で起動することもできます。Git LFS なしの `git clone` では重みが入らないので使わないでください(onw が検出して止めます)。
## 仕組み
- 32 層(Gated DeltaNet 24+ゲート付きアテンション 8)を 8 層ずつ 4 区間にし、グループ 128 の INT4。出力層は独立した区間で、ロジットが不要なプロンプト処理では飛ばします。
- DeltaNet は、生成時は 1 トークン用の行列形式、16 トークンのプロンプト処理はブロック倍々の厳密な逆行列によるチャンク並列形式。FP16 で小さくなりすぎる出力は 1024 倍し、直後のゲート付き RMSNorm は溢れないよう前処理しています。
- 画像エンコーダー(27 層の ViT)は 512×512 入力用の 1 枚の静的グラフ。画像トークンの MRoPE の位置はホストで計算します。
- 詳しくは [onw の技術解説](https://huggingface.co/ryugyosoft/onw/blob/main/TECHNICAL.md)。
## ファイル
| ファイル | 内容 |
|---|---|
| `seg*_S1.xml`, `seg*_S16.xml` + `seg*.bin` | 4 区間+出力層(重みは区間ごとに 1 ファイル) |
| `vision.xml` | INT8 の画像エンコーダー(512×512 → 256 トークン) |
| `shared.bin` | INT8 の出力層、INT4 の埋め込み(ホストで参照) |
| `engine.json`、トークナイザー/設定ファイル | onw 用のメタデータ、元のリポジトリの設定 |
## 品質
区間の重みはグループ 128 の INT4、出力層 INT8、埋め込み INT4(ホストで参照)、画像エンコーダー INT8。元のモデル(bf16、CPU)と教師強制で比べると、回答の終わり(`<|im_end|>`)まで 10 トークンすべて一致しました。画像(図形の色と形)、2 つのツールの並列呼び出しと結果を使った回答、思考の分離を確認済みです。
## ライセンス
MIT(元モデルと同じ)。重みは元モデルから再量子化・再構成したものです。学習はしていません。
|