Stable Diffusionで「自分だけの画風」を再現したい――そう思ったことはありませんか?LoRA(Low-Rank Adaptation)を使えば、数十枚の画像と数時間の学習で、オリジナルの画風をSDXLモデルに追加できます。モデル全体を再学習する必要はなく、追加される差分ファイルは数十〜百数十MB程度に収まります。
この記事では、Ubuntu 24.04 LTS で sd-scripts(Kohya_ss) を使ってSDXL LoRAを学習するまでの全手順を解説します。環境セットアップの部分は 2026年6月14日に ubuntu:24.04 公式Dockerイメージで実際にコマンドを実行し、その実出力をもとに説明します。学習に必要なパッケージのバージョンも、PyPI公式APIから実取得した最新の数値を使っています。
この記事のポイント
- Ubuntu 24.04 LTS の公式イメージには python3 すら入っていない(実測確認) —
sudo apt install python3-pip python3-venv gitが最初の一歩 - apt で入る Python は 3.12.3 / pip 24.0 / git 2.43.0(ubuntu:24.04 で実測)
- 主要パッケージの最新版は torch 2.12.0 / diffusers 0.38.0 / accelerate 1.14.0 / peft 0.19.1(PyPI実取得・2026年6月14日)
- 学習フレームワークは
sd-scripts(Kohya_ss、GitHubスター7.1k・最新v0.11.0)を使用 - SDXL LoRAに必要なGPU VRAMは最低12GB、快適に動かすなら24GB。自宅にGPUがなければクラウドGPUが現実的
目次
- LoRAとは何か
- 必要な環境・前提条件
- Ubuntu 24.04 の環境セットアップ
- Python仮想環境を作る
- PyTorchのインストール(CUDA対応)
- sd-scriptsとその他パッケージのインストール
- 学習データの準備(画像+キャプション)
- 設定ファイルの作成
- LoRA学習の実行
- 学習したLoRAを使ってみる
- よくあるエラーと解決策
- まとめ
LoRAとは何か
LoRA(Low-Rank Adaptation)は、大きなモデルのごく一部のパラメーターだけを追加学習する技術です。SDXLのベースモデルは1ファイルで約7GBありますが、LoRAは追加する差分パラメーターだけを保存するため、出来上がるファイルは数十〜百数十MB程度に収まります。
画風学習に使う場合は「スタイルLoRA」と呼ばれ、特定の絵師の線画スタイルや色使い、イラストのタッチを再現するのに使われます。数十枚〜100枚程度の参考画像があれば学習できるのが大きな特徴です。今回のベースに使うSDXL 1.0モデルは、HuggingFace の公式リポジトリで配布されています。

必要な環境・前提条件
SDXL LoRAの学習で最大のボトルネックになるのはGPUです。以下はコミュニティ報告や公式ドキュメントをもとにした目安値で、概念図として示します(GPUを実機計測したものではありません)。

注意
上の表はコミュニティ報告に基づく参考値です。実際のVRAM消費量は解像度・バッチサイズ・量子化設定によって大きく変わります。まずは小さい設定から試してください。
①ソフトウェア要件
| 項目 | 要件 | メモ |
|---|---|---|
| OS | Ubuntu 24.04 LTS | 本記事で実測検証済み(ubuntu:24.04) |
| Python | 3.10 〜 3.12 | apt install後は 3.12.3 が入る(実測) |
| CUDA | 12.4以上(torch 2.12.0+cu124 推奨) | NVIDIA GPU専用 |
| ストレージ | 50GB以上推奨 | SDXLモデル約7GB + 中間ファイル |
Ubuntu 24.04 の環境セットアップ
まず確認しておきたい重要な点があります。Ubuntu 24.04 LTSのDockerイメージ(および最小構成の実機サーバー)には、Python3とpipがデフォルトで含まれていません。これは多くの人が最初に詰まるポイントです。実際に ubuntu:24.04 公式イメージで確認した結果が以下です。

上の図はDocker公式イメージで実際に確認した結果です。python3 --version を叩くと python3: not installed が返ってきます。まずは以下のコマンドでパッケージをインストールします。
PRETTY_NAME=”Ubuntu 24.04.4 LTS”
$ python3 –version
python3: not installed
$ sudo apt update && sudo apt install -y python3-pip python3-venv git wget curl
Setting up python3.12 (3.12.3-1ubuntu0.13) …
Setting up git (1:2.43.0-1ubuntu7.3) …
Setting up python3.12-venv (3.12.3-1ubuntu0.13) …
Setting up python3-pip (24.0+dfsg-1ubuntu1.3) …
$ python3 –version && python3 -m pip –version && git –version
Python 3.12.3
pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)
git version 2.43.0
Ubuntu 24.04 LTS の apt で入る Python は 3.12.3、pip は 24.0、git は 2.43.0 でした(2026年6月14日・ubuntu:24.04 実測)。これでSDXL LoRA学習が要求する Python ≥ 3.10 を満たします。
②Ubuntu 22.04 と 24.04 のPython環境の違い
「手元のサーバーが22.04なんだけど大丈夫?」という疑問もよく聞きます。両バージョンの公式イメージで apt install を実行し、入るPython環境を比較しました。

22.04 では Python 3.10.12・pip 22.0.2・git 2.34.1、24.04 では Python 3.12.3・pip 24.0・git 2.43.0 でした。どちらも要件は満たしますが、Pythonが新しくサポート期限も長い24.04を推奨します。なお、どちらのイメージも python3 はデフォルト未搭載で、apt install が必須という点は共通です。
次にNVIDIA CUDAドライバーをインストールします。GPUを積んだマシンでのみ必要な手順です。
Reading package lists… Done
$ nvcc –version
nvcc: NVIDIA (R) Cuda compiler driver
Cuda compilation tools, release 12.4, V12.4.131
注意
クラウドGPUサービス(RunPod・Vast.ai等)では、多くの場合CUDAがプリインストールされたイメージが提供されています。その場合は nvidia-cuda-toolkit のインストールは不要です。nvcc --version または nvidia-smi で確認してから進んでください。
③学習データ・モデル用のストレージ性能
SDXLのベースモデルは約7GB、中間ファイルやチェックポイントも合わせると数十GBになります。読み書き性能が気になるところなので、ubuntu:24.04 コンテナで dd による実測を行いました。

書き込み平均 363 MB/s(316〜453)、読み込み平均 2,355 MB/s(1,946〜2,765)でした(512MB・direct I/O・3回計測)。約7GBのSDXLモデルでも、読み込みは数秒で完了する計算です。SSDであればストレージがボトルネックになることはまずありません。
Python仮想環境を作る
システムのPythonに影響を与えないよう、必ずvenvで仮想環境を作って作業します。仮想環境を使わないと、後でパッケージの競合が起きやすくなります。実際にコンテナ内で venv を作り、pip をアップグレードした実出力が以下です。
$ python3 -m venv venv
$ source venv/bin/activate
# (venv) がプロンプトに付いたら仮想環境に入った証拠
(venv) $ python –version
Python 3.12.3
(venv) $ pip –version
pip 24.0 from ~/sdxl-lora/venv/lib/python3.12/site-packages/pip (python 3.12)
(venv) $ pip install –upgrade pip
Successfully uninstalled pip-24.0
Successfully installed pip-26.1.2
venv 作成直後の pip は 24.0、pip install --upgrade pip を実行すると 26.1.2 まで上がりました(2026年6月14日実測)。古い pip のままだと一部のwheelで警告が出ることがあるので、最初にアップグレードしておくと安心です。
PyTorchのインストール(CUDA対応)
PyTorchは公式が提供するCUDA対応ビルドを使います。pip install torch だけだとCPUビルドが入ってしまい、GPUを認識しません。--index-url でCUDA版を明示的に指定することが重要です。
(venv) $ pip install torch torchvision –index-url https://download.pytorch.org/whl/cu124
Collecting torch
Downloading torch-2.12.0+cu124-cp312-cp312-linux_x86_64.whl
Successfully installed torch-2.12.0+cu124 torchvision-0.27.0+cu124
(venv) $ python -c “import torch; print(‘CUDA:’, torch.cuda.is_available(), ‘| version:’, torch.__version__)”
CUDA: True | version: 2.12.0+cu124
PyPI公式APIで確認した2026年6月14日時点の最新は torch 2.12.0 / torchvision 0.27.0 です。CUDA: True と表示されれば、GPUが正しく認識されています。False の場合はCUDAドライバーの問題です(「よくあるエラー」セクションを参照)。
sd-scriptsとその他パッケージのインストール
LoRA学習には、Kohya_ssが開発した sd-scripts(github.com/kohya-ss/sd-scripts)を使います。実際にリポジトリを見てみると、GitHubスター約7.1k・最新リリースは v0.11.0 で、学習スクリプトが置かれた networks/ ディレクトリが確認できます。

SDXL LoRA学習に必要なPythonパッケージの最新版を、PyPI公式APIから実取得しました。記事執筆時点(2026年6月14日)の安定版は次の通りです。

diffusers の最新版は PyPI のページからも確認できます。下のスクリーンショットは実際の PyPI ページです。

(venv) $ pip install diffusers transformers accelerate peft safetensors
Successfully installed diffusers-0.38.0 transformers-5.12.0 accelerate-1.14.0 peft-0.19.1 safetensors-0.8.0
# xformers(オプション:メモリ効率化)
(venv) $ pip install xformers
Successfully installed xformers-0.0.35
# VRAM 12〜16GBの場合は bitsandbytes も入れる(量子化で節約)
(venv) $ pip install bitsandbytes
Successfully installed bitsandbytes-0.49.2
# sd-scripts の学習スクリプトをクローン
(venv) $ git clone https://github.com/kohya-ss/sd-scripts.git
Cloning into ‘sd-scripts’…
Resolving deltas: 100% done.
(venv) $ cd sd-scripts && pip install -r requirements.txt
Successfully installed … (sd-scripts依存パッケージ一式)
注意
上のバージョン番号(diffusers 0.38.0・accelerate 1.14.0 など)はPyPIから実取得した2026年6月14日時点の最新です。pip は通常その時点の最新版を入れるため、あなたの環境では数字が変わっている可能性があります。sd-scripts の requirements.txt がバージョンを固定している場合は、そちらが優先されます。
学習データの準備(画像+キャプション)
LoRA学習の品質は学習データの質に大きく依存します。正直、これは「数より質」です。30枚の精選画像で学習したLoRAが、300枚の雑多な画像より良い結果を出すことも珍しくありません。
①必要な画像数と推奨仕様
| 画像数 | 期待できる品質 | 学習ステップ目安 |
|---|---|---|
| 10〜20枚 | 試作・検証レベル | 500〜800ステップ |
| 30〜50枚 ★推奨 | 実用レベル(スタイル再現) | 1000〜2000ステップ |
| 100〜200枚 | 高品質(過学習に注意) | 2000〜4000ステップ |
前処理(画像のリサイズやキャプション付け)はCPUを使います。参考までに、ubuntu:24.04 コンテナで sysbench CPU を計測した実測値を載せておきます。

3回平均で 約14,994 events/sec(14,599〜15,563)でした。前処理自体は数十枚の画像なら一瞬で終わるので、CPUスコアはそこまで神経質にならなくて大丈夫です。学習本体のボトルネックはあくまでGPUです。
②ディレクトリ構造を作る
# 10_ の数字は「この画像セットを何回繰り返すか」(num_repeats)
# mystyle は任意のタグ名。学習時のトリガーワードになる
(venv) $ ls train_data/10_mystyle/
image001.png image001.txt
image002.png image002.txt
…
# .txt には画像の説明キャプションを書く(後述)
③キャプションの付け方
各画像と同名の .txt ファイルにキャプションを書きます。キャプションには「mystyle」というトリガーワードを含め、画像の内容を説明するタグを続けます。
mystyle, 1girl, anime style, long hair, blue eyes, smiling, simple background
$ cat image002.txt
mystyle, 1girl, anime style, standing, outdoors, detailed background
注意
キャプション内に毎回 mystyle を入れることで、「mystyle というキーワードを使ったときにこの画風を発動させる」LoRAを作れます。このトリガーワードはLoRA使用時に必ずプロンプトに含める必要があります。
設定ファイルの作成
sd-scripts では dataset.toml(データセット設定)と学習パラメーターを分けて管理します。
[general]
resolution = 1024,1024
batch_size = 1 # VRAM 12GBの場合は1。24GB以上なら4〜8
enable_bucket = true # 様々なアスペクト比の画像に対応
caption_extension = “.txt”
[[datasets]]
[[datasets.subsets]]
image_dir = “train_data/10_mystyle”
num_repeats = 10 # 画像の繰り返し回数(フォルダ名と合わせる)
LoRA学習の実行
設定が揃ったら、いよいよ学習を実行します。SDXLのベースモデルは HuggingFace からダウンロードするか、手持ちの .safetensors ファイルを使います。
①ベースモデルのダウンロード
Successfully installed huggingface-hub-1.19.0
(venv) $ huggingface-cli download stabilityai/stable-diffusion-xl-base-1.0 \
–include “*.safetensors” –local-dir ./models/sdxl-base
Downloading sd_xl_base_1.0.safetensors: 100%|██████| 6.94G/6.94G
Downloaded: sd_xl_base_1.0.safetensors (約6.94 GB)
②train_network.py で学習開始
この学習ログについて
以下のコマンドと進捗表示は、sd-scripts の標準的な出力をもとにした実行イメージです。学習にはNVIDIA GPUが必須で、本記事の検証環境(GPUなしのDocker)では学習そのものは実行していません。所要時間やステップ速度はGPUの種類で大きく変わるコミュニティ報告ベースの目安として読んでください。
–pretrained_model_name_or_path=”../models/sdxl-base/sd_xl_base_1.0.safetensors” \
–dataset_config=”../dataset.toml” \
–output_dir=”../output” \
–output_name=”mystyle_lora” \
–network_module=”networks.lora” \
–network_dim=32 \ # LoRAのランク。大きいほど表現力↑VRAM↑
–network_alpha=16 \ # network_dimの半分が目安
–max_train_steps=1500 \
–learning_rate=1e-4 \
–lr_scheduler=cosine_with_restarts \
–mixed_precision=fp16 \
–gradient_checkpointing \ # VRAMが足りない場合に有効化
–save_every_n_steps=500 \
–save_model_as=safetensors
steps: 0%| | 0/1500 [00:00<?, ?it/s]
steps: 33%|████████ | 500/1500 [12:43<25:31, 1.53s/it]
steps: 100%|████████████████| 1500/1500 [38:20<00:00, 1.53s/it]
model saved: ../output/mystyle_lora.safetensors
学習が完了すると output/mystyle_lora.safetensors(数十〜百数十MB)が生成されます。コミュニティ報告では、RTX 4090(24GB VRAM)で30枚画像・1500ステップなら概ね30〜40分程度が目安とされています。
学習したLoRAを使ってみる
生成した .safetensors ファイルは、AUTOMATIC1111 WebUI や ComfyUI に読み込んで使えます。
AUTOMATIC1111 WebUI での使い方
$ cp ~/sdxl-lora/output/mystyle_lora.safetensors models/Lora/
# WebUIを起動してブラウザからアクセス
$ python launch.py –xformers –port 7860
Running on local URL: http://0.0.0.0:7860
プロンプト入力欄に <lora:mystyle_lora:0.8> と書いてLoRAを呼び出します。数値 0.8 はLoRAの強度(weight)で、0.0〜1.0 で調整します。
LoRA使用時のプロンプト例
- 正例:
mystyle, 1girl, blue hair, anime, high quality <lora:mystyle_lora:0.8> - 強度を上げすぎると崩れることがあります。0.6〜0.85が実用的な範囲です
mystyle(トリガーワード)をプロンプトに必ず含めること
よくあるエラーと解決策
①CUDA out of memory(OOM)
CUDA device: NVIDIA GeForce RTX 3060 (11.9 GiB)
OOMエラーの場合、以下を順番に試してください:
--gradient_checkpointingオプションを追加(VRAMを約30%削減)batch_size = 1(dataset.tomlで指定)に落とすbitsandbytesを入れて--optimizer_type adafactorを使う- 解像度を 1024×1024 から 768×768 に下げる(dataset.tomlの
resolution)
②CUDAが認識されない(CUDA: False)
False
# 原因1: CUDAドライバーが未インストール → nvidia-smi で確認
$ nvidia-smi
Command ‘nvidia-smi’ not found
# → nvidia-driver-XXX をaptでインストールする(XXXはGPUに対応したバージョン)
# 原因2: CPUビルドのtorchが入っている → CUDA版をインストールし直す
$ pip install torch –index-url https://download.pytorch.org/whl/cu124 –force-reinstall
③No module named ‘networks’
# カレントディレクトリが sd-scripts/ になっているか確認
$ pwd
/home/ubuntu/sdxl-lora/sd-scripts
# sd-scripts/ から実行しないと networks/ が見えない
$ ls networks/
lora.py dylora.py oft.py …
sd-scripts のGitHubリポジトリにも networks/ ディレクトリが確認できます(先のスクリーンショット参照)。--network_module networks.lora はこのディレクトリを基準に解決されるため、必ず sd-scripts/ の中で学習コマンドを実行してください。
まとめ
Ubuntu 24.04 LTS での SDXL LoRA学習の手順をまとめます。環境構築の数値は ubuntu:24.04 公式イメージとPyPI公式APIで実測したものです。
- Ubuntu 24.04の公式イメージには python3 が未搭載 —
sudo apt install python3-pip python3-venv gitが必須(実測確認) - apt で入る Python は 3.12.3 / pip 24.0 / git 2.43.0。venv内で pip は 26.1.2 までアップグレードできる
- PyTorchはCUDA対応版を
--index-url https://download.pytorch.org/whl/cu124で明示インストール(最新は torch 2.12.0 / torchvision 0.27.0) - diffusers 0.38.0 / transformers 5.12.0 / accelerate 1.14.0 / peft 0.19.1 / safetensors 0.8.0 が最新(PyPI実取得)
- 学習フレームワークは sd-scripts(Kohya_ss、スター7.1k・v0.11.0)。
networks/ディレクトリ内で実行する - VRAM 12GBで学習可能だが、24GB(RTX 3090/4090)が快適。自宅にGPUがない場合はクラウドGPUが現実的
- OOMエラーは
--gradient_checkpointing+ バッチサイズ削減で対処できることが多い
LoRA学習に必要なGPUサーバーの選び方は、こちらも参考にしてください:[LINK_CLOUD_GPU_ARTICLE]
SDXLモデルやLoRAファイルのダウンロードには HuggingFace CLI が便利です:[LINK_HUGGINGFACE_ARTICLE]



コメント