815 words
4 minutes
Windows の Docker で Stable Diffusionを動作させる
Stable Dffusion Web UI 1111版の導入方法(GTX1650, 1660系列可)
こちらの記事ではStable Dffusion Web UI 1111版の導入について記述しています。 前回同様GTX1650, GTX1660などの16xx系列のGPUを搭載しているPCでも使用可能なツールです。 必要な設定などについては記事後半に記載していますのでサクッと解説していきます。
Stable Dffusion Web UI 1111版の導入方法(GTX1650, 1660系列可) favicon banilog.com
Stable Dffusion Web UI 1111版の導入方法(GTX1650, 1660系列可)

ちょっとゲームを作成してみたいと前々から思っていたが、絵が描けないことがネックになっていた。ネットサーフィン(死後)をしていると、GTX1660sでもStabledifusionを動かす方法があったので、それを試してラフテルを目指す。

加えてただでさえwindows環境なので環境破壊をあまりしたくないと思っていたところ、Dockerを使って環境構築できるリポジトリを見つけたのでそれをもとに進めていった。 https://github.com/AbdBarho/stable-diffusion-webui-docker

問題その1 謎にkilledされる#

Githubのセットアップ方法をもとに進めていくと、急にkilledされてしまった。 最初はコンテナにGPUが割り当てられていないことを疑ったりしていたが、Dockerを動かしているWSLに割り当てているメモリ量が4GBだったことが原因だった。 これを10GBに変更し、swap領域も20GBほど割り当てたところ、この件は解消した。

ここを参考にして設定した。

問題その2 モデルがloadできない#

これも最初、モデルが存在していないからこのエラーが発生していると思ったが、私の使っているGTX 1660Superというグラボではメモリ不足のためモデルがloadできなかった。 そのため以下を参考にして1660sでも動作するように設定を変更したところ、無事StableDiffusion Web UIが動作するようになった。

エラー文はこんな感じだった webui-docker-auto-1 | RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)

この2つを参考にした。 上の方が設定の変更箇所で、下の方が設定の内容とした

最終的にstable-diffusion-webui-docker/docker-compose.ymlのautoのservidceが以下のようになった

services:
auto: &automatic
environment:
- CLI_ARGS=--precision full --no-half --opt-split-attention --allow-code --medvram --xformers --enable-insecure-extension-access --api

余談#

これでAI絵師をいつでも名乗れるようになった。(構築しただけで名乗れるのか…) 使っていくうちに、upscaleを使用するとかなり解像度がよくなることがわかった。 これからはブログのアイコンや挿絵にAI絵を使ってみたい。

StableDiffusionに出会うのがもう少し早ければ、FPGAで高速で動作させる研究をしてたかもしれない。

作った画像#

まだ触りの状態だけど今のところの最高傑作がこちら かわいいね 最初は指が6本になってたけど、同じ画像を生成しつつ指の数を治す方法も発見できた(seed値を固定してモデルのstep数を増やすと改善される) 案外奥が深くて大変だけど、生成されるイラストに癒されるのでプラマイ0

Windows の Docker で Stable Diffusionを動作させる
https://szeleta.netlify.app/posts/diary/2023/12/2023-12-28thu/
Author
七レ夕
Published at
2023-12-28
License
CC BY-NC-SA 4.0