Closed11
Stable DiffusionをDockerで動かす
環境
OS: Windows10 Pro
メモリ: 32GB
CPU: Intel Core i7-7700
GPU: NVIDIA GeForce GTX 1060 6GB
参考にした記事
wslにcudaをインストール
にある通りにコマンド実行
> wsl # wslを起動してshellにはいる
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
$ sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda
インストール後は念のためDocker Desktopを再起動
学習モデルのダウンロード
https://huggingface.co/ でアカウントを作成後 git clone
> git clone https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
sd-v1-4.ckpt
をmodel.ckpt
にリネーム
Dockerfileとdocker-compose.ymlの作成
VRAMが少ないので今回はフォークされたリポジトリを使用
Dockerfile
FROM nvcr.io/nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo
RUN apt-get update && apt-get install -y wget git git-lfs libglib2.0-0 libsm6 libxrender1 libxext-dev
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
sh Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3 && \
rm -r Miniconda3-latest-Linux-x86_64.sh
ENV PATH /opt/miniconda3/bin:$PATH
# VRAM多い人向け(オリジナル)
# RUN git clone https://github.com/CompVis/stable-diffusion && \
# cd stable-diffusion && \
# conda init bash && \
# conda env create -f environment.yaml && \
# echo "conda activate ldm" >> ~/.bashrc
# フォーク版
RUN git clone https://github.com/basujindal/stable-diffusion.git && \
cd stable-diffusion && \
conda init bash && \
conda env create -f environment.yaml && \
echo "conda activate ldm" >> ~/.bashrc
docker-compose.yml
version: '3'
services:
app:
build: .
working_dir: /stable-diffusion
tty: true
volumes:
- ./stable-diffusion-v-1-4-original/:/stable-diffusion/models/ldm/stable-diffusion-v1/
- ./outputs:/stable-diffusion/outputs
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
生成された画像保存用にoutputs
フォルダを作成
> md outputs
イメージのビルド&起動
> docker-compose up --build
typoのようです。
docker-compsoe up --build
↓
docker-compose up --build
ありがとうございます!
修正しました
修正ありがとうございます。この記事のお陰で、Stable DiffusionをDockerで動かすことができました。ありがとうございました。
画像の生成
コンテナの中に入りtxt2img.py
を実行して画像を生成
cloneしたリポジトリによってコマンドが異なるので注意
> docker-compose exec app bash
オリジナルの場合
$ python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms
フォークの場合
$ python optimizedSD/optimized_txt2img.py --prompt "a photograph of an astronaut riding a horse" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 10 --ddim_steps 50
実行が終わるとoutputs
フォルダに画像が保存されている
フォルダ構造
stable-diffusion-docker
│ docker-compose.yml
│ Dockerfile
│
├─outputs
│
└─stable-diffusion-v-1-4-original
.gitattributes
model.ckpt
README.md
v1-variants-scores.jpg
このスクラップは2022/08/24にクローズされました