先日 の続き。Stable Diffusion XLの派生Fooocusが動くまでこぎつけたので、備忘録。
環境
- CPU: Ryzen 1700。お古を流用。PCIe atomic機能を有するHaswell以降・初代Ryzen以降必須。Fooocusはシングルスレッド性能しか求めてないようなので、選べるならそちら重視で。
- OS: Ubuntu 22.4 LTS。参考にしたサイトの情報だとカーネル5.xなら動きそうな感じはするので、22.4, 22.4.1, 22.4.2は行けるかも。カーネル6.xになる22.4.3は実際にやって失敗した(Radeonドライバが入らない)。Windowsは将来OSアップデートでどうなるか分かったものではないのでパス。
- Radeonのドライバ及びROCmが/optに20GB程度、その他ビルド用パッケージなどが/usrに30GBほど入るので、/を大きめに取る・/opt, /usrのパーティションを切るなど対策した方がいい。
- メモリ: 32GB。Fooocusが画像サイズ1151x896で18GBくらい使っていたので、これくらいあった方がよさそう。なければスワップで乗り切る。
- GPU: AMD Radeon RX570 8GB。1151x896だとVRAM 80%位使用する模様。
手順
ドライバインストール
ドライバ5.6や5.7で挑戦するならhttps://repo.radeon.com/amdgpu-install 以下からjammyのdebを選ぶ。6.xは大幅に変わると言われているので期待薄。再起動後rocminfoでRX570が表示されれば成功。mkdir -p ~/stable_diffusion/rocm cd ~/stable_diffusion/rocm sudo usermod -aG video $USER sudo usermod -aG render $USER curl -O https://repo.radeon.com/amdgpu-install/5.5/ubuntu/jammy/amdgpu-install_5.5.50500-1_all.deb sudo dpkg -i amdgpu-install_5.5.50500-1_all.deb sudo amdgpu-install --usecase=graphics,rocm,hip,hiplibsdk --no-32 sudo reboot rocminfo rocm-smi
Pytorchのビルド
ビルドに必要なパッケージのインストール。sudo apt install ¥ git build-essential ¥ python3-pip python3-venv python3-dev ¥ libstdc++-12-dev libpng-dev libjpeg-devPython仮想環境とかdockerでやった方が失敗したときのやり直しがききやすい。
cd ~/stable_diffusion python3 -m venv fooocus_env source fooocus_env/bin/activate pip install pygit2==1.12.2 packaging
Pytorch2のビルド。2.1は試してません。
- 環境変数PYTORCH_ROCM_ARCHはrocminfoやrocm-smiで表示されるものから読み取る。複数指定できるがビルドに失敗しやすくなる。再度ビルドすると通ることもあるが、この後の動作確認が動かないとか経験したので欲張らず装着しているGPUだけに限定することがおすすめ。
curl -L -O https://github.com/pytorch/pytorch/releases/download/v2.0.1/pytorch-v2.0.1.tar.gz tar -xzvf pytorch-v2.0.1.tar.gz cd pytorch-v2.0.1 echo 2.0.1 > version.txt export CMAKE_PREFIX_PATH="$HOME/stable_diffusion/fooocus_env:/opt/rocm" export USE_CUDA=0 # export PYTORCH_ROCM_ARCH="gfx803;gfx900;gfx906;gfx908;gfx90a;gfx1030" export PYTORCH_ROCM_ARCH=gfx803 pip install cmake ninja # sed -i '/^torch¥s*$/d' requirements.txt pip install -r requirements.txt pip install mkl mkl-include python3 tools/amd_build/build_amd.py python3 setup.py install
仮想環境入りなおして(import torchがエラーになる)、Pythonコマンドライン起動。
# envに入りなおさないと、import torchがエラーになる deactivate cd ~/stable_diffusion source fooocus_env/bin/activate python3以下のコマンドで動作確認。最後のprint(res)でSegmentation faultが出る場合、PYTORCH_ROCM_ARCHの見直し(参考 )、場合によってはUbuntu/Radeonドライバの入れ直し。
import torch torch.cuda.is_available() # True torch.cuda.device_count() # >=1 (装着しているGPU数による) torch.cuda.current_device() # >=0 (装着しているGPU数による) torch.cuda.get_device_name(torch.cuda.current_device()) # gfx803とかRX570を含む文字列 tensor = torch.randn(2, 2) res = tensor.to(0) print(res) (Ctrl+D)
torchvisionのビルド・インストール
cd ~/stable_diffusion source fooocus_env/bin/activate curl -L -O https://github.com/pytorch/vision/archive/refs/tags/v0.15.2.tar.gz tar -xzvf v0.15.2.tar.gz cd vision-0.15.2 echo 0.15.2 > version.txt export CMAKE_PREFIX_PATH="$HOME/stable_diffusion/fooocus_env:/opt/rocm" export FORCE_CUDA=1 python3 setup.py install deactivate
Fooocusのインストール
Pytorchをビルドした仮想環境で実行。最後の--listenオプションは外のPCからアクセスできるようにするためなので、同じマシンのブラウザで動かすなら不要。cd ~/stable_diffusion source fooocus_env/bin/activate git clone https://github.com/lllyasviel/Fooocus.git cd Fooocus python entry_with_update.py --listen
画像サイズ1152x896を作成するのにQualityで10-11分、Speedで6.5分弱。古いGPU故コア数少ない・BFloat16ない・Tensorエンジンもないので、これくらいになってしまうのか。ちょっと試してみたいとか打ち込む設定が決まっているならいいですが、いろいろ試すにはちょっと辛いかなぁ。
1. IKD — 2024/09/17@13:33:56
requirements.txt:
-numpy
+numpy<2.0.0
pytorch<2.3.0がnumpy2.0サポートされてないためです。