onw-Image が Panther Lake の NPU で生成した画像

onw-Image 0.1 — NPU だけで画像生成

日本語 | English

画像生成 AI Z-Image-Turbo(6B、Apache 2.0)を Intel NPU だけで 動かすデスクトップアプリです。 プロンプトの読み込み(テキストエンコーダー)、画像の生成(DiT)、画像への変換(VAE)まで、すべて NPU で計算します。 LLM を NPU で動かす onw の姉妹アプリです(上のバナーも onw-Image で生成)。

  • Panther Lake(Windows):1024×1024 の画像が 1 枚約 76 秒(FP8、9 ステップ)
  • Lunar Lake(Ubuntu、メモリ 16 GB):768×768 の画像が 1 枚約 70 秒(INT8、9 ステップ)
  • 日本語のプロンプトにも対応
  • 生成中もステップごとのプレビューを表示。画像はプロンプトとシード付きで PNG 保存
  • 連続生成:同じプロンプトでシードを変えながら、指定した時間(最長 30 日)生成し続けます。 NPU で生成中のチップ全体の消費電力は 15 W 前後なので、つけっぱなしでも電球 1 個ぶん程度です

インストール(コマンドを 1 行貼るだけ)

Windows(Panther Lake)

PowerShell を開き、次の 1 行を貼り付けて Enter を押します。

irm https://huggingface.co/ryugyosoft/onw-image/resolve/main/install.ps1 | iex

アプリは %LOCALAPPDATA%\onw-Image に入ります。Python が無ければ winget で入れるか聞かれます。 続けてモデル(約 11 GB)がダウンロードされ、終わると onw-Image のウィンドウが開きます。 次回からはスタートメニューの「onw-Image」から起動できます。

Ubuntu(Lunar Lake)

端末(Ctrl+Alt+T)を開き、次の 1 行を貼り付けて Enter を押します。途中で必要な部品を入れるために、 ログインパスワードを 1 回聞かれます。

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

アプリは ~/onw-image に入ります。続けてモデル(約 10 GB)がダウンロードされ、終わると onw-Image のウィンドウが開きます。 次回からはアプリ一覧の「onw-Image」から起動できます。

どちらも、同じ 1 行をもう一度実行すると最新版に更新されます。

初回だけ NPU 向けのコンパイルがあります

最初に生成ボタンを押すと、モデルをお使いの NPU 向けにコンパイルします(Panther Lake で約 40 分、Lunar Lake で約 25 分)。 進み具合はウィンドウに表示されます。結果は保存されるので、2 回目以降の起動は数秒で生成を始められます。 サイズを初めて変えたときや、長いプロンプト(64 トークン超)を初めて使ったときも、その分だけ同じコンパイルが走ります。

必要なもの

項目 Windows 版 Ubuntu 版
CPU Core Ultra シリーズ 3(Panther Lake、NPU 5000 以降) Core Ultra 200V シリーズ(Lunar Lake、NPU 4000)
モデル FP8(1 層 1 グラフ) INT8(6 層 1 グラフ)
メモリ 32 GB 以上(64 GB で確認) 16 GB 以上
OS Windows 11 Ubuntu 24.04 以降(26.04 で確認)、linux-npu-driver 1.38 以降
ディスク 約 40 GB(モデル 11 GB、コンパイル結果、Python 環境) 約 20 GB(モデル 10 GB、コンパイル結果 7 GB、Python 環境)

速さの目安(9 ステップ)

処理 Panther Lake(1024×1024、FP8) Lunar Lake(768×768、INT8)
1 ステップ(DiT) 約 8.2 秒(長いプロンプトでは約 11 秒) 約 5.7 秒
1 枚(テキストエンコーダー・DiT・VAE の合計) 約 76 秒(2 枚目以降) 約 70 秒
平均消費電力(チップ全体) 約 15 W 約 14 W

1024×1024 の PNG は 1 枚 1.2 MB 前後なので、連続生成で 1000 枚作っても 1.2 GB ほどです。 保存先の空きが 2 GB を切ると、連続生成は自動で止まります。

使い方

  • 左側:プロンプト(Ctrl+Enter で生成)、サイズ、ステップ数(4〜12、既定 9)、枚数、シード(固定・ランダム)
    • 枚数を 8 の次に進めると「連続」になり、続ける時間(1 時間〜30 日)を選べます
  • 中央:生成中のプレビューと進み具合、完成した画像
  • 右側:履歴(保存先フォルダの画像も表示)。ファイルの場所を開く、コピー、同じ設定で再生成、ごみ箱へ移動
  • 保存先:ピクチャの onw-Image フォルダ(設定で変更可)。PNG にプロンプト・シード・サイズなどを書き込みます

仕組み(NPU で動かすための工夫)

  • Panther Lake は FP8、Lunar Lake は INT8:FP8 を NPU がそのまま計算できるのは NPU 5000 以降です。 FP8 は INT8 より精度が高く、元のモデルに近い画になります。INT8 版は外れ値の多い FFN の出力側を層ごとに調整しています
  • 画像トークンとプロンプトのトークンを分けて量子化:プロンプト側の一部のトークンに巨大な値が出るため、 画像側は静的な尺度、プロンプト側はトークンごとの尺度にしています
  • 1×1 畳み込みの形で計算:トークンを画像のマス目として並べると、NPU では行列積の形より約 2.5 倍速くなりました
  • アテンションのマスクを q・k に埋め込む:NPU ではマスク付きのアテンションが遅く不正確なため、マスクを q・k の追加次元に入れています
  • 16 GB に収める(Lunar Lake):6 層ずつを 1 つのグラフにまとめ、空きメモリに応じて常駐させる数を自動で決めます
  • NPU の turbo:コンパイル済みのグラフを書き出し、NPU_TURBO 付きで読み込みます
  • NPU 特有の数値の落とし穴を回避:RoPE や RMSNorm の書き方によって NPU の計算結果が崩れる箇所を見つけ、 正しく計算できる形に置き換えています

生成例(Lunar Lake、768×768)

Lunar Lake の NPU で生成した 768×768 の画像

右 2 枚のプロンプトは「アニメ調の夕暮れの港町、猫耳の少女、看板に『NPU』の文字」です。

ライセンス

更新履歴

  • 0.1(2026-10-09):Windows・Panther Lake 版(FP8、1024×1024 が既定、1 枚約 76 秒)を追加。連続生成(最長 30 日)を追加。 NPU の turbo を使うように。Lunar Lake では空きメモリに応じて DiT のグラフを常駐させ、1 ステップ 6.5 秒 → 5.7 秒、 生成中の SSD 読み込みと CPU 使用がほぼなくなりました
  • 0.1a(2026-10-08):最初の公開版。Ubuntu の Lunar Lake 向け INT8 モデル、768×768 が既定
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support