Stable Diffusion 拡張機能 2台のパソコンで生成高速化機能 あと0.75歩

# 2023/08/17 update
以下にアップデートを記載

https://qiita.com/chunenhaken/items/0220ce9639f08901ea9c

# 2023/06/25 Stable Diffusion 現在までのまとめ
## 第一目標
- 拡張機能 2台のパソコンを利用して Stable Diffusion で生成速度を上げたい
- Tiled Diffusion やスケールアップ時に選択必須となる「Denoising strength」によるガチャ要素を避けたい
- Stable Diffusion Web UI の
  追加機能である **Distributed** で生成するものとする
[**Distributed** Github リンク](https://github.com/papuSpartan/stable-diffusion-webui-distributed)

## 第二目標(発生した問題の回避)
- 生成される画像が2台で異なる
  - GPU ボードの型番が異なる場合に発生する
  - Stable Diffusion 側の設定で「Random number generator sourceをCPUに設定」で回避可能
  ※ただし上記の条件で生成されるのは CPU 生成と同じ
- [x] [xformars のオプションではそもそも同じ画像が生成できない仕様](https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/1999)
- [x] DiffusionのRandom number generator sourceをCPUに設定
- [x] webui 起動オプション [--precision full --no-half](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Troubleshooting#green-or-black-screen)
## `--precision full、--no-half のリンク先翻訳`
特定の GPU ビデオ カードは半精度をサポートしていません。生成された画像の代わりに緑色または黒色の画面が表示される場合があります。を使用します--upcast-sampling。--xformersを使用している場合、これはスタックされるはずです。それでも解決しない場合は、--precision full --no-halfVRAM 使用量が大幅に増加する状態でコマンド ライン引数を使用します。これには、 が必要になる場合があります--medvram。

---

GPUで生成した場合、以下の結果
![GPUで生成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486298/34a6a462-6138-9428-6f37-0cbafd1d0f8d.png)


## その他に検証した項目
以下の CPU で生成し、ハッシュは異なるが、人間の目視で同じものが生成

![CPUで生成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486298/887b5cb4-6279-8187-074d-38fbc0ec6ced.png)


- intel 12700F
- intel core i5 8300H(GALLERIA)[DELL G3 15（3579）と同じM/B 価格コムリンク) ](https://kakaku.com/item/K0001086680/spec/)
- M1 mac mini エントリーモデル [apple リンク](https://www.apple.com/jp/shop/product/FGNR3J/A/mac-mini-%E6%95%B4%E5%82%99%E6%B8%88%E8%A3%BD%E5%93%81-8%E3%82%B3%E3%82%A2cpu%E3%81%A88%E3%82%B3%E3%82%A2gpu%E3%82%92%E6%90%AD%E8%BC%89%E3%81%97%E3%81%9Fapple-m1%E3%83%81%E3%83%83%E3%83%97)
- E5-2690 0 [HPE DL380p Gen8 Amazon リンク](https://www.amazon.co.jp/HP-ProLiant-DL380p-Rack-Server/dp/B007VOZE2W)
- AMD 2500U [HP ENVY x360 13-ag0000](https://kakaku.com/item/K0001079336/spec/)

## 要再検討事項
- TensorRT の高速化は現在スケールアップができない
- Distributed の機能が正常に機能するか、TensorRT へスケールアップが実装されるかで再度要検討

## 追記 update
2台(複数台)で連携
<b>Stable-Diffusion-WebUI-**<font color=red>Distributed</font>**<b>
連携させると片側だけ動く
- [x] Master のみで生成 〇 ※単体で動作させるより遅い
- [x] Slave(worker)のみで生成〇 ※単体で動作させるより遅い
- [x] Master-Slave で生成 ×
- [ ] ハードウェア アクセラレータによる GPU スケジューリング
      →オン/オフで症状がケースバイケースで変わる

課題：トライアンドエラーで起動時(webui-user.bat)オプションの確認

## 高速に書き出すことに特化した問題
(2台生成高速化とは外れるがメモとして残す)
- [GPU 側の電力制限を 70% に抑えてもパフォーマンスに影響がない](https://www.youtube.com/watch?v=4Mc4gFfU0Ps)
- 某巨大掲示板のコメント ※リンクNGのため記載を転記

TGP200Wの4070でテストしてみた
| 電力制限| 実測電力| アスカベンチ所要時間 |速度比|
| -------- | -------- | -------- | -------- |
|100%|約200W|Time taken: 19.23s|(100%)|
|70%|約140W|Time taken: 20.05s|(95.9%)|
|50%|約100W|Time taken: 28.54s|(67.3%)|

 実測電力はグラボ全体のW数(GPU-Zで言うBoard Power)
巷でよく言われている通り70%かけても処理速度は5%くらいしか下がらない
美味しい

## 出力サイズ特化型1 (upscale x4 での実行速度)
本来のStable Diffusionではなく、あくまで付随機能だが
生成速度をメモとして残す
もともとは ハードウェア アクセラレータによる GPU スケジューリング で速くなる環境、
オフにすると速くなる環境などさまざな情報があったため派生検証として実施した結果のメモ
※1枚あたりの画像サイズは 1GB を超えるので要注意
![gen_1GB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486298/4c590d78-2a3d-5844-c868-21510c5f1008.png)


webui-user.bat 起動パラメータ なし
```
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
```
Windows 10/11 以下の設定を実施
システム > ディスプレイ > グラフィック > 既定のグラフィック設定
![hardware_accelerator.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486298/b9e8b3f6-e5b2-882e-c24d-5c4366127c76.png)

 - オンの結果

| 元画像サイズ | 変更後 | 処理時間 |
| -------- | -------- | -------- |
|512 x 512| 4096 x 4096(4K)|Time taken: 19.88s|
|4096 x 4096(4K)|32768 x 32768(32K)|Time taken: 17m 46.59s|

- オフの結果

| 元画像サイズ | 変更後 | 処理時間 |
| -------- | -------- | -------- |
|512 x 512| 4096 x 4096(4K)|Time taken: 20.10s|
|4096 x 4096(4K)|32768 x 32768(32K)|Time taken: 18m 0.98s|

## 出力サイズ特化型2 Tiled Diffusion
- パラメーターである 「denoising strength」の影響が大きい
- ある程度の GPU パワーが必要
当方検証環境 1050Ti ではひとたまりもない検証のため
2023/06/25 現時点では未実施

## 現在までの進捗
- Distributed が動いていない
- 1050Ti 1枚、1030 1枚が死亡、敵討ちがすむまで引くに引けない(意味不明)
- のっぴきならない事情がない限り、gen13 Core i5 + 32GBメモリ + 3060(12GB版) + を要検討
- 予算次第では 4070 以上

###### tags:`Stable Diffusion` `20230626` `update`