ControlNet v1.1 を Docker (CPU) で動かす方法
早速ですが次の 12のステップを実行してください。(自分は docker で jupyter Notebook と VSCode を使いました)。
0.あらかじめリポジトリをクローンし、ControlNet-v1-1-nightly フォルダ に移動しておいてください。
1.次のコマンドを実行し CPU 用の torch をインストールしてください。
!pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
2.ControlNet-v1-1-nightly/ldm/models/diffusuion/ddpm.py の 20 行目の
from pytorch_lightning.utilities.distributed import rank_zero_only を
from pytorch_lightning.utilities import rank_zero_only に修正。
3.ControlNet-v1-1-nightly 以下のすべてのファイルに対し、
'cuda' を 'cpu' に置換する。(エディタを使ってください)。
4.同様に ControlNet-v1-1-nightly 以下のすべてのファイルに対し、
"cuda" を 'cpu' に置換する。(エディタを使ってください)。
5.同様にControlNet-v1-1-nightly 以下のすべてのファイルに対し、
.cuda() を .cpu() に置換する。(エディタを使ってください)。
6.~/.local/lib/python3.9/site-packages/torch/serialization.py の 144行目、
return 'cuda:' + str(obj.device.index) とあるところを
return 'cpu' #'cuda:' + str(obj.device.index) と修正する。
7.同様に~/.local/lib/python3.9/site-packages/torch/serialization.py の 181 行目、def _cuda_deserialize(obj, location): とある行の下に以下の行を追 加してください。
return obj.cpu()
8.次の内容をエディタで ControlNet-v1-1-nightly のフォルダに保存して ください。ファイル名は controlnet-v11-requirements.txt としてくださ い。
ーーーここからーーーーーーーーーーーーーーーーーーー
numpy
gradio
albumentations
opencv-contrib-python
imageio
imageio-ffmpeg
pytorch-lightning
omegaconf
test-tube
streamlit
einops
transformers
webdataset
kornia
open_clip_torch
invisible-watermark
streamlit-drawable-canvas
timm
addict
yapf
prettytable
safetensors
basicsr
fvcore
pycocotools
wandb
ーーーここまでーーーーーーーーーーーーーーーーー
9.次のコマンドを実行し必要なファイルをインストールしてください。
!pip install -r control-v11-requirements.txt
10.モデルを配置してください。
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth -O models/control_v11f1p_sd15_depth.pth
!wget https://huggingface.co/lllyasviel/ControlNet-v1-1/raw/main/control_v11f1p_sd15_depth.yaml -O models/control_v11f1p_sd15_depth.yaml
!wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt -O models/v1-5-pruned.ckpt
11.次のコマンドを実行し、ブラウザで http://127.0.0.1:7860 にアクセス してください。ControlNet v1.1 の画面が表示されればOKです。
!python gradio_depth.py
以上になります。
jupyter notebook と controlnet-v11-requirements.txt を公開しています。
https://drive.google.com/drive/folders/1XZkaRNH0h025FHuCDenAuuWaxvC5bP9w?usp=share_link
python のライブラリを書き換えるので、慎重に作業してください。ほかに作業をする PC や大切なデータが保管されている PC では実行しないでください。Docker の使用をお勧めします。損害が生じても責任はとれません。。
これが正しい方法なのかわからないのですが、自分の環境ではこれでうまく動いています。1枚描くのに 10~20分ぐらいかかりますけど。
それでは良き AI ライフを!