目次
この記事は既に古くなっています。最新のセットアップスクリプトはこちらの記事一覧から確認してください。
初めに
先にお断りしておきます。本記事の内容を実行しても環境によってはRX7900XTX/XTでStable Diffusion WebUIが動かない可能性はありますので、あらかじめご了承ください。
あくまでも一個人の環境で実行できたということです。
また、本記事の内容を実行して起きた損害などに責任は負えません。
自己責任でお願いします。
先日(2023年5月2日)、RDNA3に完全対応したROCm V5.5がリリースされましたので、それを使ってStable Diffusion WebUIを動かしてみようと思います。
当然ですが現在のところROCmはLinuxにしか対応していませんのでLinuxを使います。
Linuxは最もメジャーなUbuntuの軽量版の公式亜種である、Lubuntu22.04LTSを使います。
理由はPytorchをビルドするときに大量のメモリを使うため、なるべく軽いディストリビューションを選びました。(選ばざるを得なかった?)
Ubuntu系公式の軽量版であるLubuntuもWindowsと同じシグネチャーを使っているはずですので特に何の設定も必要なくGPT・セキュアブート・UEFI・CSM無効で起動します。
意味が解らない人はそのまま進んでください。
要はWindowsと同じように使える(インストールできる)ということです。
今回は最初に一回動かすまでは全く同じ環境でテストされることをお勧めしておきます。
馴れてきたら本家版のUbuntuなど別のOSを使ってもよいと思います。
実証環境
- CPU:Intel Core i7-13700K
- CPUクーラー:サイズ Big shuriken3 RGB
- マザーボード:Asrock Z690M-ITX/ax
- SSD:M2_2(チップセット側) Moment MT34 NVMe Gen3 SSD 256GB(今回は使用していません)
- M2_1(CPU側) FPI256MWR7(今回は使用していません)
- NVMe-USB3.2 Gen2X2 アルミエンクロージャー BLM20C:SUNEAST SE900NVG3-256G(システムドライブ)
- 電源:Corsair SFX 750W電源 SF-750
- メモリ:G Skill Trident Z DDR4-3600 OCメモリ16GB*2=32GB
- ケース:QDIY 0040-*PCJMK6-ITX(テストベンチ)
- OS:Lubuntu 22.04LTS(jammy-jellyfishベース)
- GPU Sapphire Pulse Radeon RX7900XTX 24GB
です。
SAN ZANG MASTER NVMe-USB3.2 Gen2X2 アルミエンクロージャー BLM20Cを使って接続したSUNEAST SE900NVG3-256Gにて使用しています。
ほぼNVMe Gen3 SSDで使うのとそん色ないスピードが出ています。
OSのインストールメディアはUSB3.0対応のKIOXIA Trans Memory U301 32GBを使っています。
前提条件
先にお断りしておきますが、この方法ではすべての環境で動くという保証は出来ません。
上で説明した環境でコンパイルしてパッケージをビルドしたものです。
恐らく動くとは思いますが、絶対の保証は出来かねます。
今からこれを見てRX7900XTX/XTを購入されたいと思った方は環境によっては動かない可能性があることを頭に入れておいてください。
まあ、実際、PC需要が減退したことによってGPUは販売に苦労しているようですので、Geforceと比べると不人気なRX7900XTX/XTをもっと売りたいと思っている販売店の方は検証に協力していただけると幸いです。
メインPCが一台の場合、既に皆さんのPCにはWindowsがインストールされていると思います。
今回の場合、私はWindowsを消す事なく、USB3.2 Gen2(20Gbps)経由でNVMe 256GBのSSDにインストールしています。
どのようにされるかは皆さんにお任せいたします。
Windows環境と併用したい場合はUSB経由でSATAやNVMeのSSDにインストールするのか無難だと思います。
SSDの容量に余裕があれば、パーティションを切ってデュアルブートも出来ますが、インストールの難易度が跳ね上がりますのでお勧めしません。
またデータ移動用にUSB3.0メモリをインストールメディア作成とは別に購入されると便利です。
- USB3.2 Gen2(20Gbps)経由でNVMe 256GBのSSD(システムドライブ)
- USB3.0対応のKIOXIA Trans Memory U301 32GB(インストールメディア)
- USB3.2 USBメモリ 64GB SanDisk Ultra Shift SDCZ410-064G-J35(データ移動用メディア)
Linuxをインストールするには一筋縄ではいかないので、スマホやタブレット、ノートPCでネットに接続してHPの閲覧や万が一不足したもののダウンロードが出来るようになっていると便利です。
と言うか情報が確認できないと詰むことがありますのでRX7900XTX/XTが接続されているメインPCの他に上のような情報確認用の環境を用意してください。
今回の手順の場合、インストールPCでのインターネット接続環境は有線のみになります。無線は使えませんので有線LANでネットに接続してください。
※ サブPCをお持ちの方はそちらは無線接続でもOKです。
mega.nzにて設定スクリプトと私がコンパイルしたPytorchを配布します。
ダウンロードや解凍の仕方がわからない方は
参考:RX7900XTXでStable Diffusion WebUI DirectMLを動作させた話(ワンタッチ・DirectML版Automatic1111配布)
上の記事を参考にしてください。
設定スクリプトは解凍してデータ用のUSBメモリに入れておいてください。
必ず「setup_webui」と言うファルダの直下にファイルが入っているようにしてください。
まずはOSのインストール
まずはなにを置いてもOSをインストールしなくてはいけません。
先にお断りしておきますが、LinuxはWindowsより難しいです。
別の記事でも何度も書いてきましたが、Linuxが誰でも簡単に使えるというのは嘘です。
基本的にWindowsより難しいですし、わかりにくいです。
かなり頑張らないと使えません。覚悟しておいてください。
Windowsがクリーンインストールできるレベルなのが最低の条件です。
まずはOSを手に入れなくては始まりません。
知ってると思いますが、Linuxは誰でも無料で使えます。
費用やライセンスの問題などは基本的には発生しませんので安心してください。
その代わり使用するにあたって起きたことは全て使用者であるユーザーの自己責任になりますので注意してください。
上のリンクをクリックしてください。
開いたページに上のような部分がありますので、赤線で囲った「Desktop 64-bit」をクリックしてください。
するとダウンロードファルダに以下のようなファイルがダウンロードされます。
こちらをRufusでUSBメモリに書き込みします。
Rufusの使い方は以下の記事で詳しく説明していますので、参考にしてインストール用のUSBメディアを作成してください。
更新:Windowsの効率的な環境構築 - Windowsの効率的な環境構築の流れ
無事にUSBのメディアが作成出来たら次に進みます。
Lubuntuインストールに当たってのコツ
今回インストールするLubuntuのバージョンは22.04LTSです。
カンの良い人は気が付いていると思いますが、22は2022年のことで04は4月のことです。
要するにバージョン2022年4月で、LTSはLong Term Supportの略で長期サポート版のことです。
Lubuntuの場合、長期版のサポートは3年で、サポートが切れる前に次のLTS版が出ますのであまり問題は発生しません。
しかし、インストールメディアが作られた2022年4月には当然のことながらRX7900XTXは存在していませんので、OSからは不明なGPUとして認識されます。
基本的に以下の手順を踏まないとインストールディスク起動中に止まりますので注意してください。
では仮想PCを使ってインストールの説明を行います。
その前に私が使っているマザーボードであるAsrockの Z690M-ITX/acには無線LANが搭載されていますが、この無線LANをBIOSで「無効」にしておきます。
Linuxの場合、無線LAN周りのデバイスは認識できないとインストールディスクの起動中に問答無用で止まって回避ができないので、発売後1-2年くらい比較的新しい無線LANはインストールしている最中は無効にするのがセオリーです。
3年以上前(2019年4月より前)のものに関しては基本的には認識してくれると思いますが、トラブルを避けたい場合は無効にしておいた方が無難でしょう。
Asrockの Z690M-ITX/acの場合は以下の手順で無効にできました。
BIOSの「詳細メニュー」「アドバンスド」メニューの下方、「Onboard WAN Device」を「無効」にします。
他のメーカーのマザーボードを使っている方はマニュアルを参考にして無線LANを無効にしてください。
無線LANが搭載されていない場合はこの手順は無視して構いません。
PCを起動してBIOS画面に入ってください。
BIOSからUSBのLubuntuインストールメディアを直接指定して起動してください。
インストール先のUSB NVMe ドライブも接続しておきます。
BIOSの「詳細メニュー」「退出」の真ん中よりちょっと下に「起動ドライブメニューがあります。
ここに起動可能なドライブが全て表示されます。
上の画像の場合、「ubuntu ASMT (ASMT236X NVMe 0)」がLubuntuインストールUSB SSDになります。
インストール
インストールUSBメディアを起動すると以下の画像のように表示されます。
矢印キーの上下で動かして、赤線で囲った「Lubuntu(Safe Graphics)」を反転させ、「ENTER」キーで確定してください。
このように選択しなければRX7900XTX/XTを正常に認識できずに起動途中で止まります。
LubuntuのインストールUSBが起動します。LinuxのライブUSBはこのまま暫くテストとして使うこともできます。
インストーラーを起動するには赤線で囲った「Install Lubuntu 22.04LTS」のアイコンをダブルクリックしてください。
インストーラーが起動します。
ここまで英語だったと思いますが、インストーラーからは日本語で表示されるようになります。
赤線で囲った「→ 次へ(N)」をクリックしてください。
次に上のようにロケーションの選択画面が表示されます。
特に変更の必要はありませんので、赤線で囲った「→ 次へ(N)」をクリックしてください。
キーボードの選択です。
デフォルトで特に問題ありませんので、赤線で囲った「→ 次へ(N)」をクリックしてください。
上の画像のように表示されます。
1のVマークをクリックすると上の画像のようにメニューが展開します。インストールしたいストレージを選択してクリックしてください。
今回の場合は変更する必要はありませんでした。ここは環境によって違いますので、自分の環境にあった選択をしてください。
次に上の画像のように「手動パーティション」をクリックして先頭の丸印に●を付けてください。
赤線で囲った「→ 次へ(N)」をクリックしてください。
上の画像のように表示されますので、赤線で囲った1の「空き領域」の部分をクリックして色を反転させ
赤線で囲った2「作成(A)」をクリックします。
上の画像のようなウィンドウが表示されます
1 最初から表示されている数字を消して300と入力してください。(MiBは自動で入力されます)
2 v字マークをクリックするとメニューが表示されますので、「fat32」を選んでください。
3 v字マークをクリックするとメニューが表示されますので、「/boot/efi」を選んでください。
4 bootにチェックを入れてください。
5すべてが終わったら「OK」をクリックします。
上のように表示されます。
上の画像のように表示されますので、
1「空き領域」をクリックして反転させます。
2「作成(A)」をクリックします。
上の画像のようなウィンドウが表示されますので、
1 特に変更する必要はありません。最初から設定できる最大の数字が入っています。
2 v字マークをクリックするとメニューが表示されますので「ext4」を選択してください。
3 v字マークをクリックするとメニューが表示されますので「/」を選択してください。
4 「OK」をクリックしてください。
上のように表示されますので、赤線で囲った「→ 次へ(N)」をクリックしてください。
上の画像にように表示されます。
1 ユーザー名を入力します。ここでは環境を揃えるために強制的に「linadm」にしてください。失敗しない自信があれば自分の好きなユーザー名にしてもかまいません。
2 パスワードを設定します。8文字以上で英大文字小文字数字が含まれているものにしてください。実際に頻繁に使いますので忘れないようにしてください。簡単なものや推測されやすいものは使わないようにしてください。
参考:パスワード生成
上の画像のように確認画面が出ますので、赤線で囲った「インストール (I)」をクリックしてください。
最終確認画面が出ます。赤線で囲った「今すぐインストール (I)」をクリックしてください。以降は取り消し出来ません。
上の画像のようにインストールが進行します。終わるまでお待ちください。
上の画像のように表示されたら赤線で囲った「実行(D)」をクリックしてください。
再起動します。
Lubuntuのインストーラーが終了して再起動する途中で必ず止まります。
LubuntuのSafe Grahpcisモードは再起動の途中で100%止まります。止まり方にはいろいろなパターンがありますが、1文字分の横棒(アンダーバー)が点滅することが多いので、点滅状態になったら5分ほど待ってからハードウェアリセットしましょう。
初回起動
起動時はUSB NVMe SSDを使う場合、毎回BIOSから起動ドライブを指定する必要があることに注意してください。
指定しないとWindowsが起動します。
さて、インストールが終わって、初回の起動です。
残念ながら、まだRX7900XTX/XTのドライバが当たっていない状態ですから、そのまま起動すると100%途中で止まります。
ここがLinuxでRX7900XTX/XTを使う上での最大の躓きポイントの一つだと思います。
他にOSが入っている場合、上の画面が自動で出ます。
マザーボードのメーカーロゴが消えたら「Shfit」キーを押してください。
連打するとgrubと言うブートローダーのコマンド画面になります。
grubのコマンド画面になったら「exit」と入力すると起動が続行しますが、途中で止まると思います。
その場合、リセットしてください。
なんとか上の画面を出すことに成功したら、矢印キーの上下で文字の黄色い選択状態を動かせますので上の画像のように「Advanced options for ubuntu」を選択状態にして「ENTER」キーを押してください。
上の画像のような画面になりますので、矢印キーの上下を使って赤線で囲った「Ubuntu, with Linux 5.19.0-32-generic (recovery mode)」を選択状態にして「ENTER」キーを押してください。
暫くすると上のような画面になります。
初期状態のまま「ENTER」キーを押してください。
次に上の画像のような画面が表示されますが、これもそのまま「ENTER」キーを押します。
これで普通にLubuntuが起動するはずです。
ようやくログイン画面にたどり着きました。
1 赤線で囲ったv字の部分をクリックするとプルダウンメニューが現れます。
この状態で矢印キーの上方向を押すと日本語が表示され、もう一回v字の部分を押すとプルダウンメニューが消えます。
2 をクリックして自分で設定したパスワードを入力し「ENTER」キーを押すとログインします。
ログインすると上のようなウィンドウが表示されますが、「× キャンセル」をクリックして閉じてください。
後でまとめて処理します。
OSの設定とStable Diffusion WebUIのインストール
これから、必要なソフトのインストールとStable Diffusion WebUIのインストールを行います。
ログインすると上の画像のように表示されます。
最低限度の操作を説明しますが、OSの操作説明を丸ごとするわけにはいきませんから、ここからの説明は少し簡単にします。
このアイコンをダブルクリックしてください。
上の画像のように表示されます。
PCMANfmと言うソフトでWindowsで言えばエクスプローラーです。
操作感もとても良く似ていますのでWindowsを普段使っている方ならすぐに使えると思います。
ファイルやフォルダを選択してから右クリックするとメニューが出ます。コピペや移動はWindowsと同じようにできます。
次にターミナルエミュレーターを起動します。
上の画像のように
「左下の青いマーク」-「システムツール」-「QTerminal」
をクリックしてください。
上のように黒い画面が表示されます。
これは何かと言うとWindowsで言うコマンドプロンプトです。
Linuxはこのターミナルエミュレーターが無いと何もできないので、出しっぱなしにしておくのが普通です。
ちなみに、今のところ、RX7900XTX/XTが正常に認識されていないので4Kモニターを使っている方などは文字が小さすぎてわかりにくい思いますが、
「Ctfl」+「+」で拡大
「Ctfl」+「-」で縮小
「Ctfl」+「0」で元のサイズに戻す
となります。あまりに文字が小さすぎて見えない場合は拡大して対応してください。
さて、コピペのやり方とコマンドプロンプトの出し方を覚えたところでいよいよROCmをインストールし、Stable Diffusion WebUIをインストールしていきます。
まず、先ほど作成した当サイト配布のスクリプトの入ったUSBメモリをPC本体に指します。
このような表示が出ますが「× キャンセル」をクリックしてください。
PCMANfmを立ち上げます。
左側の「デバイス」の下に「62GB Volume」が新しく表示されているのがわかると思います。
こちらをクリックすると中身が表示されますので、「setup_webui」フォルダをlinadmの中にコピーしてください。
以下はターミナルエミュレーターでの作業になります。
cd ~/setup_webui
bash 1_setup_os.sh
と入力します。行末は「ENTER」を押すようにしてください。
すると自動でセットアップが始まります。最初に
[sudo] linadm のパスワード:
と聞かれますので自分で設定したパスワードを入力してください。
途中で
この操作後に追加で 12.8 GB のディスク容量が消費されます。
続行しますか? [Y/n]
と表示されますので、「y」を入力して「ENTER」を押してください。
そのままインストールが続行されます。
中身はWindows Updateに相当するものと、必要なソフトのインストールとAMDのGPUドライバのインストールです。
お使いのPCの性能と回線の速度によって所要時間が変わりますが、30分から1時間ほど時間がかかると思います。
Windows Update相当の作業が込みなことに驚かれる方もいると思いますが、Linuxはアップデート関連は快適です。
全ての作業が終わると、以下のメッセージが表示されます。
再起動してください。
指示通りに再起動してください。
再起動の方法は
左下の青いマークをクリック-終了-再起動
です。
ターミナルエミュレーターから
shutdown -r now
でもOKです。慣れるとターミナルエミュレーターの方が速いです。
今度はGPUのドライバがインストールされていますので、普通に起動しても大丈夫です。
USB SSDにインストールしている方はBIOSから起動ドライブを指定することを忘れないようにしてください。
再起動後
再起動後は先ほどインストールしたソフトとGPUが正常に認識された後の設定を確認しましょう。
まず解像度の変更です。
左下の青いマークをクリック-設定-LXQt設定-モニター
で解像度の設定が出来ます。
日本語入力システムfcitx5-mozc設定
左下の青いマークをクリック-設定-Mozc
左下の青いマークをクリック-設定-Fcitx5設定
キーバインドは初期設定でMS-IMEと同じです。
ブラウザFireFox & Google Chrome
左下の青いマークをクリック-インターネット-Firefoxウェブブラウザ
左下の青いマークをクリック-インターネット-Google Chrome
lubuntuの初期ブラウザはFirefoxですが、Chromeもインストールしてあります。
今後の作業に移る前にどちらか好みのブラウザを一回以上起動して、初期設定を済ませておきましょう。
Chromeを使われる方は「通常使うブラウザ」に忘れずに指定しておきましょう。
以上、個別のソフトウェアの細かい説明まではスペースの都合上出来ませんので、何がどこにあるかだけを解説しておきます。
後は自分で調べてください。
では、セットアップを続行します。
ターミナルエミュレーターQterminalを起動してください。
cd ~/setup_webui
bash 2_setup_wui.sh
これでStable Diffusion WebUIのセットアップが完了します。
では、さっそく起動してみましょう。
ターミナルエミュレーターで以下を入力してください。
cd ~/stable-diffusion-webui
bash webui.sh
初回の起動はしばらく時間がかかりますが、自動でブラウザにStable Diffusion WebUIが表示されるはずです。
「setup_webui」の中に「ハローアスカベンチマーク」用の設定ファイルが書き込まれているPNGファイルが含まれていますので、起動出来たらハローアスカベンチマークを実行してみましょう。
※ 理由は分かりませんが、初回の最初の1枚だけは異常に生成に時間がかかります(1分以上)が、二枚目以降は正常に生成できます。
ハローアスカベンチマークの実行方法に関しては以下のページで説明してあります。
参考:RX7900XTXでStable Diffusion WebUI DirectMLを動作させた話(ワンタッチ・DirectML版Automatic1111配布)
なお、オプションの記述などは「~/stable-diffusion-webui/webui-user.sh」にしてください。
※ オプションで「--opt-sdp-attention」と「--opt-sdp-no-mem-attention」を指定すると「--xformers」と同じ効果が得られるとのこと。今回は間に合いませんでしたので、ご自分で入れてください。
Stable Diffusion WebUIを終了するときはブラウザのタブを閉じて、Stable Diffusion WebUIを実行しているターミナルエミュレーターに「Ctrl」+「z」を入力してください。それで停止します。
なお、Qterminalは新しくタブを開いて複数のターミナルを使用できますので、Stable Diffusion WebUIを実行している最中でもターミナルエミュレーターを使用することは可能です。
AMD Radeon RX7900XTX 24GB ROCm版の性能
ハローアスカベンチマーク
ROCmの出力結果はDirectML版と違ってCUDA版と全く同じになっています。
これは非常にうれしかったです。
※ 数字が小さいほど性能が良い
GPU | ベース | 結果(秒) | 備考 |
RX7900XTX | DirectML | 55.45 | |
RX7900XTX | ROCm v5.5 | 19.75 | |
RTX3060 | DirectML | 162.9 | |
RTX3060 | CUDA(torch1.13.1) | 49.21 | xformer無し |
RTX3060 | CUDA(torch1.13.1) | 42.27 | xformerあり |
RTX3060 | CUDA(torch2.0.0) | 52.25 | xformer無し |
RTX3060 | CUDA(torch2.0.0) | 44.31 | xformerあり |
RTX4070Ti | DirectML | 66.64 | |
RTX4070Ti | CUDA(torch1.13.1) | 38.87 | xformer無し |
RTX4070Ti | CUDA(torch1.13.1) | 32.48 | xformerあり |
RTX4070Ti | CUDA(torch2.0.0) | 22.65 | xformer無し |
RTX4070Ti | CUDA(torch2.0.0) | 16.79 | xformerあり |
RX7900XTXの数字は19.75秒でかなり実用レベルになっています。
残念なのはxformersが使えないことです。
使うといくつかのファイルを巻き込んで止まります。
RTX407Tiに近い数字が出ているのは驚きです。
電力制限について
最近電気代も高くなっていますので、電力制限を行った時にどのくらい性能が低下するのかを調べてみました。
設定W数 | ハローアスカ ベンチマーク | 100%との 比較 | |
100% | 303 | 19.75 | 100.00% |
90% | 272 | 20.46 | 96.52% |
80% | 242 | 21.07 | 93.72% |
70% | 212 | 22.65 | 87.19% |
60% | 181 | 25.37 | 77.84% |
60%と70%でかなりの開きがあります。
RTX4000シリーズでも調べている方がおり、60%から70%までの間にかなり性能の開きがありました。
同様にRX7900XTX/XTでも70%で運用するのが一番効率がよさそうです。
Radeonの電力制限の方法
ターミナルエミュレーターで以下のコマンドを打つことによって可能です。
sudo rocm-smi --setpoweroverdrive [w数]
※ 実際のコマンドでは[]は必要ありません。
私のSapphire pulse Radeon RX7900XTXは電力制限値の上限が303Wでした。
上の表に100%から60%までのおおよその電力制限値のW数が記載してありますので参考にしてください。
再起動するとどうなるか迄は調べていませんので、再起動した場合、念のために「rocm-smi」コマンドで調べてみましょう。
各種の確認方法・その他注意事項など
ROCmのバージョン確認方法
apt show rocm-libs -a
ROCmの情報確認
sudo rocminfo
rocm-smi
PytorchがGPUを認識しているかどうかの確認
cd ~/stable-diffusion-webui
source venv/bin/activate
python3 run_test.py
deactivate
実行結果(私の場合)
[W interface.cpp:47] Warning: Loading nvfuser library failed with: Error in dlopen: libnvfuser_codegen.so: cannot open shared object file: No such file or directory (function LoadingNvfuserLibrary)
CUDA有効:True
CUDAデバイス数:1
CUDA IDナンバー:0
CUDA デバイス名:Radeon RX 7900 XTX
***ここまで
残念ながら、エラーの表示を停止させることは出来ませんでした。
これでもきちんと正常に動きますので安心してください。
xformersオプションを付けるとvenv環境のファイルが壊れてpytorchからGPUが認識されなくなります。
万が一そうなった場合、以下のようにすれば直ります。
cd ~/stable-diffusion-webui
rm -r venv
python3 -m venv venv
source venv/bin/activate
python3 -m pip install --upgrade pip wheel
pip3 install ~/setup_webui/torch-2.0.1+gitunknown-cp310-cp310-linux_x86_64.whl
pip3 install ~/setup_webui/torchvision-0.15.2-cp310-cp310-linux_x86_64.whl
deactivate
webui-user.shに以下のオプションを付けるとNavi2X、3X系の下位グレードGPUでも動作させられるかもしれません。
使う方のコメントアウト(先頭の#)を外してください。
ただし、皆さんLinuxは使いたくないのか、びっくりするくらい動作報告が集まっていないので、動くかどうかの保証はありません。
RDNA1/2は普通にROCm5.4.2を使ってください。
ROCm5.4.2
#RX5700XT/RX5700/RX5500XT
#RX6750XT/RX6700XT/RX6700/RX6650XT/RX6600XT/RX6600/RX6500XT/RX6400
#HSA_OVERRIDE_GFX_VERSION=10.3.0
ROCm5.5
#RX7600
#HSA_OVERRIDE_GFX_VERSION=11.0.0
戦い終わって日が暮れて・・・
上の手順では簡単にやっているように見えると思いますが、この手順を作るまでには非常な苦労と手間がかかりました。
RX7900XTX/XTの日本発売日が2022年12月16日、RX7900XTX/XTに対応したROCm5.5のリリース日が2023年5月2日で実に4か月と17日かかっています。
それはいいです。仕方ないと思います。
ソフトウェアを作るには多大な手間と時間がかかります。
それは素人の私にも理解できます。
しかし、Radeon Software for Linuxではリリース日2023年5月12日のものがいまだにamdgpu-install_5.4.50405-1_all.deb(つまりROCm5.4.5)のままです。
またROCmのページには掲載されているものの上記のAMDの公式ドライバとしてROCm5.5はリリースページに掲載されておらず、PytorchはROCm5.5対応版のビルドがされておらず、RX7900XTX/XTでは使えない状態が今も続いています。
多くの人は私のようにトライアンドエラーを繰り返しながらPytorchを自分の手でビルドしようとは思わないでしょう。
確かにRadeon Software for Linux(=ROCm)はRadeon Proシリーズの為のもので、ノーマルRadeon RXシリーズで動くとは1行も書いてありません。
公式ページにおいてもそのような扱いです。
しかし、ノーマルRadeonでも動く以上は非公式であってもPytorchで対応するように働きかけるべきではないでしょうか?
私のような(大企業と比較すれば)信用の低く、ロクな検証機材も持っていない個人ユーザーがDIYで対応せざるを得ない、これが今のAMD GPUの現状です。
nVidiaもAI/ML学習はQuadroなどの高額なクリエイター向けGPUでやってほしいと思っていてるのかもしれません。
Radeonとは対照的にGeforceでは発売日には旧バージョンでもきちんと動作して、RTX4000シリーズではさらに速度が速くなる最新版(Pytorch2.0.0)もほどなくしてリリースされました。
全くGeforceと同じには出来なくても、せめて対応するROCmのバージョンがリリースされたら即日で対応しても罰は当たらないのではないでしょうか?
RX7900XTX/XTは価格の割には性能が良いと言っても、それでも15-20万円もする製品です。
それらの高額製品を購入したユーザーに対する仕打ちがこれか・・・と思わざるを得ません。
対応するソフトウェアが少ないということは出来ることに差がつくということです。
確かに、メーカーとしてはより高価で利益率の高いRadeon Pro W7900/7800の方を買ってほしいのかもしれません。
気持ちはよくわかります。
どんなに高性能なGPUでもソフトが無ければ単に発熱するだけの板に過ぎません。
AMDにはそのことをよく考えてほしいです。
これほどマイナーになっても発売日に購入してAMDを信じて付いてきてくれているRX7900XTX/XTユーザーが存在するということを忘れないでほしいです。
このような状況ではいくら熱心なファンでも心が折れてしまう方が続出すると思います。
当たり前に出来ることも敢えてやらないという態度であれば、「もうAMDは単体GPUでの勝負をあきらめてしまったのだろうか?」と判断されてもおかしくは無いでしょう。
Pytorchのビルドを繰り返しながらそんなことを考えていました。
今回使用した機材
USB-NVMe エンクロージャは私が使っているものは既に販売終了しています。
以下は日本のメーカーの製品です。
NVMe SSD
AMD Radeon RX7900XTX/XT
「AMD Radeon RX 7900XTX 24GB」をamazonで検索する
「AMD Radeon RX7900XT 20GB」をamazonで検索する
動作確認報告
現在、コメントは許可していませんが、コメントやツイッターで寄せられた動作確認報告をここで紹介します。
「おず」氏
いつも参考に拝見させていただいております。
リナックスのインストールで躓いていたので、大変参考になりました。
動作報告です。
・AMD Ryzen 9 3900X
・Radeon RX 7900 XT
・オプションで「–opt-sdp-attention」と「–opt-sdp-no-mem-attention」を指定あり
・電源は制限なし(MAXの274W)
Time taken: 22.42s
管理人からのコメント:報告ありがとうございます。初のRTX7900XTでの動作報告です。タイムはまずまずですね。22.42秒ならかなり実用範囲内です。これからROCm5.6が公開されればもっと速くなる可能性もありますので期待大です。RX7900XTは20GBもメモリを積んでいて最安12万円台なので本当にお得だと思います。
「くまさん」氏
ここは場違いのような気もしますが、RX7000シリーズではなくとも、Lubuntu環境下で一応起動に成功したので、とりあえずですがハローアスカベンチマークの結果を少し。
version: v1.3.0 、python: 3.10.6、torch: 2.0.1+rocm5.4.2
CPU:ryzen5 7600x メモリ:32G ビデオカード:RX6700XT
以上の環境で47.47s(6.24it/s)
CPU:ryzen7 5800x3d メモリ:32G ビデオカード:RX6600XT
以上の環境で60.96s(4.88it/s)
ROCmの出力結果はCUDA版と全く同じです。
なお私の環境では、公開されていた方法そのままでは、残念ながらうまく起動しなかったので若干いじっています。
管理人からのコメント:RDNA2はゲーム性能の割に演算性能がイマイチ奮いませんので、演算系のクリエイター用途が弱いのですが、イラストAIでもその傾向が出ていますね。RTX3060のCUDA版torch1.13のxformerありで42秒なので、RX6700XTはそれより少し遅いくらいです。動作報告ありがとうございます。ROCm5.4.2でやられたということなので公式版を使われたのでしょうね。一応私の配布しているものはビルドするときにgfx1100を指定していますのでRDNA2では私の配布したバイナリでは動かないのでしょう。ROCm5.6で公式版が出たらRDN2でもRDN3でも両方で動くようになると思います。
ROCm 5.5はすでに入っているので2のみ実行(フォルダ固定されてるの読んでなくて1敗)
自分でビルドしたのと大差ないっぽい https://t.co/GgzZbYgXiW pic.twitter.com/uq0y5zY9Kk— めじ (@median_moe) May 29, 2023
管理人からのコメント:ツイッターでも一件報告がありました。
こちらの方はご自分でビルドしたようですが、わざわざ私が配布したバイナリをテストしてくださいました。Ryzen 7 5700X+RX7900XTXで動作しています。Ryzen環境+Ubuntuでもきちんと動くようです。ありがとうございます。