Open8
Stable DiffusionのためのUbuntu環境構築をしてみる
マシンスペック
OS: Ubuntu 22.04 LTS
CPU: Ryzen 9 5900x 12-core processor x 24
GPU: 3060 Ti (VRAM 8GB)
Memory 32GB
Python環境構築
Pythonはもう長らく触れていないので環境構築もすっかり忘れたが、とりあえず次の記事通りセットアップした。
# ツール類のインストール
sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev
# ダウンロードしたPythonを解凍
tar xJf Python-3.10.6.tar.xz
cd Python-3.10.6
./configure
make
sudo make install
CUDA環境構築
ここがややこしい。
GPUで推論するためにPythonのコードを次のように変えたところ、
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token="YOUR_TOKEN")
pipe.to("cuda")
以下のようなエラーが表示された。
NVIDIA GeForce RTX 3060 Ti with CUDA capability sm_86 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70.
If you want to use the NVIDIA GeForce RTX 3060 Ti GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/
Ubuntu 22.04にはデフォルトでCUDA11.7がインストールされていたが、PyTorchの公式にはCUDA 11.6までの表記しかないため、それが原因だと考えた。
ただ、おそらくUbuntu 22.04にはCUDA11.6をインストールすることができない(公式で20.04までのものしか提供されていない)ため、Ubuntuのバージョンを20.04に落とす必要が出てきた。→20.04に落とした。
基本は↓のドキュメント通りだが、cudaをインストールする時にバージョンを指定してやらないと最新版がインストールされてしまう。
sudo apt install cuda-11-6
cuDNNのインストールは次のドキュメントに従う。
sudo apt install zlib1g
やったぜ。
❯ python
Python 3.10.6 (main, Aug 24 2022, 05:52:29) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
CUDAのメモリエラーが出たため、こちらの軽量版?をクローンして実行したところ画像が生成できた。
RTX 3060 Tiだと--n_samples 2
が限界な気がする。
本家のリポジトリはこちら。
また、学習済みモデルは以下からダウンロードできる。
この記事が参考になった。