タイトルまんまの構築手順です。
Web上にもちらほら動作手順があるんですが、必要最小限まで削ってみました。
・AMD公式のLinuxドライバ+ROCm5.5(23/05/12?)
・PytorchのROCm5.5版リリース(23/06/17?)
などあり、手順が大幅に簡略化されすぐに試せるようになりました。有り難いことです。
今回の手順だと30分かからず動作確認まで行けます。(ほとんどDLの待ち時間です)
- Ubuntu22.04.2のインストール
- GPUドライバ+ROCm5.5インストール
- Stable Diffusion WebUIインストール
- 動作確認
1. Ubuntu22.04.2のインストール
Linux自体のインストール手順は世の中に山程あるのでここでは割愛しますがポイントは1点、
- Ubuntu 22.04.2を使うこと
ここで別のイメージを使うと、インストール直後にGUIが使えなかったり、
あとの方の手順でちゃんとドライバがインストールされなかったりするので注意。
(22.04と22.04.2は別物です)
https://jp.ubuntu.com/download
なりから、22.04.2のイメージを取得し、これを元にLinuxをインストールします。
2. GPUドライバ+ROCm5.5インストール
RX7900XTX用のドライバ(+ROCm)を取得します。「RX7900 Linux Driver」とかで出てきたAMDのページ、
https://www.amd.com/ja/support/previous-drivers/graphics/amd-radeon-rx-7000-series/amd-radeon-rx-7900-series/amd-radeon-rx-7900xtx
から、1.に対応する"Radeon™ Software for Linux® version 22.40.5 for Ubuntu 22.04.2"を選んでDL。
DLしたら以下の通り実行。(上のドライバページからリンクされる手順のUbuntu版を要約)
なお、初出時誤っていましたが、"apt-get install xxx.deb"ではなく、apt-get install ./xxx.debとしないとだめです。(コメント欄でご指摘頂きました。ありがとうございます)
$ cd ~/Downloads #DLした場所
$ sudo apt-get update #事前に最新パッケージに更新
$ sudo apt-get dist-upgrade #被っているライブラリなどの解決が行われるらしい
$ sudo apt install ./amdgpu-install_5.4.50405-1_all.deb #最新のバージョンに適宜読み替えてください
$ sudo apt-get update #関連パッケージに更新があるかもしれないのでもう一度アップデート
$ amdgpu-install --usecase=rocm,graphics #GPUドライバとROCmのインストール
インストール後、以下のようなコマンドでGPU情報が読めるのが正解。PwrCap(所謂PL)は291W。
ちなみに私の使ったモデルはリファレンス版なのでこれがデフォルトですが、カスタムモデルだともっと高いみたいですね。
1秒毎に繰り返し表示するオプションとかないかしら。。。
$ sudo rocm-smi
======================= ROCm System Management Interface =======================
================================= Concise Info =================================
GPU Temp (DieEdge) AvgPwr SCLK MCLK Fan Perf PwrCap VRAM% GPU%
0 50.0c 24.0W 18Mhz 96Mhz 9.02% auto 291.0W 2% 1%
================================================================================
============================= End of ROCm SMI Log ==============================
ただ、毎回情報を見るのにsudoするのも面倒なので、こちらの情報に従い、sudoなしで使えるようにします。
$ sudo usermod -a -G render $LOGNAME
$ echo 'ADD_EXTRA_GROUPS=1
EXTRA_GROUPS=video
EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf
ここまで済んだら一度再起動。再起動後はマルチモニタなども動くようになります。
3. Stable Diffusion WebUIインストール
stable-diffusion-webuiのGitHubページ 内、「Automatic Installation on Linux」情報に従い、
以下の通り実行します。
上のページ内手順にないlibstdc++-12-devを入れているのは、
私のUbuntuインストール手順(22.04.2の最小インストール)だとこのパッケージが入っていなかったため。
また、webui.shを直接実行にしていないのは、このスクリプトだとROCm5.5対応のPytorchが入らないためです。
$ sudo apt install wget git python3 python3-venv libstdc++-12-dev
$ wget https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh
wgetで取得したwebui.shの中にある、Pytorchインストール部分を、ROCm5.5対応のバージョンに差し替えます。
テキストエディタなどでwebui.shを開き、Pytorchをインストールしている部分を探した上で
Pytorch公式で出てくるインストールコマンドに置き換えてやればOK。
なおpip3 install .. の部分はpip install .. に変えてください。
書き換え終えたら、
$ bash webui.sh
とすると、大量のDLが始まりますが、10分程度(回線速度により変動)待ってやると、
「127.0.0.1:7860を見ろ」的な表示が出るので、その通りブラウザで繋いでやればよいです。
GPUメモリもいっぱいあって、速度もそこそこ早く良い感じ。
ちなみに初回だけ遅いのは裏でHIPコードコンパイルしてるせいです。
(libstdc++-12-devはここで使われる)
4. その他
--xformersが使えない(動かない)こともあって、batch=1x10ベンチ取ると4070よりも遅いですが
batch=8にして8枚1セットでガンガン回す、とかだとテンポよく使えますね。(1セット15秒くらい)
ROCm5.5+Pytorch、OpenCALMのLoRAファインチューニングも普通に回りました。素晴らしい!
最後まで回してないですが(一応Val Lossとかが下がるのは確認)、
npakaさん の手順を試し、予想時間4時間半とか出てたので※
ColabのA100に近い速度は出てそうです。
そしてVRAM24GBはお絵描きにせよLLMにせよ「メモリ不足に悩まされることが少ない」という
絶対的な安心感があります。
これで最安14万(6/20時点)、コスパ的にはかなり良くないですか?
WindowsでROCmが動くかも的な話もあり、PytorchがAMD向けの最適化を積極的にやる的な話もあり
ようやくAMDでも他と同じようにMLができる環境が整いつつある、的な感があります。※2
ぜひとも一択と言われがちな今のGPU環境が変わってほしいですね。
※実は8bit量子化のところだけエラーになって、量子化外すと7bモデル+LoRAが24GBに収まりませんでした…
「4時間半」はメインモデルを3bにした場合の速度です。
※2 この記事の関連で出てくる、3年位まえの記事を読むと「ようやくここまで」的な感があります。長かった...