1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AUTOMATIC1111 Stable Diffusion Web UI on Python 仮想環境で Qualcomm Hexagon NPU を用いて画像生成する

1
Posted at

目次

本記事のまとめ

実行環境と具体的なセットアップ手順

実行環境:

  • 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

セットアップ手順:

  1. Git for Windows on arm64 をインストールする
  2. uv をインストールする
    • PowerShell コマンドでインストールする場合、インストール後に PowerShell に表示される指示に従って変更を適用してください。
  3. Web UI を配置したいディレクトリで git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git を実行する。
  4. cd stable-diffusion-webui を実行する。
  5. uv venv --python 3.10.6 を実行する。
    • .venv ディレクトリが生成されます。
  6. .venv\Scripts\activate を実行し、Python 3.10.6 環境をアクティベーションする。
  7. python -m ensurepip --upgrade を実行し、pip をインストールする。
  8. 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 のバージョンを固定し、バージョン衝突を回避します。
  9. deactivate を実行し、Python 環境をディアクティベーションする。
  10. AUTOMATIC1111 stable-diffusion-webui Extension v1.2 をインストールする。
    1. https://github.com/quic/wos-ai-plugins/releases/tag/v1.2-automatic1111-webui 中の stable-diffusion-webui-qairt-extension-v1.2.zip をダウンロード。
    2. 上記 ZIP を解凍。
    3. 解凍先ディレクトリ内にある qairt_accelerate ディレクトリをそのまま stable-diffusion-webui/extentions/ 内に移動。
  11. webui-user.bat のバックアップを取っておく。
    1. 今回は webui-user.bat.example という名前にした。
  12. webui-user.batwebui-user.bat の内容に示す内容に差し替える。
  13. 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-webuimodules/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 を利用します。後者のバッチファイルでは、PYTHONVENV_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 上で画像生成モデルを手っ取り早く動かしてみたい!」という方に届けば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?