File size: 7,773 Bytes
d0bf6e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63211d2
d0bf6e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63211d2
 
 
 
 
 
 
 
 
 
 
d0bf6e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
---
license: apache-2.0
language:
  - ja
  - en
tags:
  - amd
  - npu
  - ryzen-ai
  - xdna2
  - fastflowlm
  - lemonade
---

<img src="images/onw-banner.jpg" alt="onw" width="100%">

# onw AMD — 俺のNPUがこんなに動くわけない(AMD Ryzen AI NPU 版)

**日本語** | [English](README_en.md) ・ [更新履歴](CHANGELOG.md)

LLM を **AMD Ryzen AI の NPU(XDNA2)だけで** 動かすアプリです。[onw](https://huggingface.co/ryugyosoft/onw)(Intel NPU 版)の
UI と仕組み(タスクトレイ常駐、モデル管理ウィンドウ、OpenAI 互換 API、チャット画面、検証ページ、自動更新)はそのままに、
推論を NPU 専用エンジン [FastFlowLM](https://github.com/ROCm/FastFlowLM) に置き換えました。FastFlowLM の取得・起動・中継の
仕組みは [Lemonade Server](https://github.com/lemonade-sdk/lemonade) から移植しています。

- **NPU で動かす機能だけ**です。CPU・GPU(iGPU)・NPU+GPU のハイブリッドでは動かしません。
- NPU エンジンは FastFlowLM(`flm` v1.0.7、約 40 MB)だけで、初回に自動でダウンロードします。モデルは `flm list` に出る
  チャットモデル(Qwen3.5/3.6、Gemma 4、gpt-oss、Llama 3.x、Phi-4-mini、LFM2 など)です。

## 必要なもの

- **XDNA2 の NPU を持つ AMD Ryzen AI の PC**(Ryzen AI 300 シリーズ〔Strix Point / Krackan Point〕、Ryzen AI Max〔Strix Halo〕以降)。
  XDNA1(Ryzen 7040/8040 の Phoenix / Hawk Point)は FastFlowLM が対応していないため動きません。
- **NPU ドライバー**(Windows:デバイスマネージャーに「NPU Compute Accelerator Device」が出ていること。
  入れ方は [Lemonade のドライバー案内](https://lemonade-server.ai/driver_install.html))。onw は `flm validate` で確認します。
- Windows 11、または Linux(`amdxdna` ドライバー)
- 空き容量:FastFlowLM 約 40 MB + モデル 1〜22 GB

## インストール

**Windows**(PowerShell に 1 行貼り付け)

```powershell
irm https://huggingface.co/ryugyosoft/onwAMD/resolve/main/install.ps1 | iex
```

`%LOCALAPPDATA%\onw-amd` に入り、タスクトレイに onw のアイコンが出て、モデルを選ぶウィンドウが開きます。
フォルダを直接持っている場合は `setup.bat` を実行してください。

**Linux**

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

## 使い方

1. onw ウィンドウの「**モデル**」タブで、上の「FastFlowLM」の「入れる」を押すとモデルの一覧が出ます。
   使いたいモデルの「ダウンロード」を押します(FastFlowLM がまだなら、先に自動で入ります)。
2. 「**サーバー**」タブでモデルを選んで「ロード」。状態が「動作中」になったら使えます(ロードは十数秒)。
3. 「チャット」でブラウザのチャット画面、「検証ページ」で応答開始までの時間と生成速度をまとめて測れます。
4. 他のアプリからは **OpenAI 互換 API**:base URL `http://localhost:8010/v1`、モデル名はウィンドウに表示される名前
   (例 `qwen3-it-4b-FLM`)。

迷ったら **qwen3-it-4b-FLM**(3.1 GB、ツール呼び出し対応)、画像も読ませたいなら **qwen3.5-4b-FLM**(5.0 GB)。
テスト機(Ryzen AI 9 HX 370)では qwen3.5-0.8b で生成 約 44 tok/s、応答開始 約 0.5 秒でした。

- 思考モード(reasoning のラベルがあるモデル):チャット画面の「思考モード」、API の
  `chat_template_kwargs: {"enable_thinking": true}` か `reasoning_effort`。思考は `reasoning_content` に分けて返します。

### うまく動かないとき

「モデル」タブに FastFlowLM の NPU チェックの結果(理由)が出ます。それでも分からないときは診断スクリプトを実行し、
保存される `onw-amd-diag.txt` を送ってください(読み取りのみ。`--try-model` を付けると小さいモデルで実際に試します)。

```bash
curl -fsSL https://huggingface.co/ryugyosoft/onwAMD/resolve/main/diag.py | python3 - --try-model
```

Windows(PowerShell)は `irm https://huggingface.co/ryugyosoft/onwAMD/resolve/main/diag.py | python - --try-model`。

### `onw` コマンド

```bash
onw serve MODEL [--port 8010] [--host 0.0.0.0] [--api-key KEY] [--context 4096] [--open]
onw tray                   # 常駐アプリ(setup が起動するもの)
onw window [--tab models]  # モデル管理・サーバー操作・設定のウィンドウ
onw list                   # この PC で動かせるモデル(* はダウンロード済み)
onw npu                    # NPU と FastFlowLM の状態(flm validate の結果も)
```

`onw serve` はモデルや FastFlowLM がなければ先にダウンロードします(コンソールで 1 回だけ動かすなら `start.bat モデル名`)。

### サーバー

- `GET /`(案内)、`/health`(モデルを読み終わると 200、読み込み中は 503)、`/v1/models`、
  `POST /v1/chat/completions`(ストリーミング可)、`POST /v1/completions`、`/chat`、`/check`、`/api/info`
- 既定のポートは 8010 です(Lemonade Server がよく使う 8000 とぶつからないように)。設定画面で変えられます。
- CORS は開放済み。LAN に公開するときは API キー(`--api-key` または設定画面)で `/v1` を保護できます。
- 仕組みは Lemonade Server と同じです:`flm serve` を空いているローカルのポート(8001〜)で子プロセスとして起動し、
  リクエストを転送します(`model` は FastFlowLM のチェックポイント名に書き換えます)。onw のサーバーが止まれば
  FastFlowLM も必ず止まり(Windows ではジョブオブジェクト)、FastFlowLM が止まれば onw のサーバーも止まってウィンドウに理由が出ます。

### 保存場所

| もの | 場所 |
|---|---|
| 設定・ログ | `%APPDATA%\onw-amd`(Linux: `~/.config/onw-amd`) |
| FastFlowLM | `%APPDATA%\onw-amd\bin\flm\npu` |
| モデル | 保存先フォルダ(既定 `%APPDATA%\onw-amd\flm`、ウィンドウで変更可)。`FLM_MODEL_PATH` として flm に渡します |

## 構成

| ファイル | 内容 |
|---|---|
| `onw/lemonade.py` | Lemonade Server の FastFlowLM 経路の移植:XDNA2 の検出、FastFlowLM の取得(版は Lemonade の `backend_versions.json` と同じ)、`flm validate / list / pull / remove`、起動コマンド、準備完了の待ち合わせ |
| `onw/server.py` | OpenAI 互換サーバー:FastFlowLM を起動して転送、思考モードの変換、チャット画面・検証ページ・API キー |
| `onw/app.py`、`onw/manager.py`、`onw/dl.py` | 設定・モデル一覧・サーバープロセスの管理、ウィンドウの裏側(ローカル API)、ダウンロード(別プロセス) |
| `onw/tray.py`、`onw/update.py`、`onw/i18n.py`、`onw/web/` | トレイアイコン、自動更新、表示言語(日本語・英語・中国語)、画面 |

## ライセンス

Powered by [FastFlowLM](https://github.com/ROCm/FastFlowLM)

コードは Apache 2.0(onw と同じ)。`onw/lemonade.py` は Lemonade Server(Apache 2.0、AMD / lemonade-sdk)のコードを移植したものです。
FastFlowLM は onw には含まれず、実行時に公式のリリースからダウンロードされます(コードは MIT、NPU カーネルはソース非公開だが商用を含め無償)。
モデルはそれぞれのモデルのライセンスに従います。