2023/12/18にRaeon RX580 2048SP 16GBを購入しました。
きっかけは現在のPolarisの対応はROCm4.3.1で終わったにも関わらず、ビルドオプションをきちんとつけるとPolarisでも動作をするという情報をネットで見つけたためです。
では本当なのかどうか試してみようということで安価だったこともあり購入してみました。
結論から書くとROCm6.0から本当にPolarisの対応が削除されてしまい、動作はしませんでした。
ROCm5.7.3までは対応していましたので折角ですからビルドしてスクリプトを配布することにしました。
Polarisはマイニングブームの関係で大量に出回りました。
その後、マイニングブームは終了し、大量に出回ったPolarisは安価になりましたので今でも持っている方もそれなりに多いのではないかと思います。
退役寸前の7-8年前のGPUですので、性能という点ではあまり期待できないことは確かですが、ROCmでの対応も最後になりますのでお持ちの方は試してみるのもよいではないかと思います。
Redhat系のArch LinuxではPolaris対応のバイナリがあるとかないとかいう話がありますが、不思議なことに一般向けで一番メジャーなUbuntuではPolaris対応でビルドされていません。
注意:公開に当たっては複数回セットアップをテストしていますが、どの環境でもトラブルなく必ず正常動作するところまでは保証いたしかねます。あくまでも個人が公開しているものですので、使用に当たっては自己責任でお願いします。使用によって生じた結果には一切の責任を負えません。納得できる方のみ使用してください。
テスト環境
- 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 JIE SHUO Radeon RX580 2048SP 16GB
JIE SHUO Radeon RX580 2048SP 16GBについて
魔改造Polarisとして話題になった製品で、ALIEXPRESSで販売されているものです。
もとはマイニング用でしょう。
ファンがPWM対応ではなく、いつも全開で回っているのがちょっとウザいですが、あとはおおむね満足しています。
JIE SHUO RX580 2048SP 16GBをAliexpressで確認してみる
6Pの補助電源端子は今となっては新鮮です。
昨今のGPUの大型化によってかなり小さく見えます。
怪しいイメージとは裏腹に製品はきちんと使えました。
ファイルは上からダウンロードしてください。
解凍して、USBメモリに入れておいてください。
「setup_webui_r573」フォルダ直下にファイルが配置されるようにしてください。
Linuxのインストール方法についてはこちらに説明してあります。
変更点
今までからの変更点
ビルド方法を見直し、PolarisやVega 56/64にも対応。
もちろん、RadeonVII、RDNA1/2/3にも対応しています。
ただし、機材がないためRX7900XTXとRX580 2048SP 16GB以外でのテストは行っていません。
基本はROCm6.0版と同じです。
「ai-app」というディレクトリを作成し、そこにインストールするようにしています。
kohya_ssに対応
LoRAを作成できるkohya_ssに対応しました。
GUIでLoRAを作成できます。
今回はPolaris対応のためのスクリプトですので、アップデートインストールには対応しておりません。
また、興味のある方はスクリプトを見ていただければわかりますが、updateに当たってはaptの国内ミラーを使うように変更しております。
以前より高速になっていると思います。
共通
USBメモリに入れた「setup_webui_r573」フォルダをlinadm(homeフォルダ)直下にコピーしてください。
新規インストール
OSをクリーンインストールした方向け
ターミナルを開いてください。
cd ~/setup_webui_r573
bash 1_setup_os.sh
途中で上のようなウィンドウがポップアップしますが、赤線で囲った「Update Names」をクリックしてください。
スクリプトの最後に再起動を求められます。指示通り再起動してください。
再起動後
cd ~/setup_webui_r60
bash 2_setup_wui.sh
です。
セットアップはこれで完了です。
光回線で30分から1時間ほどセットアップに時間がかかると思います。
Stable diffusion WebUI起動
cd ~/stable-diffusion-webui
bash webui.sh
以上で起動します。
今回はデフォルトはPolarisになっています。
Polaris以外の方は「webui-user.sh」の最後の部分あるgfxのバージョン指定を書き換えてください。
SD WebUIのパフォーマンス
ではPolarisでの性能をテストしてみました。
- ROCm 6.0+当サイトビルドバイナリ ハローアスカベンチマーク 16.8s
参考までに上がROCm6.0でのRX7900XTXのタイムです。
Polarisでの性能は
- ROCm5.7.3+当サイトビルドバイナリ ハローアスカベンチマーク 469.6s(7m49.6s)
49.6sではなく、7m49.6sです。書き間違いではありません。1枚の生成に44sかかります。
もともとAI/ML性能は一世代ごとに飛躍的に上がりますが、7-8年前のGPUであるPolarisはいくらメモリを16GBも積んでいようとこの程度の性能にしかならないようです。
あまり快適とは言い難い性能で、本気でAI/ML関連で使うなら買い替えたほうが良いと思います。
単に動くだけと考えたほうが良さそうです。
kohya_ss
GUIでLoRAの作成などの学習を行うツールkohya_ssに対応いたしました。
大まかな動作の流れはROCm6.0版とほとんど同じですが、一応説明をしておきます。
cd ~/setup_webui_r573
bash 3_setup_kohya.sh
でインストールします。
終わった後、
cd ~/ai-app/kohya_ss/
bash setup.sh
でセットアップ
bash gui.sh
で起動です。
ターミナルエミュレーターに表示されますが
127.0.0.1:7860
にアクセスするとkohya_ssをブラウザから使用することができます。
kohya_ssは比較的専門的で複雑ですので、詳細はネットで検索して各自調べてください。
セットアップまではやりますがそこから先はスペースの都合でちょっと無理です。
参考までに以下のサイトを挙げておきます。
%romptnAI - Stable Diffusionで簡単にLoRAを作れる『Kohya’s GUI』の導入方法・使い方を徹底解説!
導入方法は当サイトのスクリプトを使う場合、必要ないですが使い方は参考になります。
人工知能と親しくなるブログ - 誰でもわかるStable Diffusion kohya_ssの追加パラメータを解説
kohya_ssのあまりにも多い各オプションの意味についてはこちらに詳しく解説されています。
ベンチマーク
私もそうですが、LoRAに全く興味がない方のために、簡易的なベンチマークとして使えるように設定ファイルとデータを用意しています。
作者さんが用意されたカエルの画像を使いますので「LoRAカエルベンチマーク」とでも呼んでください。
推論はいくつかありますが、学習におけるベンチマークはほとんど存在しませんので結構貴重ではないかと思います。
※ 画像をクリックすると別Window・タブで拡大します。
1.LoRAのタブをクリックしてください。ここは間違いやすいので必ず確認するようにしてください。わたくしも何度も間違いました。
2.Configuration Fileの横の◀をクリックして上の画像のように▼にしてメニューを展開してください。
3.Openをクリックしてください。
上のように表示されますので「users-settings」を開いてください。
ファイルが4つあります。
- frog_a8.json・・・AdamW8bit
- frog_a.json・・・AdamW
- frog_l8.json・・・Lion8bit
- frog_l.json・・・Lion
このようになっています。
※ 画像をクリックすると別Window・タブで拡大します。
設定ファイルを選んだら赤線で囲った「Start training」をクリックしてください。
ターミナルエミュレーターに進捗が表示されます。
RX580 2048SP 16GBの結果
バッチ数600*2=1,200ステップの学習をAdamW8bit、AdamW、Lion8bit、Lionと4つのオプティマイザーでテストしてみることにした。
しかし、RX7900XTXで最速だったAdamWからテストしたが、残念ながら、下のように表示された。
1200ステップ中9ステップ処理した時点で、残り時間が6時間14分16秒とのことだったので途中で処理を中止した。
さすがにテストのためだけに6時間以上もかけるのは現実的ではないと判断した。
実機を持っている方は最後まで実行してみるのもよいと思うが決しておすすめはしない。
正直言って動いたことが驚きだった。
LoRAの作成を行いたいならば、素直に最新のGPUに買い替えたほうがよいだろう。
AdamW 6時間以上かかると表示されたのでテスト中断
use AdamW optimizer | {}
running training / 学習開始
num train images * repeats / 学習画像の数×繰り返し回数: 300
num reg images / 正則化画像の数: 50
num batches per epoch / 1epochのバッチ数: 600
num epochs / epoch数: 2
batch size per device / バッチサイズ: 1
gradient accumulation steps / 勾配を合計するステップ数 = 1
total optimization steps / 学習ステップ数: 1200
steps: 0%| | 0/1200 [00:00<?, ?it/s]
epoch 1/2
steps: 1%|▌ | 9/1200 [02:49<6:14:16, 18.86s/it, avr_loss=0.0239]
終わりに
ROCm5.7.3を使いPolarisでStable Diffusion WebUIとkohya_ssを使用してみました。
ちょっと遊んでみる分にはよいと思いますが、常用するならばあまりお勧めはできない性能でした。
しかし、ROCm4.3.1までとされていたPolarisですが、きちんと対応していることが確認できたのは驚きでした。
やはり何事も自分で試してみない限りはわからないものだと感じました。
Radeon RX7600XT 16GB
メモリ16GBのRX7600XTが準備されています。
当サイトではすでにこちらの記事で報じています。
知っての通りAI/ML用途には大量のメモリが必要です。
RX7600XTは329ドルで1ドル150円計算で約50,000円弱です。
RTX4060Ti 16GBが80,000円前後であることを考えるとかなり安価です。
ROCmが使える皆さんにはこのRX7600XTは素晴らしいAI/ML入門機に見えるのではないでしょうか?
RX7600XT 16GBのおおよその性能
当サイトでテストに使っているRX7900XTXはハローアスカベンチマークで16.8秒です。
RX7900XTXは6144SPでRX7600XT 16GBは2048SPであることが判明していますので同クロックでの性能は1/3となります。
つまりRX7600XTのハローアスカベンチマークは機械的に計算すると50.4秒ということになります。
RTX3060が47秒ですのでほとんど同じくらいということになります。
16GBもメモリを搭載しているということはゲームだけではなくクリエイター用途向けの入門機という位置づけでもあると思うのですが、AI/ML用途も非常にメモリを要求されますので、向いていると思います。
しかし、ROCmが一般向けRadeonで動作保証されていないからなのかOSがLinuxだからなのかあまり積極的にPRされていません。
非常に要領が悪い感じがするのでここでアピールしておきます。
もちろんですが、わたくしは動作を確認しているわけではありませんし、メーカーも保証していませんがおそらく動くと思います。
今回、新たにRX580 2048SP 16GBをテスト環境に投入しました。
テスト環境の充実のため、ぜひご支援いただければと思います。
別に寄付を募ろうというわけではなく、本記事をツイートしたり下のツイートをリツイートしたりいいねしたりしていただくのも立派な支援です。
ファイナルPolaris - Polaris最後の対応となったROCm5.7.3でStable Diffusion WebUIに挑戦(セットアップスクリプト配布)https://t.co/sqyWKwL9Li
— Lisaちゃん@PC自作 (@KotoriKanase) January 20, 2024
現時点でのRadeonにおける機械学習はほとんど存在感を示せていませんが、ROCmを使えばRadeonという割安な選択肢もあるということを多くの人に知っていただきたいです。
※1 RDNA3(RX7000シリーズ)から1SP当たりの演算器が倍増され、RDNA2と比較するとAI/ML関連の処理速度が大きく上がっていますので、ROCm(Linux版)でAI/ML関連の環境を整備されたい方は無理をしてでもRDNA3(RX7000シリーズ)を購入されることをお勧めしておきます。
※2 ROCmはノーマルの一般向けRadeonは正式にサポートされていません。Radeon Pro及びRadeon Instinct向けのソフトウェアです。一般向け製品で正式に対応しているのはRX7900XTXとRadeonVIIだけです。もちろん動作はしますが、メーカーの保証があるわけではありませんのでその点はご承知おきください。
付録
Polarisは今まで対応していないとされてきましたが、ROCm5.7.3までは対応していることが確認できました。
では、どのようにしたら対応状況が調べられるのでしょうか?
以下はインストールしたROCmがどのアーキテクチャーに対応しているかを確認するものです。
ROCm6.0でRX580 2048SP 16GBを使いSteable Diffusion WebUIを実行したときのエラーメッセージから以下のコマンドでファイルの有無を調べると対応状況がわかるようです。
対応しているということは内部に情報を持っているということですので、GPUに対応したファイルがあるかどうかを調べています。
ls /opt/rocm/lib/rocblas/library/ | grep TensileLibrary_lazy_
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx1100.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx90a.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx906.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx908.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx1102.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx942.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx940.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx1101.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx1030.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx941.dat
/opt/rocm/lib/rocblas/library/TensileLibrary_lazy_gfx900.dat
上はROCm6.0のGPU対応状況
- Vega 56/64
- Radeon VII
- RX6900XT/6950XT
- RX7900XTX/XT,RX7800XT/RX7700XT,RX7600
に対応していることが確認できます。
gfx1100=Navi31、gfx1101=Navi32、gfx1102=Navi33です。
AMDのGPU Radeonシリーズ
Radeon 7000シリーズ
Radeon RX 6000シリーズ
※ SAPPHIREはAMD Radeon専業のメーカーであり、Radeonのリファレンス的なメーカーです。