AI Toolkit CUDA Out of Memory:モデルロード・学習・サンプリング時の OOM を修正する
AI Toolkit のジョブが CUDA out of memory、OOM during training step 3 times in a row、または 0 bytes is free で失敗した場合、同じジョブをそのまま再実行しないでください。
実際のところ、AI Toolkit の OOM エラーのほとんどは、以下の4箇所のいずれかで発生します:
- モデルロード(本格的な学習が始まる前)
- 最初の数ステップ
- プレビューサンプリング / ベースラインサンプル生成
- 動画特有のスパイク(フレームが多すぎる、バケットが大きすぎる、またはその両方)
このガイドは素早い復旧パスです。どの OOM かを特定し、RunComfy AI Toolkit で正しい設定を変更して、より早く成功するリトライにたどり着いてください。
クイック修正チェックリスト(ここから開始)
- ✅ Training で Batch Size を下げる
- ✅ Datasets で最大の Resolution バケットを先に無効化
- ✅ Sample で Width / Height / Sample Steps を下げるか、一時的に Disable Sampling をオン
- ✅ Show Advanced をクリックして
gradient_checkpointing: trueを確認 - ✅ 動画モデルでは learning rate より先に Num Frames を下げる
- ✅ 非常に控えめな設定でもエラーが出る場合は、設定の問題だけでなく Worker / GPU の状態の問題として扱う
1) 同じ問題か確認する
ログに以下のようなメッセージが含まれていれば、このガイドの対象です:
CUDA out of memory
torch.OutOfMemoryError
OOM during training step 3 times in a row
Tried to allocate ...
0 bytes is free
CUBLAS_STATUS_ALLOC_FAILED
よくある状況:
- ジョブがステップ 1 の前で失敗する
- ステップ 2〜10 に達した後、繰り返し OOM になる
- 学習自体は問題なさそうだが、サンプル生成時にクラッシュする
- 同じ設定で成功したり失敗したりする
2) まず:どの種類の OOM か?
A. モデルロード時または学習開始前の OOM
通常、以下のいずれかを意味します:
- 現在のメモリ節約設定に対してモデルが重すぎる
- プレビュー / ベースラインサンプル生成がすでに高コスト
- Worker / GPU の状態が悪く、クリーンなメモリから開始できていない
典型的なサイン:
- 意味のある学習ステップが始まる前に失敗
- モデルロード直後または最初のサンプル中にエラー
- ログにほぼ空きVRAM がない、またはCUBLAS アロケーションエラー
B. 最初の数ステップでの OOM
設定起因で最も一般的なケースです。
典型的な原因:
gradient_checkpointingがオフ- Batch Size が高すぎる
- 最大のデータセットバケットが野心的すぎる
- 動画の場合、Num Frames が本当のメモリスパイク
C. サンプリング / プレビュー生成時の OOM
非常によくある罠です。
学習設定は ほぼ 大丈夫でも、プレビューが高コストすぎることがあります:
- Sample Width / Height が大きすぎる
- Sample Steps が高すぎる
- Sample Every が頻繁すぎる
- プレビュー動画のフレームが多すぎる
D. 時々だけ OOM
通常はギリギリの設定であり、謎ではありません。
例:
- 小さいバケットでは生き残るが、最大バケットでクラッシュ
- 動画の学習で最も重いクリップだけ失敗
- 学習コアは収まるが、サンプル生成で超過
3) RunComfy AI Toolkit での最速の修正
Fix A — Gradient Checkpointing を再度オンにする
画像モデルの OOM で最初にチェックすべきこと。
変更場所
- 失敗したジョブを開く
- Show Advanced をクリック
train:の下で確認:
gradient_checkpointing: true
迷ったらオンのままにしてください。
Fix B — Batch Size を下げ、安定性のために Gradient Accumulation を使う
変更場所
- ジョブエディタを開く
- Training パネルで:
- Batch Size を下げる
- VRAM ピークを上げずに有効バッチをやや大きくしたい場合は Gradient Accumulation を維持または増加
安全なリトライルール
- 画像モデル: OOM が出たらまず Batch Size = 1 に
- 動画モデル: 設定が安定と証明されていない限り Batch Size = 1 をデフォルトとする
learning rate を最初のメモリ調整手段として扱わないでください。通常それは正しくありません。
Fix C — 最大のデータセットバケットを先に外す
変更場所
- Datasets パネルへ
- Resolutions で最大バケットを先に無効化
安全なロールバック順序
- 1024 / 1536 → まず外す
- 安定性を確認する間 512 / 768 を維持
- 安定したら大きなバケットを1つずつ追加
ギリギリの学習を再現可能な学習に変える最速の方法の1つです。
Fix D — プレビューサンプリングを軽くするか一時的に無効化
学習が本格的に始まる前にクラッシュする場合、またはサンプリング実行のたびにクラッシュする場合、まずプレビューを修正。
変更場所
- Sample パネルを開く
以下の1つ以上を実行:
- Width を下げる
- Height を下げる
- Sample Steps を下げる
- Sample Every を増やす
- 検証用に Disable Sampling をオン
良い最初のリトライ
「ジョブが学習できることを証明する」が目標なら、一時的にサンプリングなしでの実行は問題ありません。
安定したらより小さい設定でプレビューを再度有効化。
Fix E — 動画モデル:何よりも先に Num Frames を下げる
動画モデルでは、フレームが通常最大のメモリレバーです。
変更場所
- Datasets パネル → Num Frames
- Sample パネル → Num Frames
動画を学習中に OOM が出たら、フレームを先に下げ、次にバッチサイズ、次に解像度。
optimizer や LR の変更から始めないでください。
Fix F — モデルの低メモリパスを使う
一部のアーキテクチャは、VRAM が厳しい場合にメモリ節約設定で学習するように設計されています。
変更場所
- Show Advanced をクリック
model:の下で探す:
low_vram: true
一部のモデルでは、正しい低メモリパスにモデル固有の量子化やテキストエンコーダー処理も含まれます。推測ではなく、該当するモデルガイドに従ってください。
4) 障害タイミング別クイック診断
| クラッシュタイミング | 最も可能性の高い原因 | 最初の変更 |
|---|---|---|
| ステップ 1 前 / 初期サンプル中 | プレビューが重い、モデルロード圧、またはダーティなワーカー | サンプリング無効化またはプレビュー縮小 |
| ステップ 1–10 | GC オフ、バッチが高い、バケットが大きい | GC オン、バッチを1に、最大バケット削除 |
| サンプリング時のみ | プレビュー設定が高コスト | Width/Height/Sample Steps を下げるかサンプリング無効化 |
| 時々発生 | ギリギリの設定 | 最大バケット / フレームを下げて安定化 |
| 控えめな設定でも即座に失敗 | GPU / ワーカー状態の問題の可能性 | 新しいワーカーで再作成またはサポートに連絡 |
5) 設定 OOM と環境 / GPU 状態の問題の見分け方
以下すべてが当てはまる場合は、設定だけの問題ではないとして扱ってください:
- Batch Size = 1
gradient_checkpointing: true- 控えめな解像度 / フレーム
- それでも学習が本格的に始まる前にジョブが失敗する
- ログに
0 bytes is freeや CUBLAS アロケーション失敗 が表示される
その場合:
- 同じリトライの繰り返しをやめる
- 可能なら新しいワーカーで新しいジョブを作成
- 以前は動いていた同じ控えめな設定が今すぐ失敗する場合、サポートにエスカレーション
繰り返しのリトライは時間と GPU 予算の両方を浪費する可能性があるため重要です。
6) 最も安全なロールバック順序
画像モデル向け
gradient_checkpointing: true- Batch Size → 1
- 最大の Resolution バケットを削除
- Sample を縮小または無効化
- low_vram またはモデルの低メモリパスを有効化
動画モデル向け
- Num Frames を削減
- Batch Size → 1
- 最大の Resolution バケットを削除
- Sample を縮小または無効化
- low_vram またはモデル固有のオフロード / 量子化を有効化
7) 最初の成功するリトライの後
安定した学習が得られたら:
- 一度に1つだけ重い設定を戻す
- 何を変更したかメモする
- 複数の高リスク設定を同時に再導入しない
良いスケールアップ順序:
- 同じ安定したメモリ設定を維持
- Steps を増やす
- より大きなバケットを再有効化
- よりリッチなサンプリングを再有効化
- それからやっとより大きなバッチまたは長い動画をテスト
まとめ(一行)
AI Toolkit が OOM を出したら、ランダムな試行錯誤はやめてください。
gradient_checkpointing をオンにし、Batch Size を下げ、最大の Resolution バケットを外し、プレビューサンプリングを軽くしてからリトライしてください。
関連ガイド
Ready to start training?
