Closed11

Stable DiffusionをDockerで動かす

choshicurechoshicure

wslにcudaをインストール

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local
にある通りにコマンド実行

> 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を再起動

choshicurechoshicure

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
choshicurechoshicure

イメージのビルド&起動

> docker-compose up --build
shibacowshibacow

typoのようです。

docker-compsoe up --build

docker-compose up --build

shibacowshibacow

修正ありがとうございます。この記事のお陰で、Stable DiffusionをDockerで動かすことができました。ありがとうございました。

choshicurechoshicure

画像の生成

コンテナの中に入り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フォルダに画像が保存されている

choshicurechoshicure

フォルダ構造

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にクローズされました