Stable Diffusion
PR

【Stable Diffusion】 RTX50シリーズでLoRA学習を実行する方法 【CUDA 12.8対応】【Linux/Windows】

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

この記事ではNvidia最新GPUのRTX50シリーズ(blackwell世代)に対応したCUDA12.8 を使用してLoRA学習を実行できたのでその方法を紹介します。

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

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

しかし、Stable Diffusionに必要なPythonパッケージがCUDA 12.8に未対応のものがあるので、RTX50シリーズで Stable Diffusion が動作しません。

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

あわせて読みたい
【Stable Diffusion】 RTX50シリーズでStable Diffusionを起動する方法 【CUDA 12.8/12.9対応】
【Stable Diffusion】 RTX50シリーズでStable Diffusionを起動する方法 【CUDA 12.8/12.9対応】

この記事ではその問題を何とかしてLoRA学習を実行できる環境を構築する方法を紹介します。

最後におまけとしてxformersを使う方法も紹介します。
自分でビルドするのでxformers導入は自己責任でお願いします

環境

この記事ではLinux 上でStable Diffusionを動かすことを前提としています。
これはLinux のほうがStable Diffusionに必要なライブラリの開発が早いらしいです。
詳しくは知りません(笑)

WindowsにはWSL2という機能があり、それを使うことでWindows 11 上でLinuxを動作させることが可能です。

なのでLinux マシンがないという方もWindows 11搭載PCがあれば大丈夫です。

この記事を書くにあたり動作検証した環境は以下の通りです。

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

使用パソコンは以下の記事で詳しく紹介しています。こちらもご覧ください。

あわせて読みたい
【自作パソコン】パーツの選び方のすべて!筆者使用PCを例に解説【Core Ultra 9+RTX5070】
【自作パソコン】パーツの選び方のすべて!筆者使用PCを例に解説【Core Ultra 9+RTX5070】

CUDA 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

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

pyenvのインストール

pyenv は、複数の Python バージョンを簡単に切り替えられるツールです。
Pythonを直接インストールしてもよいのですが、それだとほかのバージョンのPythonを使うときにStable Difffusionが起動できなくなったり、将来的にStable DifffusionのPythonバージョンが更新された場合に、自分のパソコンのPythonバージョンを更新するのも大変なので、pyenvで環境を作るのがおすすめです。

インストール方法は以下の記事にまとめていますので、こちらを参考にインストールを進めてみてみください。

あわせて読みたい
【Python仮想環境構築】pyenv+venvの開発環境の作り方【Linux】
【Python仮想環境構築】pyenv+venvの開発環境の作り方【Linux】

Python 3.10.6のインストール

それでは、LoRA学習をするために必要な Python 3.10.6をインストールしましょう。

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

pyenv install 3.10.6

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

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

LoRA学習ツールのインストール

Stable Diffusionの導入が終わったら、次はLoRA学習環境を構築していきます。

koya-ssさんのsd-scripts というツールをインストールします。

koya-ssさんのGitHubリポジトリでsd-scriptsを公開してくれています。

Gitを使ってダウンロード後、環境構築を行えばインストールすることができます。

方法はkoya-ssさんのGitHubリポジトリで説明されていますが、RTX50シリーズの場合は少し工夫が必要になるのでこの記事で紹介したいと思います。

インストールしたい場所またはホームディレクトリに移動しておきます。この記事ではホームディレクトリにインストールすることにします。

以下のコマンドでホームディレクトリに移動します。

cd ~

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

git clone https://github.com/kohya-ss/sd-scripts.git

ファイルダウンロードができたらsd-scriptsディレクトリが作成されていると思うので、そのディレクトリに移動します。

cd ./sd-scripts

移動したらこのディレクトリ(カレントディレクトリと呼ぶことにします)でPython 3.10.6を有効化しましょう。以下のコマンドで行います。

pyenv local 3.10.6

その後、以下のコマンドでPythonの仮想環境を作ります。

python -m venv venv

-m オプションはモジュールを起動するという意味です。

これを実行するとカレントディレクトリにvenvというフォルダが作成されて、このフォルダ内にパッケージなどがインストールされます。

ここで仮想環境を有効化しておきます。コマンドは以下の通りです。

source venv/bin/activate

次にsd-scriptsの実行に必要なPythonパッケージをインストールしていきます。

必要なパッケージはカレントディレクトリにあるrequirements.txtというファイルに記載されています。

これを使って一気にパッケージをインストールしてしまいましょう。以下のコマンドで実行できます。

pip install -r requirements.txt

PyTorchの更新

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

pip list | grep torch

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

まず、以下のコマンドで古いバージョンをアンインストールします。
いらない説もありますが、余計なところでトラブりたくないので消しちゃいましょう。
(先ほどのコマンドでtorchが見つからなければインストールされていないのでアンインストール作業は不要です。)

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に対応したバージョンへあげることができました。

numpy, openCV, bitsandbytesの更新

以下のコマンドでnumpyとOpenCVパッケージを更新しておきましょう。

pip install -U numpy opencv-python

また、以下のコマンドでbitsandbytesを再インストールします。

pip uninstall bitsandbytes
pip install bitsandbytes

動作確認

これでCUDA 12.8sd-scriptsを実行できる環境が整いました。

sd-scriptsの使い方はこちらのTeruru and Robin YasuLab さんというYouTubeチャンネルの動画 で詳しく紹介されています。

使い方はよくわからん!って方はこの動画を参考に実行してみてください。

ここでは、簡単にやり方を説明します。

以下のコマンドで学習を実行することができます。

accelerate launch --num_cpu_threads_per_process 1 train_network.py \
--pretrained_model_name_or_path=AAAA \
--output_dir=BBBB \
--output_name=CCCC \
--dataset_config=DDDD \
--train_batch_size=1 \
--max_train_epochs=10 \
--resolution=512,512 \
--optimizer_type=AdamW8bit \
--learning_rate=1e-4 \
--network_dim=128 \
--network_alpha=64 \
--enable_bucket \
--bucket_no_upscale \
--lr_scheduler=cosine_with_restarts \
--lr_scheduler_num_cycles=4 \
--lr_warmup_steps=500 \
--keep_tokens=1 \
--shuffle_caption \
--caption_dropout_rate=0.05 \
-save_model_as=safetensors \
--clip_skip=2 \
--seed=42 \
--color_aug \
--mixed_precision=fp16 \
--network_module=networks.lora \
--persistent_data_loader_workers

コマンド中のAAAA~DDDDには以下を入れてください。

  • AAAA: 元となるモデルファイルのパス
  • BBBB: LoRA学習後のモデルファイルの保存先ディレクトリのパス
  • CCCC: LoRA学習後のモデルファイルの名前(拡張子不要)
  • DDDD: データセットコンフィグファイル(.tomlファイル)のパス

これで学習が走れば成功です。

おまけ: xformersをビルドして使う

ここまででxformers以外の環境構築が終わっています。

いったん以下のコマンドで仮想環境を終了しておきましょう。

deactivate

ここからはCUDA12.8Pytorch 2.8環境でxformersを無理やりビルドしていきますので、いったんカレントディレクトリを離れてホームディレクトリに戻りましょう。

cd ~

xformersを無理やりビルドする方法は以下の記事で紹介しています。

あわせて読みたい
【CUDA12.8 対応 xformers】 CUDA12.8でxformersをビルドする方法 【Python】
【CUDA12.8 対応 xformers】 CUDA12.8でxformersをビルドする方法 【Python】

xformersのビルドができたらwhl ファイルが生成されると思いますので、それをコピーしてsd-scriptsディレクトリに移してください。

それができたら以下のコマンドを打ち、sd-scriptsディレクトリに移動します。

cd ~/sd-scripts

そして仮想環境を再度有効化します。

source venv/bin/activate

その後、以下のコマンドでビルドしたファイルを使ってxformersをインストールします。

pip install ビルドして生成されたファイル名.whl

LoRA学習をxformersを使って行う場合は先ほどの学習実行コマンドの末尾に

--xformers

を追加して実行すればOKです。

 関連サービス 

画像生成AIならPICSOROBAN

PICSOROBANは、ブラウザから手軽にStable Diffusionを使った画像生成が可能なクラウドサービスです。高価なPCやGPUを必要とせず、インストールやプログラミングも不要なため、テキストプロンプトを入力するだけで簡単に画像を生成できます。

CivitaiのモデルやLoRAをドラッグ&ドロップでアップロードして利用できるほか、ControlNet機能でキャラクターのポーズや線画を細かく制御することも可能です。画像生成を効率化するさまざまな拡張機能にも対応しており、これから画像生成AIを試したい方にもおすすめです。

参考サイト

えりるさんが気になっている商品紹介コーナー

UGREENの巻き取り式USB-C充電ケーブルです。巻き取り式のケーブルで100WのPD充電できるのが良いポイント。コンパクトなので持ち運びにも室内用、車内用にも便利ですし、100Wいけるので充電器を選べばスマホからノートパソコンまでなんでも充電できます。
ケーブル長さは36/60/82/100cmの4段階調整なので好きな位置で止められないのは注意ですが、ケーブルを束ねたりして管理するのはめんどくさいですし、それから解放されると考えるとえりるさん的にはかなり魅力的ですね(笑)

えりるについて
えりる
えりる
日本のどこかに生息する平成生まれの研究者。とっても理論家と思いきや気分屋さんでもある。基本的にめんどくさがり。修士(工学)を持っている。 Windows, Mac, Linuxの三刀流。
記事URLをコピーしました