技術 約5分で読めます

【LoRA】RTX 3060 Laptop (6GB VRAM) でLoRA学習環境を構築する

はじめに

前回の記事でMac mini M4 Pro(24GB)での学習を予定していたんだけど、諸事情でベースのM4が来てしまった。

さすがにベースM4じゃVRAMが足りなくて学習回せない。そこで、空いてるノートPC(RTX 3060 Laptop / 6GB VRAM)で一晩ぶん回すことにした。

この記事では、Windows 11 + RTX 3060 Laptop(6GB VRAM)でLoRA学習環境を構築する手順をまとめる。6GB VRAMだとSDXLは厳しいので、SD1.5ベースモデル向けの内容になっている。


動作環境

項目スペック
OSWindows 11 Home
GPURTX 3060 Laptop (6GB VRAM)
ストレージ1TB SSD

1. 基本ツールのインストール

1-1. Git

1-2. Python 3.10.6

※バージョン厳守(他バージョンだとトラブル多い)

1-3. CUDA Toolkit 11.8

1-4. cuDNN 8.x(CUDA 11.x用)


2. kohya_ss インストール

# 作業フォルダ作成
mkdir D:\AI
cd D:\AI

# クローン
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss

# セットアップ実行
.\setup.bat

セットアップ中の質問:

  • CUDA version → 11.8
  • Install accelerate → Yes

3. ベースモデル配置

配置先: D:\AI\models\

おすすめモデル(漫画・アニメ系)

モデルURL
Anything V5https://civitai.com/models/9409
Counterfeit-V3.0https://civitai.com/models/4468

4. 学習データ準備

フォルダ構成

D:\AI\datasets\my_character\
  └── 10_chara_name\         ← 「繰り返し数_トリガーワード」
        ├── image001.png
        ├── image001.txt     ← キャプション
        ├── image002.png
        ├── image002.txt
        └── ...

繰り返し数の目安

  • 100枚 × 10回 = 1000ステップ/epoch
  • 50枚なら 20_chara_name で調整

5. キャプションの書き方

基本構造

トリガーワード, 基本属性, 変動要素

具体例

同じキャラ「黒髪ショート、赤目の女の子」の場合:

image001.txt(制服、笑顔)

chara_name, 1girl, short black hair, red eyes, smile, school uniform, white shirt, blue skirt, upper body, simple background

image002.txt(私服、真顔)

chara_name, 1girl, short black hair, red eyes, casual clothes, hoodie, jeans, upper body, outdoor

image003.txt(水着、横顔)

chara_name, 1girl, short black hair, red eyes, swimsuit, bikini, from side, beach, summer

タグの分類

固定タグ(全画像共通)

  • chara_name ← トリガーワード
  • 1girl
  • short black hair ← キャラの髪型
  • red eyes ← キャラの目の色

変動タグ(画像ごとに変える)

  • 服装: uniform, casual, swimsuit…
  • 表情: smile, serious, angry…
  • 構図: upper body, portrait, full body…
  • 背景: simple background, outdoor, indoor…
  • ポーズ: standing, sitting, from side…

トリガーワードのコツ

  • 既存の単語と被らない造語がベスト
  • 例: mycharaname, xyz_oc, aaa_character
  • 短すぎると他の概念と混ざる

注意点

NGOK
black_hairblack hair(スペース区切り)
トリガー,1girlトリガー, 1girl(カンマ後スペース)
日本語タグ英語タグのみ

6. キャプション自動生成 → 手修正

方法1: WD Tagger(kohya_ss内蔵)

  1. kohya_ssの Utilities タブ → 「WD14 Captioning」
  2. 画像フォルダ指定
  3. 実行 → 各画像に自動でtxtが生成
  4. 手動で修正:
    • 先頭にトリガーワード追加
    • キャラ固有の特徴タグを統一
    • 不要なタグ削除

方法2: BooruDatasetTagManager

作業フロー

  1. WD Taggerで自動生成(5分)
  2. BooruDatasetTagManagerで開く
  3. 全画像に一括でトリガーワード追加
  4. キャラ固有タグ(髪色、目色)を統一
  5. 明らかに間違ってるタグを修正
  6. 保存

7. 画像サイズについて

元画像が大きい場合(2800x2800など)、リサイズ不要

kohya_ssの enable_bucket を有効にすれば可変サイズのまま学習可能。

設定:
- enable_bucket: ON
- resolution: 512
- bucket_no_upscale: ON

8. 起動

cd D:\AI\kohya_ss
.\gui.bat

ブラウザで http://127.0.0.1:7860 を開く


9. 6GB VRAM用 学習設定

項目設定値
Network Rank (Dim)32〜64
Network Alpha16〜32
Batch Size1
Resolution512
Epoch5前後(様子見て調整)
Learning Rate1e-4
OptimizerAdaFactor または Lion
Mixed Precisionfp16
Gradient Checkpointing✓ ON
Cache Latents✓ ON
enable_bucket✓ ON
bucket_no_upscale✓ ON

Epochについて: いきなり10とかにせず、まず5で回して出力を確認する。足りなければ追加で回す。データ枚数×繰り返し数が多いと過学習しやすいので、最初は控えめに。


10. 学習データの目安

枚数結果
10〜20枚最低限。特定ポーズに偏りがち
30〜50枚実用レベル
50〜100枚かなり良い
100枚以上十分すぎる

良いデータセットの条件

  • 様々な表情
  • 様々な服装
  • 様々な構図(正面、横、斜め)
  • 様々な背景
  • 線画のクオリティが安定
  • 全身絵が数枚含まれる
  • 顔アップも数枚含まれる

11. 3面図の扱い

3面図をそのまま入れると「3面図っぽいレイアウト」も学習してしまう。

対処法: 分割して使う

正面・横・後ろを個別に切り出して別々の画像として入れる。

  • キャラの特徴は学習される
  • 3面図レイアウトは学習されない
  • 実質3枚分の学習データ増える

12. 学習時間の目安

RTX 3060 Laptop / 100枚 / SD1.5ベース:

  • 約1〜2時間で完了

トラブルシューティング

CUDA out of memory

  • Batch Size を 1 に下げる
  • Gradient Checkpointing を ON
  • Network Dim を 32 に下げる

Loss が NaN になる

  • Learning Rate を下げる(5e-5など)
  • Mixed Precision を bf16 に変更

生成結果がぼやける

  • 学習不足 → epoch数を増やす
  • Network Dim を上げる(64〜128)

キャラが出ない

  • トリガーワードをプロンプトに入れ忘れ
  • 学習時のトリガーワードとプロンプトが不一致

おわりに

M4 Proはたぶん来年くると思うんで、そんときスペック上げて送って貰おうかと……後編書けるといいなあ。