OneTrainerの使用方法についてこの記事で説明します。
※ こちらで配布しているバッチファイルにてRadeonでOneTrainerが使用できます。
目次
OneTrainerを採用した理由
筆者はLoRAの作成に関しては日本で人気の高く情報量の多いkohya_ssをずっと使ってきました。
そのため、可能ならば今回もkohya_ssを使いたかったのですが、以下の理由でOnetrainerを採用しています。
1.Windows・pipのROCmが唯一対応しているPython3.12に対応→数あるTrainerの中でもOnetrainerくらいしか筆者は知りません。
2.Zludaへの対応実績があるなど、AMD GPUとの親和性が高い唯一のTrainer
ということです。
kohya_ssのほうが優れている点としては、kohya_ssはsd-scriptのGUIフロントエンドのため、操作に慣れたらsd-scriptへ移行できるという点です。
GUIの操作性に関してはどちらも使いづらいところがあって一概にどちらが優れているとはいいがたいですね。
また日本語での解説が多く情報量が圧倒的です。
日本でLoRA作成といえばイコールkohya_ssといっても過言ではありません。
逆にOnetrainnerが優れているところはGUIがこなれているところですが、この感じ方に関しては個人差もあると思います。
欠点は日本語での情報がほとんど存在しないことです。
基本的にLoRA作成は慣れている人向けのものですから、日本語でなされているわずかな解説も簡素なものが多いです。
前準備
準備として、
Windows11:「設定-システム-詳細設定」から開発者モードをオンにしてください。
※ オンにしなくても動作はしますが、警告が出る場合があります。
また、以下のURLから「sd_xl_base_1.0.safetensors」をダウンロードしておいてください。
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main
サンプル用LoRAの作成に使います。
解説されなくても使い方はわかるという方には必要ないですが、そういう方は日本ではあまり多くないと思います。
RadeonでLoRAを作成したい場合は面倒でもこの解説の手順の通りに一度やってみることをお勧めします。
※ サンプル用の画像は「\misc」の中の圧縮ファイルの中に含まれており、セットアップすると自動的に展開されます。
セットアップ方法
「OneTrainer.bat」をダブルクリックしてください。

初回のセットアップの時には上のメニューが表示されますので該当するGPUの番号を選択して[エンター]キーを押してください。
※venvを削除しても表示されますのでvenvのみを削除してvenv環境のみを再セットアップすることもできます。
自動でセットアップが始まります。
各GPUの具体的な機種やモジュールの対応状況は元のページをご覧ください。

セットアップがすべて終わると上のメニューが表示されます。
何もしないと5秒で自動でonetrainerが起動しますので、起動するだけなら放置してもOKです。
onetrainer本体のアップデートをする場合は5秒以内に[2]を押してください。
アップデートが始まります。時々アップデートをするようにしてください。
アップデートが終わるとまた上のメニューが表示されます。
※ 画像をクリックすると別Window・タブで拡大します。
onetrainerが起動すると上の画面が表示されます。ちなみにブラウザではなく、普通のアプリのように独自のWindowが表示されます。
いったんここで、onetrainerの画面を閉じてください。
インストールされたフォルダを開いてください。
「onetrainer」と「ot-dat」という二つのフォルダがあるはずです。
「前準備」でダウンロードした「sd_xl_base_1.0.safetensors」を「ot-dat\models」に移動させてください。
コピーが終わったらもう一度Onetrainerを起動してください。

onetrainerの左上のメニューに以下の部分がありますので赤丸で囲った部分をクリックしてください。

上のような一覧が表示されます。

下の赤丸で囲った逆三角形の部分を「AOI_Samples」が出るまでクリックしてください。
出たら「AOI_Samples」を選択してください
このProfileはわたくしが作成したSamples画像用のプロファイルです。
※ 画像をクリックすると別Window・タブで拡大します。
読み込むと上のように表示されるはずです。
しかし、残念ながらそのままでは使えませんので変更してください。
作業フォルダなどの変更
まずメインメニューの「general」から
「WorkSpace Directory」の「D:/ai_imagen/ot-dat/ws」を自分の環境に合わせて変更してください。
「[あなたのインストールパス]/ot-dat/ws」になります。
入力欄の横にある赤線で囲った部分をクリックするとフォルダーを参照できます。
同じように「WorkSpace Directory」のすぐ右横にある「Cache Directory」も自分の環境に合わせて変更してください。
学習用モデルとLoRAアウトプットファイルの設定
メインメニューの「general」の右横にある「model」をクリックして選択してください。
「Base Model」の「D:/ai_imagen/ot-dat/models/sd_xl_base_1.0.safetensors」を先ほどと同じように自分の環境に合わせて変更してください。
「Model Output Distination」も同様に変更してください。
「Model Output Distination」は作成するLoRAの名前も指定しますので、新しいLoRAを作るときは必ず名前を変更してください。
学習画像の追加
個人的にはここが一番のつまづきポイントでした。
メインメニューの「concepts」をクリックしてください。
「学習画像=concepts」です。
上の赤丸をつけた部粉をクリックしてください。
すると上の大き目のアイコンが追加されますので、こちらをクリックしてください。
※ 画像をクリックすると別Windows・タブで拡大します。
上のメニューが表示されます。
※ 画像をクリックすると別Windows・タブで拡大します。
上のように入力してから一番下のOKをクリックしてください。
Pathは「[あなたのインストールパス]\ot-dat\train\AOI_Sample」になります

設定が終わると内部の画像がアイコンになり、上のように表示されるはずです。
参考:concepts画像メニューの説明

- 削除
- 追加
- 有効/無効切り替え
学習の設定

trainingをクリックしてください。

「AOI_Sample」の設定ではOptimizerが「ADAMW」になっています

RDNA2/3/4の場合、「ADAMW_8BIT」に変更してください。
※ Radeon RX6000シリーズdGPU(APUは含みません)、Radeon RX7000シリーズdGPU(APUは含みません)、Radeon 890M、Radeon 8000Sシリーズ、Radeon RX 9000シリーズdGPUのみ対応です。
学習開始

Window左下にある緑色のボタン「Start Training」をクリックすると学習が始まります。
お疲れさまでした。
今回の設定は3000stepsです。RX9070XT 16GB=RDNA4(bitsandbytesあり)で約2時間30分ほどかかりました。
LoRA学習 パラメータ解説まとめ
先にお断りしておきますが、LoRAを作られている方はすでに多くの自分流を持っていると思います。
この解説は初級者の方が自分なりの基準を見つけるための道しるべとして記されています。
多くの方の「自分流」を否定するものではないのでその旨ご了承ください。
1. ステップ数の基本計算式
総ステップ数 = floor(画像枚数 × リピート数 / バッチサイズ) × エポック数
floor() = 端数切り捨て(余った画像は1ステップに満たないため破棄)
※ リピート数=メインメニューの「concepts」のアイコンをクリックしてメニュー内で設定、バッチサイズ=メインメニューの「trainnig」内の[Local batch size]で設定、エポック数=メインメニューの「trainnig」内の[epochs]で設定です。
バッチ回数という独立したパラメータは存在しない。
「1ステップ = 1回のバッチ処理」であり、バッチ回数 = ステップ数そのもの。
2. 各パラメータの役割と影響
| パラメータ | ステップ数への影響 | 学習内容への影響 |
|---|---|---|
| 画像枚数 | 増えるほどステップ増 | データの多様性に影響 |
| リピート数 | 増えるほどステップ増 | 過学習リスク増(連続出現) |
| バッチサイズ | 増えるほどステップ減 | 勾配の安定性に影響 |
| エポック数 | 増えるほどステップ増 | 過学習リスク増 |
max_train_steps | 強制上限(エポックより優先) | 途中打ち切りが起きる |
gradient_accumulation_steps | 影響しない | 実効バッチサイズが増加 |
sd-scripts / kohya_ss 固有の要素
| パラメータ | 影響 |
|---|---|
--gradient_accumulation_steps N | N回分蓄積してから更新。ステップカウントは変わらないが実効バッチサイズが batch_size × N になる |
--max_train_steps | エポック計算を無視して強制上限。エポック指定より優先 |
--min_bucket_len / --max_bucket_len | バケット分割により理論値より若干少なくなる場合がある |
| kohya_ss フォルダ名 | 10_mycharacter/ の数字がnum_repeatsに対応 |
3. リピートとエポックの違い
「リピート = 正則化画像用」は半分誤解
sd-scriptsのフォルダ構成に由来する誤解。リピートは学習画像・正則化画像どちらにも機能する汎用パラメータ。
train_data/ 10_mycharacter/ ← 学習画像(リピート10) reg_data/ 1_person/ ← 正則化画像(リピート1)で数を揃える使い方が広まった
ソース:https://github.com/kohya-ss/sd-scripts/blob/main/docs/config_README-en.md より
num_repeatsの説明として「Specifies the number of repeats for images in a subset. This is equivalent to--dataset_repeatsin fine-tuning but can be specified for any training method」と明記されています。「any training method」=学習画像にも正則化画像にも等しく適用される汎用パラメータだということが公式に書かれています。
リピートとエポックの挙動の違い
| リピート増加 | エポック増加 | |
|---|---|---|
| 同画像の出現タイミング | 1エポック内で連続しやすい | 全画像一巡後に再登場 |
| 過学習リスク | 比較的高い | 比較的低い |
| ステップ数の増やし方 | 1エポックあたりを増やす | エポック数で積み上げる |
「エポックを増やすほど効率が落ちる」について
半分正しいが正確には「適切な総ステップ数を超えたことで学習余地が減る」のが原因。エポック数自体が原因ではない。
4. Learning Rate Warmup Steps
「効率を上げる」のではなく「学習序盤の破滅的な更新を防ぐ安定装置」。
- 結果として学習が安定し、間接的に効率的になる
- LoRAは総ステップ数が少ないため、Warmupの割合を大きくしすぎると逆効果
- 目安は総ステップ数の5〜10%

5. Warmup Stepsと各パラメータの関係
「warmupが1エポック以内に完了するように、1エポックのステップ数を設定する」
つまり条件式は:
warmup_steps ≤ steps_per_epoch warmup_steps = total_steps × 0.05〜0.10 steps_per_epoch = 画像枚数 × リピート / バッチサイズ
なぜ「エポックをまたぐwarmup」が問題か
OneTrainerのLRスケジューラはエポック境界で挙動が変わる実装が多く、warmupがエポック1をまたいでリセット/再計算されるとwarmupが機能しているように見えて実際には毎エポック序盤にLRが暴れるという状況になり得ます。
30枚・batch=2での具体計算
| リピート | steps/epoch | warmup10%・500総ステップなら |
|---|---|---|
| 1 | 15 | warmup=50ステップ → 3エポックまたぐ ❌ |
| 5 | 75 | warmup=50ステップ → 1エポック以内 ✅ |
| 10 | 150 | 余裕あり ✅ |
結論
「warmup完了 ≤ 1エポック」を満たすようにリピートを決め、その後エポック数で総ステップを調整する、という順番が正しい設計の流れです。
6. Dataloader Threads
「一度に学習する枚数」ではなく、CPUによる次バッチの先読み並列数。学習内容には一切影響しない純粋なI/O最適化。
GPUが計算中 → CPUが次バッチを並列で先読み → GPUの待ち時間を削減
| 副作用 | 内容 |
|---|---|
| CPUメモリ消費増 | 先読み分がRAMに乗る |
| CPU負荷増 | Augmentation等が並列処理される |
| 再現性の低下 | 処理順が不定になりシードが完全一致しない |
| 多すぎると逆効果 | コンテキストスイッチのオーバーヘッド |
小規模なLoRA学習では2〜4で十分。
7. OneTrainer固有の設定
Balancing フィールド
Concept設定画面の Balancing フィールドで、数値とモードをセットで指定する。
※ 「OneTrainerメインメニュー」で「Concepts」を選択→「Conceptsアイコン」をクリックすると設定画面が現れるので「generalメニュー」の中にあります。
| モード | 数値の意味 | 挙動 |
|---|---|---|
| REPEATS | リピート回数 | 画像枚数 × 数値 がサンプル数になる |
| SAMPLE | 絶対サンプル数 | 画像枚数に関係なく指定数固定 |
kohya_ssのフォルダ名指定(整数のみ)と異なり、複数ConceptごとにBalancingを個別設定できる柔軟な設計になっている。
その他の考慮要素
| パラメータ | 影響 |
|---|---|
| Warmup Steps | 総ステップ数の一部をウォームアップに充てる |
| Gradient Accumulation Steps | 実効バッチサイズが変わるがステップ数は変わらない |
| Concept Weight | 複数コンセプト時、weightの比率でサンプリング頻度が変わる |
| Estimated Steps | GUI上にリアルタイム表示される(手計算の確認に便利) |
8. AdamWの適正ステップ総数
目安:3000〜6000ステップ
| 条件 | 適正ステップ数の傾向 |
|---|---|
| 学習画像が少ない(10〜20枚) | 少なめ 1500〜3000 |
| 学習画像が多い(50枚以上) | 多め 4000〜8000 |
| キャラクターLoRA | 2000〜5000 |
| スタイルLoRA | 3000〜6000 |
AdamWのステップ進行の傾向
- 序盤(〜1000step) : モーメンタムが安定していない
- 中盤(1000〜4000) : 最も効率よく学習が進む
- 終盤(4000〜) : 過学習に差し掛かりやすい
Warmupとの相性が良く、序盤の不安定期をWarmupでカバーするのが定石。
まとめ
- ステップ総数が同じでも、リピート重視かエポック重視かで学習の質が変わる
- gradient_accumulation_stepsはステップ数を変えず実効バッチサイズだけ増やす
- バケット分割(sd-scripts)により理論値より数ステップ少なくなる場合がある
- Dataloaderはパフォーマンス最適化であり、学習結果に影響しない
- AdamWならまず3000~6000を目安にLoss曲線を見ながら調整する
Appendix
Loss曲線は学習中にブラウザでhttp://localhost:6006を開くと確認できます。
学習終了後はTensorBoardの動作が終了するため確認できなくなります。

理想的なLoss曲線

過剰学習のLoss曲線

過少学習のLoss曲線のグラフ

※ OneTrainerのグラフ生成機能はval lossを表示しません。上はあくまでも概念図です。
LoRA学習の難しさ
LoRA学習の難しさは理想的なLoss曲線を描かなかったとしても自分の思った通りの絵になることもあるし、理想的なLoss曲線を描いても自分の思った通りの絵にならないこともあることです。
学習内容が必ずしも自分の希望通りになってないことがあるということです。
それは、学習させる絵の内容やタグのつけ方によっても変わります。
これといった正解は無いので(少なくともわたくしは見たことがありません)、自分なりの作り方を追求していく・・・ということになります。
もし、「学習させたい内容を100%実現し、理想のLoss曲線を描く一連の手順」というものをお持ちの方がいたらぜひその方法を公開してください。











