onwx-Image
日本語 | English
画像生成 AI Z-Image-Turbo を AMD Ryzen AI の XDNA2 NPU だけで動かすデスクトップアプリです。テキストエンコーダー(Qwen3)、画像を作る DiT、画像に戻す VAE の 3 つとも NPU で計算します。onwx の仲間です。
![]() |
![]() |
![]() |
| 雪の降る京都の寺、赤い傘をさした人、浮世絵風 | a red fox in a snowy birch forest, morning mist, photo | 夕暮れの港町、石畳の坂道、水彩画風 |
速さ
Ryzen AI 9 HX 370(メモリ 32 GB)、9 ステップ、新しいプロンプトで 1 枚あたり:
| サイズ | 時間 |
|---|---|
| 768×768 | 約 56〜60 秒 |
| 1024×1024 | 約 99 秒 |
起動して最初の 1 枚は、モデルの読み込みのぶん 15 秒ほど長くかかります。同じプロンプトを続けるときは、テキストエンコーダーを使わないぶん少し速くなります。
しくみ
- OpenVINO、ONNX Runtime、Vitis AI EP、DirectML、GPU は使いません。NPU の計算はすべて、mlir-aie の IRON で書いた自前のカーネルで、XRT から直接動かします。
- DiT とテキストエンコーダー:重みと入力をどちらも INT8 にします(W8A8)。入力は 256 ごとの Hadamard 回転をかけてから量子化し、回転は重みに畳み込んであります。行列積は NPU の 32 コア全部で計算します。アテンションは NPU 上の flash attention で、L×L のスコアはコアの外に出しません。
- VAE:ブロック浮動小数点(bfp16)の行列積と NPU の行カーネルで、画像全体をタイルに分けずに一度に復元します。diffusers(CPU)の結果との差は約 50 dB(PSNR)で、見た目では区別できません。
- CPU が受け持つのは、トークン化、Euler スケジューラ、埋め込みなどベクトルの大きさの小さな計算だけです。
- モデルは Tongyi-MAI/Z-Image-Turbo を NPU カーネルが読む形に変換したもの(ryugyosoft/Z-Image-Turbo-onwx-npu)です。原本から自分で作るときは
python -m onwx_image.fetch_model --from-original。
必要なもの
- XDNA2 NPU 搭載の AMD Ryzen AI PC(Ryzen AI 300 / Strix、Ryzen AI Max / Strix Halo)
- Windows 11 x64、Python 3.13、Visual Studio 2022 の C++ ビルドツール
- AMD NPU ドライバー(
xrt-smi examineで NPU が見えること) - メモリ 32 GB 以上
- ディスク約 16 GB(NPU 用に変換済みのモデル 11 GB、Python と NPU コンパイラ、NPU カーネル)
- 初回のモデル・コンパイラ・XRT SDK のダウンロード用のインターネット接続
インストール
PowerShell で次を実行します。
irm https://huggingface.co/ryugyosoft/onwx-image/resolve/main/install.ps1 | iex
%LOCALAPPDATA%\onwx-Image に入り、スタートメニューの名前は onwx-Image です。セットアップは次を行います。
- Python の依存関係と NPU のコンパイラ(mlir-aie、llvm-aie。版を固定しています)、XRT 2.21.75 SDK を入れます
- NPU 用に変換済みの Z-Image-Turbo(ryugyosoft/Z-Image-Turbo-onwx-npu、約 11 GB)を取得します。PC での変換はありません
- すべての画像サイズの NPU カーネルを作ります(初回は約 30 分。もう一度実行したときは確認だけで 1〜2 分)
もう一度実行すると更新になります。
使い方
- スタートメニューの「onwx-Image」または
start.bat - ブラウザで開く:
.venv\Scripts\python.exe -m onwx_image --browser - 画面だけ確かめる(NPU を使わない):
.venv\Scripts\python.exe -m onwx_image --mock
プロンプト(日本語・英語)、サイズ、ステップ数、枚数、シードを選んで「生成」を押します。生成中のプレビュー、連続生成、履歴、PNG へのプロンプト・シードの保存ができます。画像は ピクチャ\onwx-Image に保存されます。NPU やモデルが足りないときはエラーになり、CPU や GPU に切り替えて動くことはありません。
メモリ 48 GB 未満の PC では、テキストエンコーダーは画像を 1 枚作るたびに手放し、画像を見ている間に裏で読み込み直します(ONWX_IMAGE_KEEP_TEXT_ENCODER=1 で常に保持、0 で常に手放す)。
診断
.venv\Scripts\python.exe -m onwx_image.xdna_setup
.venv\Scripts\python.exe -m onwx_image.doctor
.venv\Scripts\python.exe -m onwx_image.fetch_model --validate models\Z-Image-Turbo-onwx-npu
.venv\Scripts\python.exe -m onwx_image.prebuild
アンインストール
%LOCALAPPDATA%\onwx-Image フォルダー、スタートメニューの onwx-Image、NPU カーネルのキャッシュ %USERPROFILE%\.cache\onwx-image を削除します。設定は %APPDATA%\onwx-Image にあります。作った画像(ピクチャ\onwx-Image)は残ります。
ライセンス
アプリは Apache License 2.0 です。Z-Image-Turbo、mlir-aie、XRT などにはそれぞれのライセンスが適用されます。変更点は CHANGELOG.md にあります。


