Stable Diffusion
PR

【Stable Diffusion】 RTX50シリーズでStable Diffusionを起動する方法 【CUDA 12.8対応】

えりる
記事内に商品プロモーションを含む場合があります

せっかくRTX 50シリーズを買ったのにStable Diffusionが動かず困っているあなた!これで救われます!!(たぶん)

この記事では RTX50シリーズでStable Diffusionを起動する方法を解説します。

最終的にはStable Diffusionを Linux 上で起動させますが、LinuxをWidnows上で動かすので、Windows PCだけで完結するようにしました。(もちろん生のLinuxでも大丈夫です)

はLinux のほうがStable Diffusionに必要なライブラリの開発が早いらしい…。

WSL2 :

Windows 11標準搭載の機能。LinuxをWidnows上で仮想的に動かすことができる。

Windows Subsystem for Linux 2の略称。

NVIDIAの最新GPU(Blackwell 世代)である RTX5070, RTX5070Ti, RTX5080, RTX5090 では単ににStable Diffusionをインストールしただけでは動かないようになりました。

Blackwell 世代のGeForce RTXシリーズが CUDA 12.8 以降でないと対応していません。

一方、Stable Diffusion の中で使用している PyTorch は バージョン2.6が最新版であり、CUDA 12.6 までの対応でとなります。

このバージョン差がRTX50シリーズで Stable Diffusion が動作しない理由です。

ただ、PyTorch はバージョン 2.8で CUDA 12.8 への対応が予定されており、実はベータ版が公開されています。

この記事では PyTorch 2.8 をインストールしてRTX50シリーズでStable Diffusionを起動する方法を解説します。

環境

PyTorchの開発は Linux 環境への対応の方が早いという噂を聞いたのでOSは Ubuntu を選択します。

  • OS  = Ubuntu 24.04.2 LTS
    • クリーンインストール直後の環境を想定
    • WSL(Windows PC上で簡単にLinuxを動かすことができる機能)上で動作
  • CPU = Intel Core Ultra 285k
  • GPU = NVIDIA RTX 5070

pyenvのインストール

まず、pyenvのGitHubリポジトリ から必要なファイルをとってきます。

このリポジトリのREADMEにインストール方法が記載されていますが、その方法だけだと動作しません。(罠)しかもREADMEは英語です。

以下のコマンドでリポジトリをクローンします。

git clone https://github.com/pyenv/pyenv.git

このあと起動前の事前準備としてgcc, zlib, OpenSSLをセットアップしていきます。

gcczlibのインストールはそれぞれ以下のコマンドでできます。

sudo apt install build-essential
sudo apt install zlib1g-dev

OpenSSL のインストールは以下のコマンドでできます。

sudo apt install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

次に以下のコマンドで先ほど pyenv をクローンしたディレクトリに移動します。

cd pyenv

以下のコマンドでpyenvを高速化します。失敗してもpyenvは問題なく動くみたいです。

src/configure && make -C src

ここでいったん以下のコマンドでホームディレクトリに戻ります。

cd ~

最後にパスの設定をします。ホームディレクトリにある .bashrc というファイルを開いて末尾にpyenvのパス内容を追記します。

まず、以下のコマンドでvimエディタを使って.bashrcを開きます。

vi ~/.bashrc

vimの使い方はこちらの記事で少し解説しているので参考にしてみてください。

開いたら一番下まで移動して、一番下の行に以下の内容をコピペします。

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

ここまで終えたら最後に .bashrc の変更内容を以下のコマンド適用します。

source ~/.bashrc

ここまでで pyenv が使えるになっているはずなので以下のコマンドで確認します。

pyenv --version

バージョンを表す数字が返ってきたらインストールは完了です。

Python 3.10.6のインストール

それでは、Stable Diffusion が指定しているPython 3.10.6をインストールしましょう。

以下のコマンドでインストールができます。

pyenv install 3.10.6

pyenvでインストールしたpythonを使うときは、pythonを使いたいフォルダ内にcdコマンドで移動してから そのフォルダ内だけでpythonを有効化します。

cd pythonを使いたいフォルダのパス
pyenv local 3.10.6

CUDA Toolkit 12.8 のインストール

NVIDIAの公式サイトからインストールします。

公式サイトのCUDAインストール用ページにアクセスすると、自分の環境を選択するところがでてきます。 今回は以下のように選択しました。

するとページ下のほうでインストールの方法を教えてくれるのでそれを参考にインストールを進めていきます。

まずは念のためホームディレクトリに戻っておきましょう。

cd ~

wgetを使ってパッケージをダウンロードします。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb

公式ダウンロードページの「CUDA Toolkit Installer」と書いてあるところにwgetコマンドがあるので、wget以降のURLはそこに書いているURLを使用してください。

うまくいくとホームディレクトリにcuda-keyring_1.1-1_all.debというファイルがダウンロードされていると思います。

次にダウンロードしたパッケージをdpkgコマンドでインストールします。

sudo dpkg -i cuda-keyring_1.1-1_all.deb

dpkg -i以降はダウンロードされた.debファイルの名前を適宜使用してください。その後、以下でアップデート可能なパッケージリストを更新して、

sudo apt update

CUDA Toolkit 12.8, cuDNN 9.8.0 を以下のコマンドでインストールします。

sudo apt install cuda-toolkit-12-8 cudnn

ついでにドライバも以下のコマンドでインストールしておきます。公式ダウンロードページにこれも載っています。

sudo apt install cuda-drivers

最後にインストールしたCUDA Toolkitのパスを通します。pyenvの時と同様に~/.bashrc の末尾にパス情報を追記します。

まず、以下のコマンドでvimエディタを使って.bashrcを開きます。

vi ~/.bashrc

その後、一番下まで移動して、一番下の行に以下の内容をコピペします。

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME=/usr/local/cuda-12.8
export CUDNN_INCLUDE_DIR=/usr/local/cuda/include
export CUDNN_LIB_DIR=/usr/local/cuda/lib64

ここまで終えたら最後に.bashrcの変更内容を以下のコマンド適用します。

source ~/.bashrc

これでCUDA Toolkitが使えるようになっているはずなので以下のコマンドで確認します。

nvcc -V

バージョンが返ってきたらインストール成功です。

Stable Diffusion のインストール

Stable DiffusionのGitHubリポジトリ から一式をダウンロード(リポジトリをクローン)します。

いったんホームディレクトリに戻りましょう。インストールしたい場所があればその場所へ移動してください。

cd ~

以下のコマンドでリポジトリをクローンします。

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

するとstable-diffusion-webuiというフォルダができているのでそこに移動します。

cd stable-diffusion-webui

ここでいったんStable Diffusion を起動して必要なPythonパッケージをインストールしてもらいましょう。

まず、Python 3.10.6の仮想環境を作ります。今いるフォルダで動作するpythonを以下の通り指定します。

pyenv local 3.10.6

次に以下のコマンドで仮想環境venvを作ります。

python -m venv venv

そのあと、仮想環境を有効化します。

source venv/bin/activate

最後に以下のコマンドでStable Diffusionを起動します。

./webui.sh

しかし、今のままだとCUDA 12.8に対応していない状態で起動するので途中でエラーが出て止まってしまいます。

ただ、いったん起動を試みることで必要なパッケージがインストールされるので、あとはPyTorchを更新すればよいという状態に持っていくことができます。

PyTorchの更新

ここまでの作業を終えた状態で

pip list | grep torch

を実行すると、torch 2.6がインストールされていると思います。これとtorchvisionCUDA 12.8に対応したバージョンに変更します。

まず、以下のコマンドで古いバージョンをアンインストールします。いらない説もありますが、余計なところでトラブりたくないので消しちゃいます。

pip uninstall torch torchvision

ここで、PyTorch公式ページからインストールに必要な情報を探します。

ページにアクセスして以下のように環境を選択すると一番下の欄にインストールに必要なコマンドが出てきます。(pip3と書いていますがpipで動きます)

今回はtorchaudioは不要なので、以下のコマンドでtorch とtorchvisonをインストールします。

pip install -U --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/cu128

これでPyTorchをCUDA12.8に対応したバージョンへあげることができました。

起動→動作確認

ついに起動です。

以下のコマンドでStable Diffusionを起動して問題なく画像が生成できればインストール成功です。

./webui.sh

おまけ: xformersの導入

Stable Diffusionはxformersというpythonパッケージを導入して起動することで高速化・VRAMメモリの節約が可能だと言われています。(なくても動きます)

ただ、このxformersもCUDA 12.8には対応していません。

これについてもいろいろと調べてみると、CUDA 12.8 環境で自力でxformersをビルドすることで動作するみたいなので検証してみました。

以下の記事で導入検証の情報共有を行っていますのでご参考まで。

あわせて読みたい
【RTX50シリーズ】 Stable Diffusionにxformersを導入する方法 【CUDA 12.8対応】
【RTX50シリーズ】 Stable Diffusionにxformersを導入する方法 【CUDA 12.8対応】

参考文献

ウェブサイト

ソフトウェアリンク

記事URLをコピーしました