見出し画像

ControlNet v1.1 を CPU で動かす方法(第二版)

その後の試行錯誤の結果、ライブラリを書き換えなくても良い方法が分かったのでご報告です。

早速ですが次の 12のステップを実行してください。(自分は debian で jupyter Notebook と VSCode を使いました)。 

0.あらかじめリポジトリをクローンし、ControlNet-v1-1-nightly フォルダ         に移動しておいてください。

1.次のコマンドを実行し CPU 用の torch をインストールしてください。

!pip install torch torchvision --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() に置換する。(エディタを使ってください)。
    .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 の使用をお勧めします。 損害が生じても責任はとれません。。
※ライブラリを書き換えないので docker を使わなくても大丈夫です。。

これが正しい方法なのかわからないのですが、自分の環境ではこれでうまく動いています。1枚描くのに 10~20分ぐらいかかりますけど。

それでは良き AI ライフを! 

この記事が気に入ったらサポートをしてみませんか?