--- license: apache-2.0 language: - ja - en tags: - amd - npu - ryzen-ai - xdna2 - fastflowlm - lemonade --- onw # 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 カーネルはソース非公開だが商用を含め無償)。 モデルはそれぞれのモデルのライセンスに従います。