【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を起動する方法は以下の記事で解説しています。

この記事ではその問題を何とかして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
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のGitHubリポジトリ から必要なファイルをとってきます。
このリポジトリのREADMEにインストール方法が記載されていますが、その方法だけだと動作しません。(罠)しかもREADMEは英語です。
以下のコマンドでリポジトリをクローンします。
git clone https://github.com/pyenv/pyenv.git
このあと起動前の事前準備としてgcc, zlib, OpenSSLをセットアップしていきます。
gcc、zlibのインストールはそれぞれ以下のコマンドでできます。
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のインストール
それでは、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
がインストールされていると思います。これとtorchvision
をCUDA 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.8
でsd-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.8
, Pytorch 2.8
環境でxformers
を無理やりビルドしていきますので、いったんカレントディレクトリを離れてホームディレクトリに戻りましょう。
cd ~
xformers
を無理やりビルドする方法は以下の記事で紹介しています。

xformers
のビルドができたらwhl
ファイルが生成されると思いますので、それをコピーしてsd-scripts
ディレクトリに移してください。
それができたら以下のコマンドを打ち、sd-scripts
ディレクトリに移動します。
cd ~/sd-scripts
そして仮想環境を再度有効化します。
source venv/bin/activate
その後、以下のコマンドでビルドしたファイルを使ってxformers
をインストールします。
pip install ビルドして生成されたファイル名.whl
LoRA学習をxformers
を使って行う場合は先ほどの学習実行コマンドの末尾に
--xformers
を追加して実行すればOKです。
参考サイト
- Teruru and Robin YasuLab: 日本一わかりやすいLoRA学習!sd-scripts導入から学習実行まで解説!東北ずん子LoRAを作ってみよう!【Stable Diffusion】
https://www.youtube.com/watch?v=N1tXVR9lplM&t - stack overflow: ImportError: numpy.core.multiarray failed to import
https://stackoverflow.com/questions/20518632/importerror-numpy-core-multiarray-failed-to-import - sd-scriptsのGitHubリポジトリのコミュニティページ
https://github.com/kohya-ss/sd-scripts/issues/1038