LoginSignup
2

Stable Diffusionをローカルで動かす【2023年12月版】

Posted at

この記事は「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どちらも同じ作業が必要になります。

まずは全体の流れです。

  1. WSL 2の設定(Windowsのみ)
  2. Dockerの環境構築
  3. Stable Diffusion Web UI Dockerの設定

1つずつ見ていきます。

WSL 2の設定(Windowsのみ)

WindowsでDockerを動かすので、WSL 2をセットアップする必要があります。

PowerShellまたはコマンドプロンプトを管理者モードで開き、以下のコマンドを実行すればOKです。

wsl --install

Dockerの環境構築

続いてDockerです。Docker Desktopを使います。

ページを開いてダウンロード、インストールしましょう。

ちょっと設定を変えます(Windowsの場合)

インストール出来たら起動します。 

image.png

設定を開いて、「Use the WSL 2 based engine」にチェックが付いてる確認します。付いてなかったら付けましょう。

続いて、.wslconfigを編集します。

C:\Users\<UserName>\.wslconfigを開きます。

私の設定を置いておきます。

.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をインストールします。

image.png

image.png

あとは以下のコマンドを実行することで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/ にアクセスします。

もし、起動しなかったらマシンを再起動してみてください。

ここまで来ればあとは、プロンプト(呪文)を入力して生成するだけです。

おわりに

image.png

設定が終わればこのような画面が表示されます。是非いろいろ生成してみてください。

画面では、いつも使っている「a photograph of an astronaut riding a horse in desert」をプロンプトに入れて生成してみました。

実は拡張機能をいろいろ入れているので、少しUIが異なるかもしれません。そのあたりはまた別の機会に紹介できたらと思います。

それでは良い画像生成ライフを!

おまけ

モデルについて

Stable Diffusionに標準で使われているモデルは正直イマイチなので、出したい絵に合わせて適切なものを選ぶ必要があります。

モデルはCivitaiというサイトにまとまりつつあります。

image.png

基本英語ですが、検索機能を使って出したい絵のイメージに合ったモデルを探せます。

ちなみに、日本人を含むアジア系の人物を出すならBeautiful Realistic Asians (BRA)というモデルが有名ですね。

image.png

ダウンロードからsafetensorsファイルをダウンロードして、Stable Diffusion Web UI Dockerが読み込む場所に配置する必要があります。

Dockerのコンテナを起動した状態でDocker Desktopを使って/data/models/Stable-diffusionにダウンロードしたモデルのファイルをドラッグアンドドロップすればOKです。

image.png

あとは、Stable Diffusion Web UIの画面からモデルを再読み込みします。

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
2