search
LoginSignup
4

posted at

updated at

ROCm で Stable Diffusion 動きます(Stable Diffuson 2.0 も動くよ)

ふえぇ... AMD GPU で Stable diffusion 計算代行してがっぽがっぽしたいよぉ...

情報

環境

  • Ubuntu 22.04(20.04 推奨)
  • RX6800(RDNA2) 16GB
  • Docker で ROCm 実行

手元ですぐに試せる環境が Ubuntu 22.04 のみで, 22.04 は ROCm 正式対応していないため,

を参考にして無理やりインストールしました!
(20.04 環境がある方は 20.04 使ったほうがいいです)

ROCm pytorch

オフィシャル? からだと ROCm 5.1.1 なのと, セットアップ容易 + ROCm 最新 5.2.3 を使うため docker を使います.

から適したのを取得します.

執筆時点では rocm/pytorch:rocm5.2.3_ubuntu20.04_py3.7_pytorch_1.12.1 が最適でした.

実行

ROCm(amdgpu)自体, Ubuntu 20.04 以降であれば video group(render も?) があれば usespace で動かせます.
(このあたり細かいところのセキュリティはディストリビューションによると思われる)

また, 最近では sudo などつけなくても user space で docker 動かし GPU アクセスできます.

ROCm 使うには /dev/kfd, /dev/dri が見えている必要があるため, --device でコンテナ内で見れるようにします.

--security-opt seccomp=unconfined は無くても大丈夫そう.
(ROCm で Stable diffusion 計算代行など, GPU 計算をインターネット越しで提供する場合は適切に設定するのが推奨と思われる: https://www.creationline.com/lab/46861)

--privileged(特権モード)は deprecated になったようでつけなくてよいです.

--group-addvideo group にユーザを追加しないといけません.

docker run --name pytorch_rocm -it --rm --device=/dev/kfd --device=/dev/dri --group-add video rocm/pytorch:rocm5.2.3_ubuntu20.04_py3.7_pytorch_1.12.1

で Docker 起動し,

import torch
torch.cuda.is_available()

で pytorch の import と, cuda(ROCm GPU)使えるか確認しておきます.

あとは

あたりを参考にして動かせばいけます!

Screenshot from 2022-09-01 22-30-20.png

Voila!
(X11 とか volume 共有していなかったのでとりあえず imcat https://github.com/stolk/imcat で terminal で表示)

実行時間は推論だからか reddit にあるように CUDA と遜色ない速度で処理できている感がありました.

解像度

RX6800 16GB で,

  • 768x768 いけました.

768x1024 などは CUDA と同様にメモリ不足で実行できずになりました. そもそも学習が 512x512 なので解像度たかくしてもうまくいかない. SD 2.0 や upscalar を使いましょう.

Stable diffison 2.0

2.0 も動きました :tada:

output.png

こちらのメモリ削減版を使い

768x768 で memory usagge 33% (~5.5 GB)

で行けました. GPU メモリ 8GB でもいけるやも.

TODO

  • pip install あたりのセットアップの履歴を docker イメージに残す(https://github.com/l1na-forever/stable-diffusion-rocm-docker 当たり参考に Dockerfile 作らないとダメかしらん)
  • 学習もさせてみる(以前(昨年あたり)は pytorch rocm とりあえず動くものの, おそすぎたり計算 nan でたりとダメダメでしたが, 一応 Pytorch ROCm は beta 取れているのでいまはきちんと動きそう?)
    • finetune は Dreambooth でできるのを確認ずみ
  • AMD GPU たくさん並べて Stable diffusion 計算代行でがっぽがっぽするスキームを確立する(GeForce では EULA で商用ホスティングサービス提供が禁止されているので計算代行は EULA に抵触する可能性があるため)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4