Stable Diffusionをローカルで動かす

hakase
hakase

注意事項だが、私はAIの専門家では無い。ゲーマーだ

公式の情報やネットで集めた情報を元に雰囲気で設定したので、参考程度にして欲しい

私のPCの環境について説明しておく

OS Windows 10 Home Edition
CPU Intel(R) Core(TM) i9-9900 CPU @ 3.10GHz 3.10 GHz
メモリ 32.0 GB
GPU(グラボ) NVIDIA GeForce RTX 3060 Ti 8GB
HDD 2.72TB ※ゲーム等が入っている
SSD1 237GB ※OS等が入っている
SSD2 929GB ※ゲーム等が入っている
neko
neko

HDDかつかつですね

hakase
hakase

Eドライブが空いているのでそこに環境を作る

私のPCにインストール済みだったソフトウェアについて書く

ただ、これについては記憶が曖昧だ

過去にCudaをインストールしていたかもしれないがそのような痕跡は見当たらない

Python 3.8.5
git version 2.22.0.windows.1

neko
neko

それだけなんですね

hakase
hakase

これから手順を説明するが、すべてPowerShellを使って進める

管理者として実行しておいた方が良いと思う

まずリポジトリのクローンを作成する

cd e:\ # インストールしたいディレクトリ
git clone https://github.com/CompVis/stable-diffusion.git
neko
neko

始まりましたね

hakase
hakase

condaというパッケージ管理ソフトを使用しているらしいのでインストールする

非営利目的の場合は無料で使えるぞ

詳しくは公式をチェックだ

neko
neko

Anaconda3-2022.05-Windows-x86_64.exeを

ダウンロードしたんですね

hakase
hakase

ダウンロード後はデフォルトの設定のままインストールを完了した

その後、環境変数のPATHに3つのディレクトリを追加

C:\Users\<USER>\anaconda3
C:\Users\<USER>\anaconda3\Scripts
C:\Users\<USER>\anaconda3\Library\bin

PATHを追加したらPowerShellを再起動

neko
neko

<USER>の所は書き換えてくださいね

hakase
hakase

あとはパッケージをインストールする

cd .\stable-diffusion\  # cloneしたgitのディレクトリへ移動
conda env create -f environment.yaml # ちょっと時間かかる
conda activate ldm # 必要なパッケージのインストール
neko
neko

ここまで順調ですね

hakase
hakase

次にモデルをダウンロードする。補足すると、これはAIの脳的なものだ

まずはHugging Faceにサインアップして欲しい

neko
neko

🤗

hakase
hakase

そしてモデルのクローンを作成する。。。が

ここでエラーが出た

cd e:\ # 移動
git clone https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/
(base) PS E:\> git clone https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/
Cloning into 'stable-diffusion-v-1-4-original'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 26 (delta 6), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (26/26), done.
Encountered 1 file(s) that may not have been copied correctly on Windows:
        sd-v1-4.ckpt

See: `git lfs help smudge` for more details.
neko
neko

困りましたね

hakase
hakase

ファイルサイズが大きいらしいので、lfsオプションをつけて再度実行する

git lfs clone https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/
neko
neko

うまく行きましたね

hakase
hakase

クローンしたモデルを設置する為にディレクトリを作成し、その後移動する

mkdir -p .\stable-diffusion\models\ldm\stable-diffusion-v1\
mv .\stable-diffusion-v-1-4-original\sd-v1-4.ckpt .\stable-diffusion\models\ldm\stable-diffusion-v1\model.ckpt
neko
neko

リンクを貼らないんですね

hakase
hakase

準備完了、セットアップした環境を使いコマンドを実行

ここでエラーが出た

cd .\stable-diffusion\
conda activate ldm
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms 


<#
RuntimeError: CUDA out of memory. Tried to allocate 3.00 GiB (GPU 0; 8.00 GiB total capacity; 5.62 GiB already allocated; 0 bytes free; 5.74 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
#>
neko
neko

GPUのメモリが足りないんですね

hakase
hakase

ここで@kyorai_さんの素晴らしい記事に出会った

neko
neko

感謝します

hakase
hakase

低メモリな環境に最適化されたリポジトリを取得し、モデルをセットする

cd e:\
git clone https://github.com/basujindal/stable-diffusion  stable-diffusion_b #名前が被るのでリネーム
mkdir -p .\stable-diffusion_b\stable-diffusion\models\ldm\stable-diffusion-v1\ # ディレクトリ作成
mv .\stable-diffusion\models\ldm\stable-diffusion-v1\model.ckpt .\stable-diffusion_b\models\ldm\stable-diffusion-v1\model.ckpt # モデルを移動
neko
neko

いよいよですね

hakase
hakase

最初に作ったAnacondaの環境を削除し、環境を再構築する

conda remove -n ldm --all # 環境を削除
cd .\stable-diffusion_b\
conda env create -f environment.yaml # 環境構築
conda activate ldm # 環境を切り替え
neko
neko

長い戦いでしたね

hakase
hakase

さぁ、ではコマンドを実行してみよう

画像が20個作成されたぞ

python optimizedSD/optimized_txt2img.py --prompt "Cyberpunk style image of a Telsa car reflection in rain" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 10 --ddim_steps 50
neko
neko

8分くらいかかりましたね

hakase
hakase

長い道のりだったが、ゲーマーにも手が届く範囲にAIが近づいているのを実感できるよい機会だった。専門家ではないので、解答できる事には限界があると思うが、なにか間違いや気になる事があればTwitterで相談して欲しい

速度をもう少し早くしたいが今は調べる気力がない

続報があればまた追記する

neko
neko

ちなみに、私達はMidjournyさんに描いていただきました

タイトルとURLをコピーしました