画像生成AIを使ってみる(失敗)

技術開発

概要

画像生成AIであるStable diffusionを使ってみましたが、私の環境ではうまくいきませんでした。。。
覚書のために今回試したことを記録します。

環境構築

Pythonのインストール

バージョンは3.10.6をインストールします。

Stable diffusionのクローン

Stable diffusionはgitで公開されているので、以下からクローンします。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

Stable diffusionのインストール

「stable-diffusion-webui」>「webui.bat」をダブルクリックすると仮想環境のvenvがactivateされ、パッケージのインストールが始まります。
PyTorrchが重いので結構時間がかかります。

Stable Diffusion Web UIの起動

webui.batの処理が終わったら、ブラウザから「http://(PCのIPアドレス):7860/」にアクセスするとStable Diffusionが使用できます。

詰まったところ

実際はwebui.batを実行しても起動しませんでした。
エラーを確認すると以下のエラーで止まっていました。

RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check

PyTorchがGPUを使用できていないことによるエラーのようです。
「CUDAのテストをスキップする設定を追加しろ」と書かれているのですが、処理が遅くなっては意味がないので根本原因を調べました。

CUDAについて調べると、「CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIA製のGPUが最適な性能を発揮できる環境を提供するためにNVIDIA自身が2007年に開発した並列演算処理を可能とするコンピューティングプラットフォーム」と出てきました。
つまりPyTorchがこれを上手く使えていないということです。

venvをactivateして以下のPythonコードを実行すると、PyTorchのGPU使用状況が確認出来ます。

import torch

print(torch.__version__)
print(f"cuda, {torch.cuda.is_available()}")
print(f"compute_{''.join(map(str,(torch.cuda.get_device_capability())))}")
device_num:int = torch.cuda.device_count()
print(f"find gpu devices, {device_num}")
for idx in range(device_num):
    print(f"cuda:{idx}, {torch.cuda.get_device_name(idx)}")

print("end")

確認方法については以下のサイトを参考にしました。

結論

私の環境がAMD Radeon RX550シリーズだったのが原因でした。。。
GeForceを購入したら続きを試してみます。