ConoHa VPSでStable Diffusionを使う

こんにちは、GMOインターネットグループ株式会社の長谷川です。
今回はConoHa VPSでのStable Diffusionの環境構築に関してお話して行こうと思います。

Stable Diffusionとは

簡単に説明するとユーザー指定のキーワードから画像を描画するOSSの描画AIです。
2022/08/22にオープンソース化されました。
また、モデルの配布に関しては、商用および非商用の使用を許可されています。

https://github.com/CompVis/stable-diffusion

今回目指す部分

今回目指す部分としては以下2点あります。

  • ConoHa VPSでのStable Diffusionの稼働(GPUなしの状態での稼働)
  • Dockerコンテナとしての稼働

(後述で紹介するリポジトリは現在も開発が続いており、場合によっては稼働させるために手順の修正が必要になる可能性があります。2022/09/01現在での動作を確認していますのでご了承ください。)

ConoHa VPSでの稼働に関して

通常Stable DiffusionはGPUを使用しますが、ConoHa VPSで稼働させたいのでCPUのみで稼働をさせます。
よって、Intel CPUなどを使用してDeepLearningやAIのアクセラレータ技術を提供出来るツールキットのOpenVINO を使います。

【 VPSの用意 】

https://www.conoha.jp/

上記からVPSを選択します。
スペックとしては最低限16GBが良いと思われます。
Dockerを使って構築していくので イメージタイプ – アプリケーションタブ – Docker を選択します。
上記のイメージタイプを使うと初期段階からDockerとdocker-composeが使えます。

ConoHa コントロール

【Dockerfileの準備】

まずDockerfileとdocker-compose.yamlを配置するディレクトリを作成します。

mkdir stable_diffusion
cd stable_diffusion/
vim Dockerfile
vim docker-compose.yaml

次はDockerfileを書いていきます。
ベースイメージにはUbuntu 20.04を使います。
pyenv等を使用してPython環境と必要になるリポジトリをイメージ内に内包させます。
今回CPUのみでStable Diffusionを稼働させるためOpenVINO対応の以下リポジトリを使用します。
https://github.com/bes-dev/stable_diffusion.openvino

FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev \
    libreadline-dev libsqlite3-dev libopencv-dev tk-dev openssl git curl
RUN git clone https://github.com/pyenv/pyenv.git /root/.pyenv
ENV HOME /root
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/bin:$PATH
RUN export PYENV_ROOT="$HOME/.pyenv"
RUN export PATH="$PYENV_ROOT/bin:$PATH"
RUN eval "$(pyenv init -)"
RUN git clone https://github.com/pyenv/pyenv-virtualenv.git  $(pyenv root)/plugins/pyenv-virtualenv
RUN eval "$(pyenv virtualenv-init -)"
RUN export PYENV_VIRTUALENV_DISABLE_PROMPT=1
RUN pyenv -v
RUN pyenv install 3.8.12
RUN pyenv global 3.8.12 && pyenv virtualenv 3.8.12 sd && pyenv global 3.8.12/envs/sd 
RUN apt install -y python3-pip
RUN python3 -m pip install --upgrade pip
RUN git clone https://github.com/bes-dev/stable_diffusion.openvino
RUN cd stable_diffusion.openvino/ && pip install -r requirements.txt

【docker-compose.yamlの準備】

docker-compose.yamlを書いていきます。
streamlit run demo_web.py で port 8501が起動するのでdocker-composeで設定します。

version: "3.3"
services:
  ubuntu:
    build:
      context: .
      dockerfile: ./Dockerfile
    container_name: stable_diffusion
    command: /bin/bash -c "cd stable_diffusion.openvino/ && streamlit run demo_web.py"
    ports:
      - 8501:8501
    tty: true

【イメージビルド&起動】

buildには5-10分程度かかります。
upさせてから以下にアクセスします。

http://<VPS_IP>:8501/

完全に起動するまでは10分程度かかります

docker-compose build
docker-compose up -d

ブラウザから画面を確認するとテキスト入力欄があるので、早速画像生成していきましょう!!
今回のテーマは “data center engineer” でいきます。
(num_inference_steps:32で大体5分程度かかります。)

これは完全にデータセンターの雰囲気そのままの画像ですね、よくできています。

おわりに

ConoHa VPSとstable diffusionで描画AIいかがでしたでしょうか?
ConoHa VPSでは他にも様々な機能が使えますので、ご活用ください。

ブログの著者欄

長谷川 泰斗

GMOインターネットグループ株式会社

2020年 GMOインターネットグループ株式会社 新卒入社
クラウド基盤エンジニア
お名前.com KVM, ConoHa VPS等の開発運用に従事

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW