こんにちは。初めまして、Gunosy Tech Lab R&D の 森田 (pnnc205j)です。最近好きな牛肉の部位はカメノコです。
今回は、テキストから画像を生成する Stable Diffusion を Windows 10 で動かしてみましたのでご紹介します。 Stable Diffusion はルートヴィヒ・マクシミリアン大学ミュンヘンと Stable.AI の発表した、一般的なPCで動かせるほど軽量でかつ高品質な画像を生成できる画像生成モデルです。
- とりあえず試したい人向け
- 必要環境
- まずは Stable Diffusion の Weight(学習済みモデル)をダウンロード
- CUDA 環境の構築
- Stable Diffusion を git clone(Ubuntu 内で実行)
- conda 環境の構築
- Stable Diffusion を動かすための設定
- 実行
- まとめ
- トラブルシューティング
- 参考
とりあえず試したい人向け
本記事ではローカル環境でじっくり動かしたい方向けの手順を紹介しますが、気軽に試してみたい方は公開されているサービスの利用がおすすめです。
Stable Diffusion - a Hugging Face Space by stabilityai
- ちょっと生成に時間はかかりますが、アカウント登録も不要ですぐに試せます
-
- 手元で気軽に使える GPU 環境がない場合は Colab が便利です
- Google/Hugging Face のアカウントが必要
- 計算精度を float16 に落とすことで、Colab の無料枠の範囲内で動くようになっています
必要環境
- CUDA に対応している GPU、メモリ 10GB 以上を推奨 *2(5〜6GB 程度あればトラブルシューティングにある方法で動作可能)
- PC 本体のメモリが最低で 16GB 以上(16GB だと動かしている間他に何もできないくらい)
まずは Stable Diffusion の Weight(学習済みモデル)をダウンロード
公式モデルを CompVis/stable-diffusion-v1-4 · Hugging Face からダウンロード
- Hugging Face のアカウント登録後、チェックボックスにチェックをいれて、
Access repository
をクリック - 参考までにライセンスは大体このようなことが書いてありますが、正しくは原文を確認してください
- 連絡先が開発者に共有されます
- 違法・有害なコンテンツの作成・配布をしてはいけません
- 生成した画像は自分の責任で自由に使用できます
- https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt をダウンロード(4GB)
- ちょっと時間がかかるので、ダウンロードの間に次へすすみましょう
CUDA 環境の構築
Windows Update で最新版に更新されていることを確認
- Windows 10 Version 21H2 となっていれば大丈夫です (2022/8/23時点)
Official Drivers | NVIDIA から最新のWindows 用 GPU ドライバーをダウンロード & インストール
WSL2(Ubuntu)のインストール (Windows での作業)
Windows 10 で linux を動かすための仕組みである WSL2 を WSL のインストール | Microsoft Docs に従って行います。
- コマンドプロンプトを管理者権限で開く
- スタートメニュー からコマンドプロンプトを探して右クリック→管理者として実行
- コマンドプロンプトに
wsl --install
と入力して、実行 - 続けて念のため
wsl --update
も実行しておきます wsl --install -d Ubuntu-20.04
で Ubuntu をインストール- 別ウインドウが開くので、Ubuntu 上でのユーザ名とパスワードを登録
- 閉じてしまった時はコマンドプロンプトで
wsl -d Ubuntu-20.04
とするか、スタートメニューに追加されている Ubuntu-20.04 on windows をクリック
wsl cat /proc/version
でカーネルのバージョンを確認Linux version 5.10.43.3 ...-microsoft-standard-WSL2
以上となっていることを確認します- もし
version 4...
となっている場合は WSL1 から WSL2 への アップデート が必要です
CUDA のインストール(Ubuntu での作業)
Enable NVIDIA CUDA on WSL 2 | Microsoft Docs に従って Ubuntu 内で cuda-tool-kit をインストールします
Ubuntu のパッケージは古いので、nVIDIA で提供されているパッケージを使えるようにします
古い GPG キーを削除します
sudo apt-key del 7fa2af80
nVIDIA のリポジトリを登録
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
GPG キー がインストールされていないとメッセージがでるので、指示に従ってコピーしておきます
sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-B81839D3-keyring.gpg /usr/share/keyrings/
CUDA のインストール
sudo apt update sudo apt install cuda
- Ubuntu 側では GPU のドライバーをインストールしてはいけないので注意
Stable Diffusion を git clone(Ubuntu 内で実行)
GitHub - CompVis/stable-diffusion からソースコードをコピーします
以下のコマンドを実行(説明の都合上 home ディレクトリに置いておきます。他の所に置く場合は適宜読み替えてください。)
cd ~/ git clone https://github.com/CompVis/stable-diffusion.git
- git がインストールされていなければ
sudo apt install git
でインストールしておく - zip でダウンロードして展開するのでもよい
- git がインストールされていなければ
conda 環境の構築
conda のインストール
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh bash Miniconda3-py38_4.12.0-Linux-x86_64.sh
- インストールは画面の指示に従う。yes/no はすべて yes でOK
設定を有効にするため、シェルを再起動
bash
必要パッケージのインストール
cd ~/stable-diffusion conda env create -f environment.yaml conda activate ldm
Stable Diffusion を動かすための設定
ダウンロードしておいた Weight をコピーします
cd ~/stable-diffusion/models/ldm/ mkdir stable-diffusion-v1 cd stable-diffusion-v1 explorer.exe .
explorer.exe .
コマンドでエクスプローラが開くので、先程ダウンロードしたsd-v1-4.ckpt
をこのディレクトリにコピーした後で、以下のようにリネームします。mv sd-v1-4.ckpt model.ckpt
実行
cd ~/stable-diffusion/ python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms --outdir outputs
prompt
に渡したテキストをもとに画像が生成されますoutputs
ディレクトリに生成された画像が保存されます- その他のオプション
--n_samples N_SAMPLES
一度にN_SAMPLES
個の画像を生成するようになります(その分使用メモリも増加します)--H H
生成する画像の縦のピクセル数。8の倍数を指定する必要があります--W W
生成する画像の横のピクセル数。8の倍数を指定する必要があります--seed SEED
画像を生成する乱数のシードを指定します
まとめ
うまく画像の生成までたどり着くことができたでしょうか。私は昔WSLを使っていたせいで、古い設定が残っていたのでどっぷりと沼りました。 思ったような画像を作るのはなかなか難しいですが、今回の挿絵のようなどんな画像が出てくるか想像がつかないテキストでも綺麗な画像がでてきたりするので、 ついつい延々といろいろなテキストで画像生成を試したくなります。
今、画像生成の分野は非常に熱が高まっていて、これからも新しいモデルやサービスがどんどん出てきます。今後も新しいモデルや中身の深い技術の話などしていけたらと思いますので、ぜひ今後ともご覧いただけると幸いです。
トラブルシューティング
CUDA がないと言われる
- WSL のバージョンが古いことが原因の可能性が高いです
- Windows 側の確認項目
/Windows/System32/lxss/lib/
にlibcuda.so
があるか?- なければ GPU のドライバをもう一度最新版をインストールしなおしてみてください
- タスクマネージャーから、パフォーマンス> CPU のタブを開き、仮想化が有効になっているか?
- 有効でない場合は、BIOS/UEFI で仮想化を有効にして、「Windows の機能の有効化または無効化」から仮想マシンプラットフォームにチェックをいれる
- Ubuntu 側の確認項目
/usr/lib/wsl/lib/
にlibcuda.so
があるか?- WSL のバージョンが 2 であることを確認する
- WSL のカーネルバージョンが
Linux version 5.10.43.3 ...-microsoft-standard-WSL2
以上であることを確認 - CUDA 有効化前に
conda env create
をした場合は念の為に、一度環境を削除conda env remove -n ldm
してからconda env create
の所からやり直しましょう
GPUのメモリが足りない
- GitHub - CompVis/stable-diffusion の代わりに GitHub - basujindal/stable-diffusion を使うと5~6GB のGPUメモリがあれば動作するようになります
とにかく重すぎる
- メモリ不足なので、他のアプリケーションを閉じるなどしてメモリを空けてください
参考
mac で動かす場合
Colab の分かりやすい使い方
プロンプトと生成画像の例
*1:プロンプト: Screenshot of running Stable Diffusion on Windows 10, cinematic lighting, 4k
*2:8/25 現在 GeForce RTX 2060 12GB が4万円〜の価格で購入可能
*3:プロンプト: building CUDA environment, cinematic lighting, 4k
*4:プロンプト: git clone, cinematic lighting, unreal engine 5, 4k
*5:プロンプト: building conda environment, cinematic lighting, 4k
*6:プロンプト: Congratulations!! party popper, cinematic lighting, 4k