
おっさん初めての生成AI(環境構築編)
AMD + GPU + 生成AI
台湾旅行記からはや半年。久々にNoteに書けそうなネタが出来ました。
それは、「生成AI」。
先日発売されたNVIDIAのGeForce RTX50シリーズについて、会社の同僚と話
をした際に、「でもRadeonは生成AIに使えないからなぁ。。。」と言われました。私が所持するグラフィックボード(GPU)は、Radeon RX6650XTというNVIDIA製ではなくAMD製で、主にeFootballやFortniteなどゲームを快適に楽しむために購入したものです。その場ではだよねーと思ったのですが、本当にRadeonは生成AIに使えないのか?実は良く分かっていませんでした。
その後、ネットで「AMD + GPU + 生成AI」で検索してみると、世の中の先駆者たちの軌跡がたくさん出てくるじゃありませんか!
「おっさん、生成AIできるかも・・・」
ということで、おうちのデスクトップPCを使って、生成AI環境を作ってみることにしました。
デスクトップPCスペック
今回使用するデスクトップPCのスペックです。どこにでもある家庭用ゲーミングPCのスペック(メモリは若干多め)ではないかと思います。
- CPU Intel Core i5-13400F
- メモリ 32GB(DDR4-2666 16GB x2)
- GPU AMD Radeon RX6650XT
- Disk SSD x2(Cドライブ: M.2 SSD 2TB, Dドライブ: 2.5inc SSD 2TB)
- OS Windows11 Pro 24H2
RadeonでStable Diffusionを動かす
今回のゴールは、AMD Radeon RX6650XTの環境に、 Stable Diffusionを導入して、画像生成をできるようにします。
構築には、下記サイトを参考にさせて頂きました。
セットアップその1(ROCm)
AMD製GPUでは、ROCmと呼ばれるGPUを動かすためのAMD製の開発ソフトのようなものをOSにインストールする必要があります。このROCmは、下記のようにいくつか導入パターンがあります。
(1) Windowsに直接ROCmを入れる。
(2) WSL上のUbuntuにROCmを入れる。
(3) OSをUbuntuに変更して、そこにROCmを入れる。
いろいろと試した結果、(1)しか選択できませんでした。理由は、Windowsのゲーム環境を残したかったことと、ROCmの現行バージョンがRX6650XTをサポートしておらず、(2)の方法では、ROCmをインストールできても、WSL上でGPUが認識されませんでした。
インストール方法ですが、下記のAMDのサイトから、HIP SDKをダウンロードし、「AMD-Software-PRO-Edition-24.Q4-Win10-Win11-For-HIP.exe」をダブルクリックすれば、自動でインストールされます。https://www.amd.com/en/developer/resources/rocm-hub/hip-sdk.html
セットアップその2(Git,Python,Stable Diffusion)
パソコンニキさんのサイト通りにセットアップを進めました。Pythonのインストールですが、ポイントは、3.10.6でないとNG(3.10.xのマイナーバージョン違いはダメ)のようです。私のPCには、元々3.13.2と3.12.7がインストールされていたのですが、今回のセットアップタイミングで両方とも削除して、手順通り3.10.6のみをインストールしました。
セットアップその3(Stable Diffusionが起動しない)
Stable Diffusionのダウンロードまで完了したら、webui-user.batを実行するのですが、実行すると、
「正しくインストールされるとRunning on local URL: http://127.0.0.1:7860というメッセージが表示されブラウザが起動します。」
とのことでしたが、私の環境では、下記のエラーが出力されインストールが失敗し、ブラウザが起動しませんでした。
「TensileLibrary.dat: No such file or directory for GPU arch : gfx1032」
ぐぐってみたところ、上のAMDのサイトから、gfx1032はLLVM targetと呼ばれるもので、RX6650XTに相当することはわかりました。ようはgfx1032用のファイルが無いと言っているようです。では、このファイルはどこかに無いか探したところ、redditに答えがありました。https://www.reddit.com/r/ROCm/comments/1dtmqrw/question_how_to_fix_rocblas_error_cannot_read/
この書き込みの下の方にある「download this.」のthisにgitのリンクが張られていました。
このbrknsoulさんが作成された?ROCmLibs.7z(今回の私の場合は、rocm gfx1032 for rocm6.2.4.7z)をダウンロード/展開すると、「rocblas.dll」ファイルと「library」フォルダができますので、それぞれ下記にコピーします。
「rocblas.dll」 C:\Program Files\AMD\ROCm\6.2\bin
「library」 C:\Program Files\AMD\ROCm\6.2\bin\rocblas\library
尚、オリジナルファイル,フォルダとも、念の為、別フォルダへバックアップを取ってから、コピーしました。
gfx1032用ファイルをコピー後、改めてwebui-user.batを実行すると、ついにブラウザが起動して、WEBUIが起動しました!
(brknsoulさん、ありがとう!)

簡単な検証
Stable Diffusionで画像生成を行うには、モデル(Model)とプロンプト(Prompt)が必要です。モデルは、「v1-5-pruned-emaonly.safetensors」というモデルデータが元からあるようなのでこれを使います。プロンプトは、どういう画像を生成させたいのかを指定するもので、英語で入力する必要があります。尚、プロンプトには、Negative prompt(ネガティブプロンプト)というものもあり、これは生成させたくないキーワードを同じく英語で指定することができるというものです。ただし、入力フォーマットがわからないので、ひとまずプロンプトのみ適当に指定して、
「ビルの上のおっさんが、カレーを食べている」
画像を生成してみます。

プロンプト入力後に右にある「Generate」ボタンをクリックすると、10秒ほどで無事画像が生成されました。

実際に出力されたファイルがこちらです。

生成させた自分が言うのもなんですが、最初の一枚にしてはなかなか上出来かと思います。確かにおっさん(男性っぽい)だし、ビルの上にいるし、カレーらしきものを食べているように見ようと思えば見えるし・・・。
どうも、画像生成にはモデルとプロンプトの内容が非常に重要なようで、使用するモデルデータや指定するプロンプト内容をもっと精査する必要があるようです。
また、実際にRadeonが動作しているのかどうかですが、タスクマネージャーを眺めた限り、「Generate」ボタンを押すと、GPU使用率が短時間ですが100%になりましたので、ちゃんと使えていそうです。

今後の展望
今回、2日ほど試行錯誤しましたが、無事Radeonでも生成AIが使えることがわかりました。今後は、Stable Diffutionの使いこなし方や、モデル,プロンプトなどについても調べていきたいと思います。
最後までお付き合いいただきありがとうございました。