Open5
Stable Diffusion 覚書き
Stable Diffusionを高速 or 低VRAMでも実行したい人が見るリポジトリや記事
🏃♂ 高速に
↓なんか1番すごそう(語彙
👶 低VRAMでもOK
↓VRAM 2.4Gでも動作するらしい
記事
Stable Diffusion WebUI
すべての大元
それをいろいろなモデルに対してColabで起動するためのレシピ集
ControlNetも対応している
Macで構築する方法
試してないので生成スピードはわからない
Lsmith環境を構築
環境
- Windows 11
- RAM16G
- Ubuntu on WSL with Docker for Desktop
- RTX3070(VRAM8G)
実行
sudo apt update && sudo apt install -y htop nvtop
git clone https://github.com/kazuph/Lsmith.git -b improvement-docker
cd Lsmith
git submodule update --init --recursive
docker compose up --build
ckptやsafetensorsからDiffusers形式に変換
基本的には以下。
実際に試してみる。
# condaのインストール
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
yes | conda create --name work python=3.9
conda activate work
# 変換スクリプトのダウンロード
git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
python tools/convert_diffusers20_original_sd.py ../stable-diffusion-webui/models/Stable-diffusion/SukiyakiMix-fp16.ckpt ~/SukiyakiMix --reference_model CompVis/stable-diffusion-v1-4 --v1
LsmithでTensorRT形式に変換(docker版)
上記の続きとして書く。
version: '3.9'
services:
lsmith:
build:
context: .
dockerfile: ./docker/Dockerfile.lite
ports:
- 8000:8000
volumes:
- ./docker-data/diffusers:/app/diffusers # ←これを追加
- ./docker-data/models:/app/models
- ./docker-data/outputs:/app/outputs
cd Lsmith
mv ~/SukiyakiMix docker-data/diffusers/
起動
docker compose up [--build]
LsmithのUIで Model ID
に直接のパスを書く
/app/diffusers/SukiyakiMix
Windowsのローカル環境の構築
後々詰むのでメモリ割り当てを増やしておく
またlocalhostで接続したい場合の設定も追加。
cat .\.wslconfig
[wsl2]
memory=12GB
swap=10GB
processors=4
localhostForwarding=true
kernel = C:\\Users\\kazuh\\wsl_kernel
Ubuntuにsshできるようにする
sudo apt install openssh-server
mkdir .ssh
chmod 700 .ssh
cd .ssh
wget https://github.com/kazuph.keys -O authorized_keys
chmod 600 authorized_keys
sudo ssh-keygen -A
sudo service ssh restart
Windowsに外部からsshできるようにする
この記事を見ればいけます、がしばらくして接続できなくなりました。
Microsoft Defendedr ファイアウォールというのが自動で塞いだ可能性があり、一度オフにしたら接続できました。その後すぐにオンにしても再接続できてます。謎。
また小技ですが、WSLのIPそのものを指定するとWSLを起動する度に転送設定をやり直さねばなりませんが、そこはlocalhostにしておけばずっと同じで大丈夫です(wslconfigでlocalhostForwardingを設定しているなら)。
netsh interface portproxy add v4tov4 listenaddress=<WindowsのIPアドレス> listenport=22 connectaddress=localhost connectport=22
SSHのポートの変更
Portが22だとWindows自体にOpenSSHを入れている場合に競合しているのか、つながらなくなることが多かったので、ずらしたportにしました。
sudo vi /etc/ssh/sshd_config
# Port XXXXX ← 好きな番号
以下Power Shellの管理権限
# ポートプロキシの設定
netsh interface portproxy add v4tov4 listenaddress=<Windows自体のIP> listenport=XXXX connectaddress=localhost connectport=XXXX
# ファイヤーウォールの設定
netsh advfirewall firewall add rule name="sshd" dir=in action=allow protocol=TCP localport=XXXX
他
wget https://raw.githubusercontent.com/kazuph/dotfiles/master/.gitconfig
M1 MacのGPUで画像生成したい
一番簡単な記事。