いつも画像はChatGPTに頼んでちゃっちゃと生成してもらってるのですが、今日はローカルで実際にモデルを動かして画像生成してみます。メリットはChatGPT4のやり取りを一回分減らせるくらいで他は特になしです。クレジットがChatGPT4より多いChatGPT4oが使える今となってはメリットはほぼ皆無!でもローカルで試すのはやっぱりロマンなのでやってみようと思います。
SD-Turboとは
stabilityai/sdxl-turbo · Hugging Face
[2311.17042] Adversarial Diffusion Distillation
- 2023年11月にstability.aiから発表された論文
- 拡散モデルの生成精度とGANの高速生成を組み合わせたいという思想
- Adversarial Diffusion Distillationという蒸留方法を用いることで、denoiseの効率を上げている
- 具体的には、学習済拡散モデルを教師モデルとし、GANの仕組みを利用して生徒拡散モデルにスコア蒸留している
- このとき生徒モデルの重みも学習済みモデルの重みで初期化する。
さっそく公式デモを試してみる
以前Stable Video Diffusionを試した記事と同じリポジトリのため、手順もほぼ同じ感じです。(Dockerを使用した方法) otama-playground.com
必要なもの
- Docker(インストールしておく)
- NVIDIAのGPU(おそらく実行に必要)
- CUDA(もしかしたら必要)
- コマンドラインが叩けること
作業内容
- dockerイメージを作成する
- コンテナ作成時にデモが自動で実行されるようにします
- コンテナを立ち上げる(デモを実行する)
- Webアプリケーションにアクセスする
1. dockerイメージを作成する
FROM python:3.10.14-bookworm # clone repo WORKDIR /home RUN git clone https://github.com/Stability-AI/generative-models.git . # install requirements RUN pip install --no-cache-dir -r ./requirements/pt2.txt # additional requirements explained in repo RUN pip install streamlit-keyup # Reinstall OpenCV using apt due to an error with libGL.so. RUN apt -y update && apt -y upgrade && apt -y install libopencv-dev # キャッシュ削除 RUN apt-get autoremove -y &&\ apt-get clean &&\ rm -rf /usr/local/src/* # weightのダウンロードと配置 # weight for SDXL-turbo RUN wget https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0.safetensors -P ./checkpoints # weight for SD-turbo RUN wget https://huggingface.co/stabilityai/sd-turbo/resolve/main/sd_turbo.safetensors -P ./checkpoints # Variables ENV PYTHONPATH = . EXPORT 8501 # 起動コマンド CMD ["streamlit", "run", "scripts/demo/turbo.py"]
2. コンテナを立ち上げる
以下のコマンドでコンテナを立ち上げてください
docker run --rm -i -p 8501:8501 --gpus all sdxl-image
3. Webアプリケーションにアクセスする
コンテナの立ち上げまで正常に完了していれば、ブラウザでhttp://localhost:8501
にアクセスすることででデモにアクセスできるはずです。
最後に
あとはModel Versionを好きな方にしてLoad Modelすればvalueを元に推論を始めてくれます。ステップを増やせば精度が良くなります。
自分の環境ではSDXL-Turboのモデル読み込みができませんでした(モデルのロード中に勝手にプロセスがKillされる)。PCスペックが低い方はSD-Turboのみ試すのが良いかと思います。
使用してみた所感としては、
- 蒸留を使用してるモデルなので実行速度は割かし速い印象。低スペックでも数秒で出てくれるのが嬉しい。
- 精度も3,4ステップだけにしては希望に近い結果になってるかなという感想。
[追記: 20240820] 公式デモは一般にメモリ効率などのパフォーマンスが悪いため、ComfyUIやwebuiなどを使用して実行することを推奨します。