ご家庭のゲーミングPCで画像生成AI(SDXL0.9)を動かしてみませんか？

![00107-2023-07-11-stable-diffusion-xl-base-0.9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/65137a79-ef47-119c-6e6e-868bc2af89da.png)
(↑SDXL0.9で生成しました)

# 画像生成AIをWindowsPCで実行したい！

自宅のWindows環境を使い、`Stable Diffusion XL 0.9` で画像を生成できることを紹介します。
生成するだけならpythonやAI用語の理解は不要です！

- この記事で取り上げること
    - `Stable Diffusion XL 0.9` で画像を出力するまで
- この記事で取り上げないこと
    - 画像生成の仕組み
    - 専門用語解説
    - 新旧生成画像の比較
    - パラメータの解説

環境作って画像を出してみる、`hello world!` 的な記事です。

## Stable Diffustion XL(SDXL)とは

画像生成AIの中でも、Windows PCにインストール可能な、公開されている `Stable Diffusion` が人気です。
現時点でv2.1まで公開されていますが、さらに進化した `XL` 版が開発されています。

しばらくは研究用に限定公開され、ウェイトリストに登録して待つ必要がありましたが2023年7月、`Stable Diffusion XL 0.9` が一般にも公開されました。
7月中に`1.0`も公開とのウワサです。

## PCの用意

ご家庭のPCとはいっても、要求スペックは結構高めです。
とはいえGPUのチョイスさえ間違えなければ、ミドルクラスのゲーミングマシンで実行可能です。

- RTX2000系以上
- VRAM 12GB 以上 ← ココ重要！
- RAM 16GB 以上
- CPUはx64系

今回は

- RTX2060-6GB
- Ryzen5 2600(6C12T)
- RAM 32GB

と、GPU の推奨スペックを満たしていない構成で挑戦してみます。
VRAMこそ6GBしかありませんが、RAMと共有してGPUメモリは22GBと表示されているので、いけるんじゃないかな～と・・・

# 環境構築

Windowsとgitがあれば始められます。
ざっくりと以下の流れです。

- python 3.10 のインストール
- Haggingfaceへサインアップ
    - アクセストークンの発行
- SD.nextのインストール
- SD.nextからモデルをダウンロード
- いよいよ生成！

もちろん導入済みの工程はスキップで構いません。

## python 3.10 のインストール

`3.10` を用意します。現時点最新の `3.11` では動作しないので注意してください。
Windows環境にPythonがインストールされていない場合、検索バーから `python` と入力すれば Microsoft Store のアプリに飛ばされます。ここからインストールするのが簡単です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/1c62d76b-7f09-e25b-9042-d0e34a7e27e9.png)

## Haggingfaceへサインアップ

<https://huggingface.co/> にサインアップします。
このサイトでは画像生成に必要なモデルを配信しています。
サインアップから進めていってください。

### アクセストークンの発行

サインアップできたら左サイドバーの `settings` またはアカウントアイコンメニューから `setting` → `Access Tokens` へ進みます。
`New token` ボタンをクリックして、適当な名前を付けて作成します。
`Role` は `Read` のままで問題ありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/f5aeef7f-af3a-c0ad-04e4-3884f62e6d59.png)

生成されたら、あとで使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/9eb9bb04-d2d9-52f3-2436-87674b1e73af.png)

## SD.next のインストール

`SD.next` は、めんどくさい生成AIをブラウザから実行できるツールです。
<https://github.com/vladmandic/automatic>

`XL` ではない無印 `Stable Diffusion` では [Stable Diffusion web UI](https://github.com/AUTOMATIC1111/stable-diffusion-webui)が有名です。こちらからフォークされたものです。

インストールには `git` コマンドを使います。
適当なディレクトリを用意してください。
Cドライブ直下に `ai` ディレクトリを作成し、その中にクローンする例です。

```cmd
cd \
mkdir ai
cd ai
git clone https://github.com/vladmandic/automatic
```

clone自体はすぐ終わります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/98d2b798-998b-e4c3-f51f-766e54cc468f.png)

## 起動バッチファイルの作成

cloneしたディレクトリに `webui-user.bat` を作成します。
`SDXL` 起動に必要なオプションを記述します。

```bat:webui-user.bat
call webui --backend diffusers
```

### 起動

作成したバッチファイルから起動します。

```cmd
webui-user.bat
```

初回は必要なライブラリが大量にインストールされるので時間がかかります。
python に不慣れでも、自動でやってくれるところが素晴らしいですね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/58a9c0f9-a1ee-dd51-27f4-1db8341549c7.png)

が、エラーになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/6b81c400-54d4-2c38-df9d-48e8ea914600.png)

このエラーは無視しても大丈夫なものらしいので、そのままもう一回実行してください。

```cmd
webui-user.bat
```

しばらくするとデフォルトモデルをダウンロードするか聞かれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/1480d4b1-446a-62db-01cb-ef8e55f84257.png)

今回は `SDXL` を使うことが目的なので `N` を入力して進みます。
※ 別環境でインストールすると無印 `Stable Diffusion 1.5` がインストールされました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/906bbea4-2d4b-8433-ece3-df8b42929f1d.png)

長かったですが、 <http://127.0.0.1:7860/> の URL が表示されていれば起動しています！
ただし、このままではモデルがないので何も生成できません。

## モデルのダウンロード

### 事前準備

`huggingface` のモデルページにアクセスしてください。
<https://huggingface.co/stabilityai/stable-diffusion-xl-base-0.9>

スクリーンショットを取り忘れてしまいましたが、いくつか情報を入力する箇所がありました。
送信後にその入力欄がなくなっていればOKです。

### SD.nextからモデルをダウンロード

- `Models` タブ → `Huggingface` タブを開く
- `select model` に `stabilityai/stable-diffusion-xl-base-0.9` をセット
- `Huggingface token` に発行したトークンをセット
- `Download model` ボタンをクリック

ブラウザ上は変化がわかりませんが、起動しているコンソールを見ると巨大モデルをインストールしていることがわかります。

## いよいよ生成！

モデルダウンロードが終わればようやく生成開始です！
プロンプトを入れる前に、設定をしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/3814cc2a-470f-67c4-43d1-f262a96fefd1.png)

生成する画像の `Width` と `Height` だけ `512` → `1024` に変更してください。
大きすぎても小さすぎても崩れた絵が生成されます。

今回はプロンプトに `tired cat` だけ入力して生成しました。
VRAMは8GBくらい消費していました。VRAMと比べて低速なDRAMを併用するのでかなり時間がかかります・・・

～～ 約 7 分後 ～～

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3104999/a6022e62-bb13-1d41-1110-a61ff1776b58.png)

疲れて寝ている猫が生成されました！
簡単なプロンプトでそれっぽい絵が生成されます。
なお `SDXL0.9` は、生成した画像の商用利用は禁止されています。
今月中にリリースされるという `1.0` を期待して待ちましょう！

## おわりに

家庭用PCでも画像生成AIを動かすことができました！
正直なところ RTX2060 では 7 分かかるとなると、有料サービスを使ったほうが良いかもしれません。
が、推奨スペック以下のPCでもギリギリ出力できることがわかりました。

なお 1世代先のGPUを積んだメインマシンの RTX3090-24GBでは 7 秒くらいで生成できます。
今なら RTX3060-12GBが5万円以下で販売されているので、このへんが狙い目です。

RTX4090ならもっと早いんだろうなぁと思いつつ、今回はこの辺で！