目次
本記事のまとめ
- uv を利用して仮想環境を作成し、その上で AUTOMATIC1111 stable-diffusion-webui + the Qualcomm AI Runtime (QAIRT) extension を動作させ、NPU を用いて画像生成する手順を共有します。
- 大雑把に言えば、「Stable Diffusion WebUI」でも NPU が使える! SD 2.1 の画像を約 10 秒で生成 - 使ってわかる Copilot+ PC - 窓の杜の二番煎じで、Windows に直接 Python をインストールしたくない人向けです。
- Web UI を動作させる Python の環境は
webui-user.bat内で指定できます。 - 忙しい方は「実行環境と具体的なセットアップ手順」をご参照ください。
実行環境と具体的なセットアップ手順
実行環境:
- OS: Windows 11 Home Version 25H2
- Processor: Snapdragon(R) X Plus - X1P42100 - Qualcomm(R) Oryon(TM) CPU (3.24 GHz)
- RAM: 32.0 GB
- NPU: Qualcomm Hexagon(TM) NPU
セットアップ手順:
- Git for Windows on arm64 をインストールする。
-
uv をインストールする。
- PowerShell コマンドでインストールする場合、インストール後に PowerShell に表示される指示に従って変更を適用してください。
- Web UI を配置したいディレクトリで
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.gitを実行する。 -
cd stable-diffusion-webuiを実行する。 -
uv venv --python 3.10.6を実行する。-
.venvディレクトリが生成されます。
-
-
.venv\Scripts\activateを実行し、Python 3.10.6 環境をアクティベーションする。 -
python -m ensurepip --upgradeを実行し、pipをインストールする。 -
python -m pip install diffusers==0.31.0を実行し、diffusers==0.31.0をインストールする。-
webui.batを実行するとdiffusersの最新バージョンがインストールされます。そのバージョンは、Web UI が利用している PyTorch 2.1 系と衝突を起こし、(なぜか)Qualcomm AI Runtime のインストールに失敗します。そこで、この手順により PyTorch 2.1 系に合わせてdiffusersのバージョンを固定し、バージョン衝突を回避します。
-
-
deactivateを実行し、Python 環境をディアクティベーションする。 - AUTOMATIC1111 stable-diffusion-webui Extension v1.2 をインストールする。
-
https://github.com/quic/wos-ai-plugins/releases/tag/v1.2-automatic1111-webui 中の
stable-diffusion-webui-qairt-extension-v1.2.zipをダウンロード。 - 上記 ZIP を解凍。
- 解凍先ディレクトリ内にある
qairt_accelerateディレクトリをそのままstable-diffusion-webui/extentions/内に移動。
-
https://github.com/quic/wos-ai-plugins/releases/tag/v1.2-automatic1111-webui 中の
-
webui-user.batのバックアップを取っておく。- 今回は
webui-user.bat.exampleという名前にした。
- 今回は
-
webui-user.batをwebui-user.batの内容に示す内容に差し替える。 -
webui-user.batを実行する。
webui-user.bat の内容
@echo off
chcp 65001
set PYTHON=%~dp0.venv\Scripts\python.exe
set GIT=
set VENV_DIR=%~dp0.venv
set COMMANDLINE_ARGS= ^
--skip-torch-cuda-test ^
--no-half ^
--precision full ^
--ui-config-file .\extensions\qairt_accelerate\ui-config.json
set TORCH_INDEX_URL=https://download.pytorch.org/whl/cpu
set WEBUI_LAUNCH_LIVE_OUTPUT=1
call webui.bat
背景
最近、ようやく Copilot+PC をお手ごろな価格で手に入れました。せっかくなので PC に搭載されている NPU を利用して、画像生成モデルや言語モデルを動作させてみたいと考えました。手元の PC に搭載されている NPU は Qualcomm Hexagon NPU。自分でコードを書いて Stable Diffusion などを動かしてもよいのですが、まずは性能がどんなものなのか手っ取り早く試したいところ。
NPU に対応しているアプリを調べてみたところ、「窓の杜」さんの記事がヒットしたわけです。この記事では、なんと Stable Diffusion 1.5 と 2.1 が利用できることが紹介されているではありませんか。これはぜひ試したいと思いました。
出くわした壁: Python バージョンサポート問題
記事を読んでいくと、「バージョン 3.10.6 以外のものを使用しないようにと書かれている」との記述が。この記事で試用されているアプリである「AUTOMATIC1111 stable-diffusion-webui Extension」の README を読むと、確かに「NOTE: The program is tested to work on Python 3.10.6. Don't use other versions.」という記述があります。「Python 3.12 でも問題ないだろう」と安易に考え、試しに Microsoft Store 経由でインストールした Python 3.12 を利用してアプリのセットアップを進めたところ、ターミナル上に以下のメッセージが出てセットアップが進みませんでした:
INCOMPATIBLE PYTHON VERSION
This program is tested with 3.10.6 Python, but you have 3.12.x.
If you encounter an error with "RuntimeError: Couldn't install torch." message,
or any other error regarding unsuccessful package (library) installation,
please downgrade (or upgrade) to the latest version of 3.10 Python
and delete current Python and "venv" folder in WebUI's directory.
You can download 3.10 Python from here: https://www.python.org/downloads/release/python-3106/
"Alternatively, use a binary release of WebUI: https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.0.0-pre"
Use --skip-python-version-check to suppress this warning.
どうやら今回利用する Web UI である AUTOMATIC1111/stable-diffusion-webui の modules/launch_utils.py の check_python_version 関数内で Python のバージョンチェックをかけており、Windows の場合は 3.10 系しか通さないようにしているようです。そもそも個人的には、Windows に直に Python を入れることは避けたいですし、この Web UI のためだけにわざわざ古いバージョンである Python 3.10 をインストールするのはなおさら避けたいです。
解決策: uv と webui-user.bat の利用
そういうわけで、Python 自体のバージョン管理に利用できるツールである uv に目を付けました。これを利用すれば、Stable Diffusion Web UI 用に Python 3.10.6 仮想環境を作成し、その環境上で Web UI を動作させることができます。
続いて、Web UI のセットアップ時にその仮想環境を利用するために、README の Step 4 で言及されている webui.bat ではなく、webui-user.bat を利用します。後者のバッチファイルでは、PYTHON と VENV_DIR を環境変数として設定できるようになっており、これらに Python 仮想環境のパスを設定すればよいです。
終わりに
今回は uv で作成した Python 3.10.6 仮想環境上で AUTOMATIC1111 stable-diffusion-webui + the QAIRT extention を動作させ、NPU を利用して Stable Diffusion v1.5 モデルに画像生成させるためのセットアップ手順を共有しました。「わざわざ Windows に直に Python 3.10.6 をインストールしたくない!」という方で、「NPU 上で画像生成モデルを手っ取り早く動かしてみたい!」という方に届けば幸いです。