【RunPod】で”Kohya_ss”を使用して”LoRA学習”をする方法【3⃣応用編】

RunPodでKohya_ss

本記事では、クラウドGPUのRunPod内で、
”Kohya_ss”のテンプレートを使用して、”LoRA学習”をする方法を解説しています。

RunPodの基本的な使用方法については、こちらの記事で解説しています。

LoRA(Low-Rank Adaptation)は、Stable Diffusionのような大規模モデルに対して、低コストで特定の情報(キャラ・作風など)を学習させる軽量なファインチューニング手法です。

元のモデルの重みはそのままに、一部の重みだけを小さな「差分パラメータ(LoRA層)」として学習・保存します。
Kohya_ssはLoRAを学習するためのツール(GUI付きスクリプト群)で、Stable Diffusionベースの画像生成モデルに対して、

  • LoRA学習(Low-Rank Adaptation)
  • DreamBooth学習
  • Textual Inversion
  • フルファインチューニング

などを行うための多機能なトレーニングツールです。
特に以下の点でLoRA学習に向いています

特徴内容
GUI対応Web UIで初心者でも操作しやすい(Gradioベース)
柔軟な設定rank, alpha, learning rate, optimizerの選択など細かく設定可能
画像ラベリング機能キャプションの自動生成ツール(BLIP)などが統合されている
複数形式の保存.safetensorsDiffusers形式のLoRA保存に対応
RunPodやGoogle Colab対応クラウドでも動作させやすい構造になっている

Kohya_ssでLoRAを作る

LoRAを作成する流れ

  1. データセット(画像+キャプション)を用意
  2. Kohya_ssを起動(ローカル or クラウド)
  3. GUIまたはCLIでLoRA学習設定を調整
  4. 学習を実行し、LoRAモデル(.safetensors)を出力
  5. 生成ツール(AUTOMATIC1111など)でLoRAを使って画像生成
目次

RunPodでKohya_ss が安定動作するテンプレート

絞り込み検索Kohya

1. ashleykza/kohya:25.1.2

  • 特徴:公式的な kohya_ss GUI(WebUI)テンプレート
  • GPU対応:L4、T4、A10G、A100など幅広く対応
  • WebUI付きで、LoRAやDreamBooth、SDXLなど切り替え可能なUIタブ付き
  • rcloneやGoogle Drive連携も可能

実際に多くのユーザーが使用しており、安定実績あり

2. Kohya_ss GUI (by RunPod)(テンプレート一覧で表示)

  • RunPodが公式提供しているテンプレート。中身は基本的に ashleykza ベース
  • Kohya GUI(WebUI)とSD-scriptsがプリセットで入っている
  • 初心者向けに構成が整っており、特別なセットアップなしで開始可能
  • Volume(永続ストレージ)との相性も良い

3. 自分でDocker環境を構築

  • Ubuntu + Python + kohya_ss を自分でセットアップ
  • ただし、この場合は依存ライブラリ、CUDAバージョン、xformers、bitsandbytes なども自前で調整が必要

難易度高め。テンプレートの方が早くて安定。しかし…

Kohya_ss GUIなどのテンプレートを使っているRunPodのPod内でも、Pythonがインストールされていれば仮想環境(venv)を作成・使用することが可能です

比較 【テンプレート+venv】 vs 【自前Docker環境】

比較項目テンプレート + venv自前でDocker構築
手軽さ◎ GUIで起動・セットアップが簡単△ Dockerfile作成・ビルドが必要で敷居が高い
初期環境構築の速さ◎ ほぼ即使える✕ 数時間〜半日以上かかることも
カスタマイズ性△ テンプレートの中身を変えるのは難しい◎ 依存ライブラリ・Python・CUDA等も自由
安定性 / 再現性△ テンプレートにバグや仕様変更があることも◎ 自分で固定したバージョンで保てる
更新・管理✕ テンプレートの仕様が変わることがある◎ Dockerfileで再現可能
LoRAなどの学習◎ すぐにできる(設定済み)◯ 自分で環境構築必要だが柔軟
学習コスト(操作難易度)◎ Linux初心者でもGUI操作可✕ Docker・Linuxの知識が必須
トラブル発生時の対処△ GUIや内部設定がブラックボックス化しやすい◎ ログやDockerfileで直接把握できる
コストパフォーマンス◯ 共通ライブラリが最適化されていることも多い△ 自作環境の最適化は工夫が必要

避けた方が無難なテンプレート

  • ComfyUI + Kohya 両方入り テンプレート(例:Ultimate系)→ Kohya側が動かない、WebUI不具合などの報告あり
  • InvokeAI などが同梱されたテンプレート → Kohyaの動作に不要な要素が多く、不安定

Webターミナル(コマンド)が必要な時
基本動作は、GUIですが、以下の場合にはコマンド操作が必要になります。

必要な場合具体例
rcloneの初期セットアップrclone config をターミナルで打ってGoogle Drive認証を行うとき
ディレクトリの確認や手動操作データセットを所定の場所に移動させたいとき(例:mvcp コマンド)
追加ライブラリのインストール何かカスタムPythonスクリプトや依存関係を追加したいとき
エラー時の調査Web UIでうまく動かないときにログを確認したり、手動で起動を試みたり
  1. Kohya GUI を開く
  2. 学習用データセット(リサイズ済み+タグ付け済)を指定
  3. 必要であれば使用したいBaseモデル(例:SD1.5など)を読み込む
  4. 設定(学習率・epoch・出力先など)をGUIで入力
  5. Start Training!

テンプレートの中には、あらかじめ数種類のモデルが入っているものもあります。詳細は、各テンプレートのページで確認できます。
例:
下の画像は、ULTIMATE Stable Diffusion Kohya ComfyUI InvokeAIというテンプレートの内容です。

Kohya内容

必要なもの(基本)

rcloneでファイルをアップロードする方法は、こちらの記事をご覧ください。

RunPodでは、ファイル転送ツールの”rclone”が予め入っている事が多い為、rcloneの設定しておくと便利です。
rcloneを使用してファイルを転送する場合は、以下のファイルを、予めGoogleDriveなどのクラウドツールにアップロードしておきます。

アップロードするもの

種類内容保存場所(Pod内)例
ベースモデル
(必要であれば)
例:sd-v1-5-pruned.safetensors/workspace/stable-diffusion-webui/models/Stable-diffusion/
学習用画像フォルダリサイズ+タグ付け済/workspace/dataset/ など
テキストタグ(必要な場合).txtまたは.csv形式画像と同じフォルダ内

学習用画像フォルダ【画像とテキストタグ(必要な場合)】の作成方法については、こちらの記事をご覧ください。


アップロード方法(例:Google Drive連携)

Google Drive連携に必要なものGoogleアカウント(Gmailなど)← これだけでOK!

Google Driveをrcloneでマウントして、Pod内へファイルコピーする手順です。
永続ストレージ(Network Volume)を /workspace にマウント済みであることを確認してください。
workspaceターミナル、Web Terminal または SSHターミナル を開く

ターミナルの開き方

Podを起動 →Connect
→ 接続するタブWeb Terminalボタンもしくは、workspace:7777で開けます。

Connect(接続する)

こちらは、workspaceポート:7777のターミナル

ターミナルの開き方
workspaceターミナル

workspaceポート:7777のターミナルで作業すると、ファイル転送なども反映が見渡せて使いやすい。
対して、Webターミナルの画面は、広くて見やすい。
※後の解説では、Webターミナル内のスクショで解説します。

workspaceターミナル

初回セットアップ

初回のみ、以下のように rclone config を実行してDriveをマウントする必要があります

rclone config

ウィザード形式で進みますので、「Google Drive」→「認証」→「リモート名の設定(例:gdrive)」といった流れになります。

  1. ターミナルで rclone config を実行
  2. New remote(新しいリモート)を選択 → nを入力してEnter
  3. 名前(例:gdrive)を入力 → Enter
  4. ストレージタイプを選択:「Google Drive」を選択(リストから番号で選ぶ)入力してEnter
  5. クライアントIDなどは基本「空Enter」でOK(デフォルトで問題なし)
  6. scope1(Full access)を選択
  7. 「Use auto config?」→ n noと答える(RunPod内からはブラウザ開けないため)
  8. URLが表示されたら、それをブラウザで開く(URLが表示されない場合については後ほど解説。)
  9. Googleアカウントでログインして、アクセス許可を与える
  10. 認可が完了すると「認証コード」が表示される → それをPodのターミナルにコピペしてEnter
  11. Team Driveを使っていなければ「No」を選択(n
  12. 設定内容の確認 → y(Yes)で保存
Webターミナル
Webターミナル
トークンを貼り付け

Use auto config? ではなく、
Use web browser to automatically authenticate rclone with remote?
Say Y if the machine running rclone has a web browser you can use
Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes (default)
n) No
この問いについてRunPodのようにブラウザが使えない環境では「n(No)」を選ぶ必要があります。

Execute the following on the machine with the web browser (same rclone version recommended):
rclone authorize “drive” “eyJzY29wZSI6ImRyaXZlIn0”
この様なメッセージが表示された場合は、
【ステップ1】ローカルPCで rclone を実行する
ローカル環境(Windows/Mac/Linux) で、下のコマンドを実行してください

rclone authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
  • この "eyJzY29wZSI6ImRyaXZlIn0" は RunPod 側から表示されたものを そのままコピーして使います
  • 実行すると、ブラウザが開いて Google 認証が求められます。
  • 認証後、トークン(config_token)が返されます。

【ステップ2】RunPod側に戻って貼り付ける

ローカルで表示された config_token をコピーして、RunPod 上のconfig_tokenそのまま貼り付けて Enter します。これで Google Drive との連携が完了します!

ポイント

  • 認証の際に「rclone」があなたのGoogle Driveへのアクセス権限を一時的にもらう形です
  • 一度認証しておけば、Podの環境内で gdrive: のようにDriveへアクセスできます
  • 特別なAPIキーなどは 不要です。(上級者向けの手動設定時以外)

/workspace フォルダを開く方法

方法1:Web Terminal(ウェブターミナル)で開く方法

  1. RunPodのコンソールにログイン
  2. 対象のPodを開く
  3. Terminal」を開く(※「Full access all files」でOK)
  4. ターミナルが開いたら、以下のコマンドを入力
cd /workspace
ls

これで /workspace ディレクトリの中身(アップロードされた画像など)が確認できます。
さらに階層がある場合は、

ls -l

などでフォルダを調べて、中に入っていけます。

方法2:ComfyUI や Kohya の UI 内で確認する方法

テンプレートによっては、UI上からファイル一覧を確認できるようになっています。

  • Kohya UI:一部のバージョンでは、データセット選択時に /workspace 配下をたどって選べます。
  • ComfyUI:ノードのファイル選択時に /workspace をルートにたどれる場合があります

注意点

  • /workspaceNetwork Volume(永続ストレージ)をマウントしている場所であることが多い。
  • Podを削除しても /workspace にデータがあれば残るので、ここをうまく活用するのがポイントです。

アップロード用コマンド例

Google Drive → Pod(学習データgdrive:dataset/my-lora-dataset//workspace/dataset/ にコピーする場合)

rclone copy gdrive:dataset/my-lora-dataset/ /workspace/dataset/ -P

-P はコピー進行状況を表示するオプション
Google Drive内のパスはあなたのDrive構造に合わせてください。

Google Drive → Pod(ベースモデルをコピー(例:sd-v1-5-pruned.safetensors))

rclone copy gdrive:ai-models/sd-v1-5-pruned.safetensors /workspace/stable-diffusion-webui/models/Stable-diffusion/ -P

Pod → Google Drive(保存・バックアップなどに)

rclone copy /workspace/output gdrive:LoRA_results -P

テンプレート内のターミナル(Terminal)でそのまま

  • rclone config ← Google Driveと接続する
  • rclone copy ← DriveとPod間でファイルコピー
  • rclone ls ← Drive内のファイル確認

といったコマンドがそのまま使えます

  • Kohya GUIを使えば、フォルダパスをGUI上で選ぶだけでOKです
  • InvokeAI や ComfyUI は「生成用UI」なので、LoRA学習時は基本的に Kohya の機能だけを使う形になります。

確認コマンド

rclone version

↑これを打つと、バージョンが表示されて rclone が入っていることが確認できます。

  • 設定ファイルにあるリモート名を正しく使うことが重要です。
  • rclone listremotes コマンドでも、登録済みリモート名一覧が見られます。
rclone listremotes

Kohya GUIでの LoRA Training の始め方

Pod内のブラウザからアクセスするタイプか、ローカルのブラウザで http://<PodのIP>:<ポート番号>/ にアクセスしてGUIを開きます。

Kohya_ss 起動後にまず確認しておくと良いこと

まずは、GUIが正しく表示されているか確認します。

  • メニューがすべて表示されているか(LoRA Training、Dreambooth、Data preparation など)
  • ボタンがクリックできるか

起動時におかしいと思ったら

  • Podを再起動(Stop → Start)で改善されることも多いです。
  • KohyaのGUIが崩れていたら、ブラウザをリロードまたはシークレットウィンドウで開き直すのも効果的です。
  • Web Terminalnvidia-smi を実行して、GPUが認識されているか確認もできます。

ワークスペース内で保存すべきファイルの種類

フォルダ入れるべき内容
/workspace/train_data/学習用画像とキャプション(.png + .txt
/workspace/models/.safetensorsなどのStable Diffusionモデル
/workspace/outputs/学習結果(LoRAなど)
/workspace/kohya_ss/Kohya GUI本体・設定ファイルなど

推奨フォルダ構成(例)

/workspace/
├── kohya_ss/                         ← Kohyaの本体
    ├── traindata/15_cat2025                       ← 学習用画像フォルダ(ここをImage folderに指定)
    │              ├── dog_001.png
    │              ├── dog_001.txt
    │              └── ...
    ├── models/                           ← Stable Diffusionなどのベースモデル
    │   ├── anything_v3.safetensors
    │   └── ...
    ├── outputs/                          ← 学習結果の出力先(LoRAファイルなど)
    │   ├── lora_dog.safetensors
    │   └── ...

1. LoRA Training タブを選択

  • Kohya GUIのメニューで「LoRA」または「LoRA Training」タブをクリック。

2. 基本設定を入力

項目チェック内容
学習画像のパス(/workspace/your_dataset など)
ベースモデル(例:/workspace/stable-diffusion/v1-5-pruned.safetensors
Output directory/workspace/outputs など永続化できる場所
EpochBatch size最小値でテスト(例:Epoch: 1、Batch: 1)もアリ
項目説明
Pretrained model name or pathベースモデル(例:/workspace/stable-diffusion/v1-5-pruned.safetensors
Training data directory学習用画像のフォルダパス(例:/workspace/train_data※画像の入っているフォルダの親フォルダ
Output directory出力先(例:/workspace/output/lora_model/
Output name任意の名前(例:15_cat2025学習回数_outoput名
Epochs学習回数(例:10〜20)
Batch size例:2〜4(VRAMに応じて調整)
Learning rate例:0.0001〜0.0005
  • 出力フォルダ(Output directory)
    → モデルや学習済みのファイルの保存先パスを指定します。
    /workspace/output/runpod-volume/models など永続化される場所がおすすめ。
  • エポック数(Epochs)
    → ここに希望のエポック数を入力します(例:10や20など)。
  • バッチサイズ(Batch size)
    → GPU VRAMに合わせて調整(例:4や8)。
    → 大きいほど高速ですがメモリ消費が増えます。
  • 学習率(Learning rate)
    → 通常は 0.0001〜0.0005あたりから試すことが多いです。
  • その他
    → 学習ステップ数、保存間隔、ログ出力フォルダなども設定可能な場合があります。

3. 拡張設定(必要に応じて)

  • Text Encoderの有無(絵柄重視ならONが多い)
  • 学習ログ保存先
  • 正則化画像の設定など

4. スタート!

  • 最後に「Start Training」や「Train」ボタンを押すと開始されます。

4. 設定を保存・反映

  • GUIによっては「Apply」や「Save Settings」ボタンがあります。
  • 設定を変えたら、必ず「Start Training」など学習開始ボタンを押して反映させてください。

テンプレートの更新やPod削除時に備えて

  • 永続ストレージ(/runpod-volume)に移動しておけば、次回も使い回せます。
  • 一時保存のままだとPod削除時に消えるので、必要なファイルは手動コピーしておくと安心です
cp -r /workspace/models /runpod-volume/
cp -r /workspace/outputs /runpod-volume/

/workspace/models フォルダを、/runpod-volume/ に再帰的(-r)にコピーします。
/workspace/outputs フォルダを /runpod-volume/ にコピーします。

コピー完了後の構成(永続ストレージ内)

/runpod-volume/
├── models/
│   ├── anything_v3.safetensors
│   └── ...
├── outputs/
│   ├── lora_dog.safetensors
│   └── ...

毎回コピーするのが面倒な場合の対策

方法①:最初から /runpod-volume/ に保存するように設定を変更

  • KohyaのGUIで「出力フォルダ(output directory)」を
    /workspace/outputs ではなく /runpod-volume/outputs にする。
  • モデルの保存先や設定ファイルの読み込み元を /runpod-volume/ にする。

こうすれば、毎回コピーせずに「最初から永続領域に保存される」状態になります。

方法②:コピー処理をシェルスクリプトにして使い回す

#!/bin/bash
cp -r /workspace/models /runpod-volume/
cp -r /workspace/outputs /runpod-volume/

↑こんな内容を save_to_volume.sh のような名前で保存しておけば、次回からは

bash save_to_volume.sh

と1コマンドで実行できます。

フォルダ名特徴
/workspacePod停止・削除時に中身が消える(一時領域)
/runpod-volume永続ストレージ。Podを再起動しても残る

動かない場合

  • Volumeがいっぱいになっていないか確認
  • config.yamlなどのaccelerate設定ファイルが壊れていないか
  • ブラウザのキャッシュやVPNも確認(WebUIが出ない原因)
ポイント内容
絶対パスで指定する相対パス(例:../imagesなど)より安定します。
パスにスペースがないことを確認スペースがあると読み込みエラーになることがあります。
画像とcaption(.txt)がペアになっているか確認LoRA学習では .png または .jpg に対して .txt のキャプションが必要な場合があります(学習形式による)。
  • URLをコピーしました!
目次