この記事は「mofmof Advent Calendar 2023」6日目の記事です。
昨年のアドベントカレンダーではM1 MacBook Proを使った環境構築の方法を書きました。
今年になって環境が結構変わったので、そのあたりの話をしていこうと思います。
前提
必要なもの
- そこそこ早いCPU
- 出来るだけグラフィックメモリーが多いGPU(NVIDIA推奨)
- そこそこのメモリ
- そこそこのデータドライブ
- WSL 2(Windowsの場合)
- Docker
- Git
実際に使ってる環境
Windows
- CPU:AMD Ryzen 9 5950X
- GPU:NVIDIA GeForce RTX 3080 Ti(12GB)
- メモリ:64GB
Mac
昨年と変わらずM1 Max MacBook Pro。
環境構築
今回の環境構築にはDockerを使用します。
昨年はPythonを直接マシンにインストールして構築しましたが、Docker上に作ることができたので、流れ等をまとめます。
直接Pythonを入れるのもよいのですが、プロジェクトごとにバージョンを切り替えたりするのにDockerのような仮想化を行っている方が扱いやすいです。
以降、特に断りがない限り、Windows、Macどちらも同じ作業が必要になります。
まずは全体の流れです。
- WSL 2の設定(Windowsのみ)
- Dockerの環境構築
- Stable Diffusion Web UI Dockerの設定
1つずつ見ていきます。
WSL 2の設定(Windowsのみ)
WindowsでDockerを動かすので、WSL 2をセットアップする必要があります。
PowerShellまたはコマンドプロンプトを管理者モードで開き、以下のコマンドを実行すればOKです。
wsl --install
Dockerの環境構築
続いてDockerです。Docker Desktopを使います。
ページを開いてダウンロード、インストールしましょう。
ちょっと設定を変えます(Windowsの場合)
インストール出来たら起動します。
設定を開いて、「Use the WSL 2 based engine」にチェックが付いてる確認します。付いてなかったら付けましょう。
続いて、.wslconfig
を編集します。
C:\Users\<UserName>\.wslconfig
を開きます。
私の設定を置いておきます。
[wsl2]
memory=16GB
swap=0
memory
は全体の半分か8GBの小さい方の値が初期値になっています。
もし私のように多めのメモリを搭載しているのであれば、ここの値を16GB以上に変更するのをおすすめします。
Macについても同様です。メモリに余裕があるなら増やした方が良いかと思います。
swap
については、Cドライブに何を使っているかなどで異なります。私はSSDを使っているのもあり、あまりswapしてほしくないなということで0に設定しています。
下準備は以上です。
Stable Diffusion Web UI Dockerの設定
それでは本題に入ります。
昨年はStable DiffusionをCLIから利用していましたが、今時はAUTOMATIC1111のWeb UIを使うのがスタンダードだと思います。
これをDockerで動かすようにしたものが今回使うStable Diffusion WebUI Dockerです。
git clone
して使います。
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
また、Windowsの場合はGPUを使って画像を生成したいので、CUDA Toolkitをインストールします。
あとは以下のコマンドを実行することでWeb UIが起動します。
docker compose --profile download up --build
docker compose --profile auto up --build
Macの場合は、auto
では動きません。auto-cpu
を起動します。
docker compose --profile download up --build
docker compose --profile auto-cpu up --build
おそらく、GPU周りの問題だと思います。
起動出来たら http://localhost:7860/ にアクセスします。
もし、起動しなかったらマシンを再起動してみてください。
ここまで来ればあとは、プロンプト(呪文)を入力して生成するだけです。
おわりに
設定が終わればこのような画面が表示されます。是非いろいろ生成してみてください。
画面では、いつも使っている「a photograph of an astronaut riding a horse in desert」をプロンプトに入れて生成してみました。
実は拡張機能をいろいろ入れているので、少しUIが異なるかもしれません。そのあたりはまた別の機会に紹介できたらと思います。
それでは良い画像生成ライフを!
おまけ
モデルについて
Stable Diffusionに標準で使われているモデルは正直イマイチなので、出したい絵に合わせて適切なものを選ぶ必要があります。
モデルはCivitaiというサイトにまとまりつつあります。
基本英語ですが、検索機能を使って出したい絵のイメージに合ったモデルを探せます。
ちなみに、日本人を含むアジア系の人物を出すならBeautiful Realistic Asians (BRA)というモデルが有名ですね。
ダウンロードからsafetensors
ファイルをダウンロードして、Stable Diffusion Web UI Dockerが読み込む場所に配置する必要があります。
Dockerのコンテナを起動した状態でDocker Desktopを使って/data/models/Stable-diffusion
にダウンロードしたモデルのファイルをドラッグアンドドロップすればOKです。
あとは、Stable Diffusion Web UIの画面からモデルを再読み込みします。