RunPod上で一度作ったら安定して LoRA学習できる Kohya_ss 環境を作る方法

当記事では、RunPodで My Templatesを作成して、一度作ったら安定して LoRA学習できる Kohya_ss 環境を作る方法について書いています。

今回使用するのは、Runpod Pytorch 2.2.0です。

Runpod Pytorch 2.2.0
目次

Runpod Pytorch 2.2.0

Runpod Pytorch 2.2.0内容

runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04

PyTorch Environment

Ready-to-use PyTorch + Python development environment with JupyterLab and common development tools pre-installed:

  • Jupyter Notebook 6.5.5
  • JupyterLab with widgets and extensions
  • Pre-configured workspace directory
  • SSH access
  • NGINX server
  • Development tools

Ports

ApplicationPortType
Jupyter8888HTTP
SSH22TCP
PyTorch 2.2.0(CUDA12.1)の選択理由

Kohya_ss の依存ライブラリは以下が重要

  • xFormers
  • bitsandbytes
  • torchmetrics
  • accelerate
  • transformers

これらのうち xFormers と bitsandbytes が「最新PyTorchに追いつくのが遅い」
そのため、PyTorch 2.4 や 2.6 では以下のリスクがあります:

  • xFormers の対応 wheel が無い or 不安定
  • bitsandbytes のエラー発生率が高い
  • SD / LoRA 学習時の VRAM 消費が増える
  • 学習途中エラー(gradient checkpointing 周り)

PyTorch 2.2 系は Stable Diffusion の学習環境として安定

事前準備

  • Dockerアカウントと、DockerDesktop
  • Gitが無い場合はインストールしておきます。
  • VSCodeも用意しておきます。

Kohya_ss用のDockerfile例

ドキュメントを参考に、Kohya_ss用のDockerfileを作成する。

https://docs.runpod.io/pods/templates/create-custom-template

リポジトリの作成

手順

  1. https://hub.docker.com/Repositories タブをクリック
  2. 右上の Create Repository をクリック
  3. Repository name: (例)kohya-template
  4. Visibility: Public(公開)などを選択
  5. Create をクリック

プロジェクトフォルダ作成

C:\Users\OwnerならDocuments に移動してフォルダを作成します。

cd Documents

(例)フォルダ名my-custom-pod-templateの場合

mkdir my-custom-pod-template
cd my-custom-pod-template

Enterで作成します。

Kohya_ss のダウンロード

git clone https://github.com/bmaltais/kohya_ss.git

Dockerfile の作成方法①

notepad Dockerfile

VSCodeや、メモ帳で作成したファイルを貼り付けて保存します。

Dockerfile の作成方法②

フォルダmy-kohya-template 内に Dockerfile を作成

Kohya_ss用のDockerfileを作成(メモ帳かVSCodeで)

(例)Kohya_ss用のDockerfileを作成

FROM runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04
ENV PYTHONUNBUFFERED=1
WORKDIR /

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
    python3-tk python3-venv git wget curl rsync jq && \
    rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir jupyterlab

# イメージ内に /kohya_ss を作成
RUN git clone https://github.com/bmaltais/kohya_ss.git /kohya_ss && \
    test -d /kohya_ss || exit 1

RUN cd /kohya_ss && bash setup.sh

RUN test -f /kohya_ss/gui.sh || exit 1

# ログディレクトリ作成
RUN mkdir -p /workspace/logs

# 起動スクリプト(同期機能付き)
RUN printf '#!/bin/bash\nset -e\n\n# 初回またはバージョン更新時に同期\nif [ ! -d "/workspace/kohya_ss" ] || [ ! -f "/workspace/kohya_ss/.synced" ]; then\n    echo "Syncing kohya_ss to /workspace..."\n    rsync -rlptDu /kohya_ss/ /workspace/kohya_ss/\n    touch /workspace/kohya_ss/.synced\n    echo "Sync complete!"\nfi\n\n# Jupyter起動\njupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --LabApp.token="" --ServerApp.root_dir=/ > /workspace/logs/jupyter.log 2>&1 &\n\nsleep 10\n\n# Kohya_ss起動(/workspace版を使用)\ncd /workspace/kohya_ss\nbash gui.sh --listen 0.0.0.0 --server_port 3013 2>&1 | tee /workspace/logs/kohya_ss.log\n' > /start.sh && \
    chmod +x /start.sh

EXPOSE 3013 8888

CMD ["/start.sh"]
docker build --no-cache -t リポジトリ名 .
docker push リポジトリ名

start-kohya.sh の作成

PowerShell で作業フォルダで

my-kohya-template 内に start-kohya.sh を作成する

#!/bin/bash
cd /workspace/kohya_ss
bash gui.sh --listen 0.0.0.0 --server_port 3013
保存時の注意
  • ファイル名は start-kohya.sh
  • 「ファイルの種類」は すべてのファイル にする
  • 文字コードは UTF-8
  • 行末は LF(Unix) にする(Windows メモ帳は CRLF になるので注意。VSCode などなら右下で LF に変更できます)
実行権限を付与

Dockerfile 内で自動で付与する場合は不要

docker run --rm -it -v ${PWD}:/workspace ubuntu bash -c "chmod +x /workspace/start-kohya.sh"

ビルド

フォルダ内に移動して

(例)フォルダ名my-kohya-templateの場合

cd C:\Users\Owner\Documents\my-kohya-template

PowerShell 上で

docker build -t my-kohya-template .

二回目以降はキャッシュをクリアした方がいい

(例)Runpodで sakasa15/kohya-runpod:v1 を使用。

docker build --no-cache -t リポジトリ名 .
docker push リポジトリ名

ビルドが成功すると、my-kohya-template というイメージが作成される

  • -t my-kohya-template はイメージ名(自分の好きな名前でもOK)
  • 最後の . は「このフォルダの Dockerfile を使う」という意味
  • ビルドには 3〜10 分ほどかかる
ユーザー名の確認方法

Docker Hubにログインして、ユーザー名を確認してください。
右上のアイコンをクリック → プロフィールを見ると、正確なユーザー名が表示されます。

最後に以下のようなメッセージが出れば成功
“` Successfully built xxxxxxxxx Successfully tagged ユーザー名/kohya-template:latest

Docker Hubにプッシュ

ビルドが完了したら、次はDocker Hubにプッシュする

docker push yourusername/kohya-cuda12:latest

docker push yourusername/イメージ

Enterを押すと、アップロードが始まります。

latest: digest: sha256:xxxxx size: xxxxと表示されれば完了です!

その後、RunPodでテンプレートを作成して、Podをデプロイする。

(例)

docker tag my-kohya-template yourusername/イメージ名+Vr
docker push yourusername/イメージ名+Vr

DockerHub にアップロードして RunPod や他マシンでも利用可能

Docker Hubにログイン(できない時)

docker login
ユーザー名とパスワードを入力

Username: “` ここで `ユーザー名` と入力してEnter
次にパスワードを聞かれる
Password: “` ここでDocker Hubのパスワードを入力してEnter

RunPod Registry 用にタグ付け

(例: RunPod ユーザー名が abc123 の場合)

docker tag my-kohya-template registry.runpod.io/abc123/イメージ名+Vr

RunPod にログイン

docker login registry.runpod.io

Push(アップロード)

docker push registry.runpod.io/abc123/イメージ名+Vr

コンテナの起動(GUI 起動)

docker run --gpus all -p 3013:3013 イメージ名

RunPodでのテンプレート作成

ステップ1: テンプレート作成画面を開く

New Template をクリック


ステップ2: 以下を入力

Template Name:

イメージ名

Container Image:

username/イメージ名+Vr

Container Disk:(例)

60

Expose HTTP Ports:

3013

Expose TCP Ports: 空欄

Environment Variables: 空欄

Container Start Command: sleep infinity

Docker Command: 空欄


ステップ3: 保存

Save Template をクリック

最後に以下のようなメッセージが出れば成功

Running on local URL:  http://0.0.0.0:3013

Name: 任意の名前
Public Template:(共有したい場合はチェックを入れる)
Type: Custom
Compute Type:
Container Image: ここでは、runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04
Container Start Command:
Container Disk: ここでは60GB
Volume Mount Pathk:
HTTP Port:下の表を参照(start.sh で WebUI を起動)
Environment Variables:DISABLE_SYNC=1

DISABLE_SYNC=1 の設定場所とタイミング

設定場所

RunPod では Pod 起動前に環境変数として設定します。

  • GUIから設定する場合
    1. RunPod ダッシュボードで Pod 作成画面を開く
    2. Environment Variables(環境変数)欄に
DISABLE_SYNC=1

と入力
Key: DISABLE_SYNC
Value: 1 (有効化)

Pod 起動時にこの環境変数を設定すると、Kohya_ss や LoRA学習中の ネットワークボリューム同期による遅延・失敗を防げる

安定させるポイント

  1. ベースコンテナの選定
    • CUDA + PyTorch + Python が揃ったものを選ぶ
    • 例: runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04
    • Kohya_ss は GPU メモリを大きく使う
  2. 永続ストレージ(Volume Disk)を必ず設定
    • /workspace をマウントしてモデルや学習済みデータを保存
    • DISABLE_SYNC=1 を設定すると学習処理が高速化(Pod内部のみ同期)
  3. 起動スクリプトを作る
    • start.sh で依存ライブラリのインストール → Kohya_ss GUI 起動
    • GUI ポートは 3000 など任意で指定
    • 初回だけ依存ライブラリのインストールに時間がかかるので注意
  4. My Templates に保存
    • これで安定した LoRA 学習環境を再現可能
  5. 学習時の注意
    • batch size や resolution は VRAM に応じて調整
    • rank / network dimension など大きくするとメモリ不足になりやすい
よかったらシェアしてね!
  • URLをコピーしました!
目次