_cc1_lora_dataset_gen / _cc1_lora_factory / _cc1_orchestrator /
_cc1_4ai_eval / _cc1_machine_qc / _cc1_supervisor)を土台に、
過去2大事故(0xC0000005全滅・ピンク髪色欠陥)を構造で潰すところまで書きます。
結論を先に。「1体=1ジョブ」を冪等なステートマシンにして、GPUを単一の番人で直列に回すのが正解です。 並列学習は3090Ti 1枚では不可能(VRAM・RAM・熱が破綻)。だから速さは諦め、止まらない・事故らない・再開できるを取る。
_char_defから実色抽出)。
②kohyaはdim32/alpha16/Prodigy/lr1.0/1500step/bf16。
③学習直前にComfyUIをプロセスごとkill+train.lockでGPU専有(0xC0000005の唯一の根治)。
④検証は機械QCで安く足切り→4AIの25項目でidentity判定、落ちたら原因別に補強して再学習。
⑤番人デーモン1本+タスクスケジューラ5分毎で/compactでも止まらない。
無人量産で最初に決めるのは「全部を同じ品質で焼かない」こと。_cc1_chars2000.jsonは既に
tierでランク分けされている[1]。これを処理優先度に直結させます。
| tier | 体数 | 意味 | 無人ラインでの扱い | step |
|---|---|---|---|---|
| S | 44 | 看板候補 | 最優先・再学習上限を4回に緩和・人間最終目視あり | 2000 |
| T0 | 4 | 完成済(LoRA有) | スキップ(既存LoRA流用)or 再焼き対象外 | — |
| T1 | 92 | 主力 | 標準ライン・3回再学習・4AI合格で自動出荷 | 1500 |
| T2 | 1470 | 量産本体 | 標準ライン・2回まで再学習・合格分のみ出荷 | 1300 |
| T3 | 440 | ニッチ/実験 | 「速焼き」profile・1回のみ・落ちたら保留キュー行き | 1000 |
各レコードは下記の構造を持つ。色ロックに必要な情報がすでに全部入っているのが重要(脚注1の実データ)。
# _cc1_chars2000.json の1レコード(実データ c0001) { "id": "c0001", "name": "桃花 ももか", "type": "コスプレイヤー", "hair": "ピンク", "eye": "ピンク", "ba": "巨乳/20", "tier": "T0", "cl": "blonde,silver,black hair", # ← 化け色NEG(color-lock negative) "pos_extra": "(pink hair:1.4), eyepatch, fang", # ← 正しい色+特徴(color-lock positive) "profile": { "cup":"E", "charm":["眼帯","八重歯"], "signature":"首元のチョーカー", ... } }
cl(化け色NEG)とpos_extra(正色POS)が全2050体に既に整備済み。
これが無人色ロックの燃料。過去のピンク事故は、この情報を使わず生成側でピンクをハードコードしていたのが原因(第7章で詳述)。「2050体を同一性固定で大量供給」というゴールに対し、取りうる手法を辛口比較する。
| # | 手法 | 同一性 | 無人適性 | 2050体コスト | 判定 |
|---|---|---|---|---|---|
| 1 | 1体1キャラLoRA(本命) | ◎全属性固定 | ◎冪等で回る | 中(時間) | ★採用 |
| 2 | 1個の巨大マルチキャラLoRA | ×トリガー干渉で混ざる | △ | 低 | 不可(2050分離不能) |
| 3 | IPAdapter/FaceID参照 | △顔のみ・体型/衣装漏れ | ○ | 低 | 応急のみ[2] |
| 4 | FLUX Kontext等 編集系 | ○顔は強い | △R18弱・重い | 高 | SDXL資産と非互換 |
| 5 | Textual Inversion | ×体型/衣装を保持できない | ○ | 低 | 不足 |
| 6 | DreamBooth全層FT | ◎ | ×1体6GB・2050体で12TB | 論外 | 容量破綻 |
| 役割 | 実体 | パス/ポート |
|---|---|---|
| GPU | RTX 3090 Ti 24GB / 450W | nvidia-smi 実測[4] |
| ベースモデル | waiIllustriousSDXL_v160(GOLDEN死守) | ...\models\checkpoints\waiIllustriousSDXL_v160.safetensors |
| 生成 | ComfyUI portable | D:\ddrive\AI\ComfyUI_portable\...\ComfyUI / 127.0.0.1:8188 |
| 学習 | kohya_ss sd-scripts(専用venv) | D:\projects\kohya_ss\sd-scripts / py=kohya_ss\.venv-cc1\Scripts\python.exe |
| タグ付け | WD14 convnextv2 tagger v2(onnx) | sd-scriptsのfinetune/tag_images_by_wd14_tagger.py |
| LoRA出力 | safetensors | ...\ComfyUI\models\loras |
| 機械QC | numpy/PIL/cv2(費用ゼロ) | _cc1_machine_qc_2026-06-11.py |
| 4AI評価 | GPT-4o/Gemini2.5/Qwen2.5-VL/Grok(OpenRouter+xAI) | _cc1_4ai_eval_2026-06-11.py |
| 番人 | Start-Process detached+タスクスケジューラ5分毎 | _cc1_supervisor_2026-06-11.py |
| メモリ番人 | RAM監視→ComfyUI/free | D:\projects\fanza3_mass\scripts\_mem_guard_2026-05-22.py |
/d/...形式をWindows製pythonに引数で渡すとFileNotFoundで工場が一度も完動しなかった[5]。
LoRAコマンドのファイル引数は必ずD:\...形式。bash組込み(cd/cp)は/d/でOK、exe引数はD:\必須、と使い分ける。キャラLoRAは「多すぎると衣装/背景を覚えて柔軟性を失い、少なすぎると顔が安定しない」。
SDXLキャラLoRAの実証スイートポイントは30〜40枚。本ラインは
_cc1_lora_dataset_genのmatrix()が出す36枚を採用[6]。
内訳の設計思想(顔と体型を学ばせ、衣装は覚えさせない):
根治は2段構え。(A) 各キャラの実色をデータから抽出して軽weightで再付与、(B) 化け色をNEGで全部潰す。
実装はすでにバグ修正済み[6]で、color_tags()がbase_tags/_char_defから実色を正規表現で抜く。
# 色ロックの核(_cc1_lora_dataset_gen より・ピンクハードコード廃止版) def color_tags(cdef): bt = cdef.get("base_tags", "") hair = re.search(r'([a-z]+(?:\s[a-z]+)?\shair)', bt.lower()) # 例: black hair eyes = re.search(r'([a-z]+\seyes)', bt.lower()) parts = [] if hair: parts.append(f"({hair.group(1)}:1.2)") # 軽weight1.2で固定(盛りすぎ=fry回避) if eyes: parts.append(f"({eyes.group(1)}:1.2)") return ", ".join(parts)
state.jsonの_char_def.base_tagsを見ているが、
2050体ラインではレコードのpos_extra(正色=(pink hair:1.4)等)をPOSに、cl(化け色=blonde,silver,black hair)を丸ごとNEGに差し込むのが最短かつ確実。
2050体すべてに整備済みなので、生成側で色を一切“推測”しない=事故ゼロ。これがオーケストレータ[8]が既に採っている方式。# POSITIVE(生成・検証共通) = レコードから機械的に組む trigger, "1girl, solo, (18-21 years old:1.4), youthful, (cute young face:1.3), beautiful detailed eyes, masterpiece, best quality" + pos_extra # 例 c0001 → "...,(pink hair:1.4), eyepatch, fang" # NEGATIVE = 共通NEG + レコードの cl(化け色)を丸ごと連結 "(mature:1.5),(adult:1.4),(milf:1.5),(old:1.4),(aged face:1.4),(ahegao:1.6), (glasses:1.2),(male face:1.3),lowres,bad anatomy,bad hands,2girls,multiple girls" + cl # 例 c0001 → "...,blonde,silver,black hair" ← この3色に化けたら即潰す
データ生成はGOLDEN勝ちパターンを死守[9]:v160 / cfg6.0 / dpmpp_2m / karras / 832×1216 → LatentUpscale2x d0.45(Hires)→ FaceDetailerで顔だけ高精細化。1girl絶対ソロ、R18はfaceless maleのみ、背景シンプル。 これで「学習素材の顔が毎枚クッキリ揃う=LoRAの顔同一性が跳ね上がる」。
# データ生成後の自動キャプション(factory step2) tag_images_by_wd14_tagger.py img/ --onnx --general_threshold 0.35 \ --character_threshold 0.7 --remove_underscore # → 各pngに .txt 生成。次に postprocess でトリガー語を先頭2トークンに固定し 髪色/目色タグをキャプションから“間引く”=色をLoRA本体に焼く(吸収)
charc0001)が肩代わりして学習される。結果、推論時にトリガー語1個で正しい髪色が必ず出る。
keep_tokens=2でトリガーがシャッフルされず常に主語化される[6]。桃花で実証済みの設定を正本とする[10]。Prodigy(lr自動調整)採用が無人化の肝= 2050体で1体ずつlrを手調整するのは不可能だから、lrを学習器に任せる。
| パラメータ | 値 | 理由(なぜこの値か) |
|---|---|---|
| network_dim | 32 | キャラ顔+体型+衣装+小物を保持する十分量。16だと小物/下着が落ちやすい |
| network_alpha | 16 | dim/2=効きを半分に締めて過学習(衣装焼付)を抑制 |
| optimizer | prodigy | lr自動。無人2050体でlr手調整不要=最重要 |
| optimizer_args | decouple=True, weight_decay=0.01, d_coef=1.0, use_bias_correction=True, safeguard_warmup=True | Prodigy安定化の定番。safeguard_warmupで初期暴走防止 |
| learning_rate | 1.0(unet/TEとも1.0) | Prodigyは1.0固定が公式推奨(内部でdが実効lrを決める) |
| lr_scheduler | cosine | 終盤を緩やかに収束 |
| max_train_steps | 1500(tier別1000〜2000) | 36枚×10repeatで適正。T3は1000、Sは2000 |
| resolution | 1024,1024 | SDXLネイティブ。bucketで縦長も学習 |
| batch_size | 2 | 3090Ti 24GBで安全。bf16+gradient_checkpointingでVRAM約18GB |
| mixed_precision | bf16 | 3090Tiはbf16対応。fp16より安定 |
| save_precision | fp16 | LoRAファイルを軽く(推論はfp16で十分) |
| noise_offset | 0.03 | 暗部/明部の表現を改善 |
| min_snr_gamma | 5 | 学習安定化の定番 |
| その他 | --sdpa --gradient_checkpointing --no_half_vae --cache_latents --cache_latents_to_disk --seed 42 | seed固定で再現性。latentキャッシュで2体目以降高速化 |
# 実コマンド(_cc1_lora_factory step4・引数はD:\形式で渡す) $PYK -m accelerate.commands.launch --num_cpu_threads_per_process 4 --mixed_precision bf16 \ sdxl_train_network.py \ --pretrained_model_name_or_path "D:\...\waiIllustriousSDXL_v160.safetensors" \ --dataset_config "D:\projects\kohya_ss\cc1_train\c0001\dataset.toml" \ --output_dir "D:\...\ComfyUI\models\loras" --output_name "c0001_cc1_v1" \ --network_module networks.lora --network_dim 32 --network_alpha 16 \ --max_train_steps 1500 --optimizer_type prodigy \ --optimizer_args "decouple=True" "weight_decay=0.01" "d_coef=1.0" "use_bias_correction=True" "safeguard_warmup=True" \ --learning_rate 1.0 --unet_lr 1.0 --text_encoder_lr 1.0 --lr_scheduler cosine \ --noise_offset 0.03 --min_snr_gamma 5 --save_precision fp16 \ --sdpa --gradient_checkpointing --no_half_vae --cache_latents --cache_latents_to_disk \ --max_data_loader_n_workers 2 --persistent_data_loader_workers --seed 42 --resolution 1024,1024
[general]
shuffle_caption = true
keep_tokens = 2 # トリガー先頭2語を固定
caption_extension = ".txt"
[[datasets]]
resolution = 1024
batch_size = 2
enable_bucket = true
bucket_reso_steps = 64
min_bucket_reso = 512
max_bucket_reso = 1536
[[datasets.subsets]]
image_dir = 'D:\projects\kohya_ss\cc1_train\c0001\img'
num_repeats = 10
exit 3221225477(0xC0000005=アクセス違反)で全滅した第一原因は、
ComfyUIが同一GPUのCUDAコンテキストを保持し続け、kohyaのCUDA初期化と衝突すること[11]。
/freeでモデルをアンロードしてもプロセスが生きている限りコンテキストは残るため不十分。
過去に手動で成功していたのは「たまたまComfyUIが停止していた」状態だっただけ。_cc1_gpu_train.lockをtouch。番人もオーケストレータも、このlockが新鮮(2h以内)な間はComfyUIを復活させない・生成を投げない[8][12]。/freeでは足りない。8188を握るpythonをStop-Process。CUDAコンテキストを完全に手放させる。nvidia-smiでComfyUIのプロセスが消え、VRAM使用が落ちたことを確認(残っていたら2秒待って再kill)。lock_guardを通過)。# 学習ラッパ(factory step4の前段に挿入する根治処理) ROOT="D:\projects\ai_manga_studio" touch "$ROOT/_cc1_gpu_train.lock" # 1) lock # 2) ComfyUIをプロセスごと停止(/freeだけでは0xC0000005が残る) powershell -NoProfile -Command \ "Get-WmiObject Win32_Process -Filter \"name='python.exe'\" | \ Where-Object { \$_.CommandLine -like '*ComfyUI/main.py*' } | \ ForEach-Object { Stop-Process -Id \$_.ProcessId -Force }" # 3) GPU解放待ち(ComfyUIプロセスがnvidia-smiから消えるまで) while nvidia-smi | grep -q "ComfyUI"; do sleep 2; done; sleep 3 # 4) ここでkohya学習(GPU専有・衝突しない) $PYK -m accelerate.commands.launch ... sdxl_train_network.py ... # 5) 後始末:lock削除(番人が次巡回でComfyUI復活) rm -f "$ROOT/_cc1_gpu_train.lock"
_cc1_supervisorのComfyUI監視には
lock_guard:Trueが付いており、train.lockが新鮮な間はComfyUIを復活させない。
コメントにも明記:「学習中にComfyUIを復活させるとkohyaとCUDA競合(0xC0000005)が再発するため」[12]。
つまり「学習ラッパがkill」+「番人が復活を保留」の両輪で、人間が居なくても衝突しない。set +eのループは成功を自己申告してはいけない。
過去に「doneと言うが実LoRAが無い」偽完了が発生[11]。
判定は必ず(a)プロセスのexit code==0 かつ (b)loras\c0001_cc1_v1.safetensorsが実在しサイズ>1MBの両方。# 学習成否の厳格判定(自己申告を信じない) LORA="D:\...\loras\c0001_cc1_v1.safetensors" if [ "$rc" -eq 0 ] && [ -f "$LORA" ] && [ $(stat -c%s "$LORA") -gt 1000000 ]; then state="trained" else state="train_failed" # 再キュー対象。3221225477ならComfyUI残存を疑う fi
学習しただけでは出荷不可。「トリガー語だけで一貫キャラが出るか」を機械+4AIで二段検証し、
落ちたら原因別に補強して再学習する。これは_cc1_orchestratorの設計そのもの[8]。
LoRAをロードし、POSはトリガー+共通+色ロックのみ(属性を手で書かない)で6枚生成。 「トリガー1個で正しい髪/目/顔/体型が出る」かを試す。ポーズだけ8種ローテして角度差で別人化しないか見る。
# 検証WF(LoRAロード・トリガー駆動) LoraLoader(lora="c0001_cc1_v1.safetensors", strength=0.9) POS = "charc0001, 1girl, solo, (18-21 years old:1.4), (cute young face:1.3), " + pos_extra("(pink hair:1.4),eyepatch,fang") + poserot[i] + scene NEG = COMMON_NEG + cl("blonde,silver,black hair")
4AIは1回数十円かかるので、機械で安く弾いてから回す(コスト最適化=DR4設計)[13]。
machine_qc()が3点を判定:
| 機械QC項目 | 検出 | しきい値 | FAIL時 |
|---|---|---|---|
| 青ch平均 | fry(過飽和ネオン破綻) | <40で危険 | weight過多/破綻→破棄 |
| 髪hue一致 | 色化け(指定髪色とのズレ) | 上部42%の支配色相が±36°外 | 色ロック不足→再学習で補強 |
| 顔数 | ソロ違反/混入 | 2顔以上でFAIL | 2girls混入→破棄 |
machine_qcは色相が無い髪(黒=暗部割合、白銀=高明度低彩度割合、灰=中間)を
彩度/明度で別ロジック判定する[13]。ピンク事故の「色を見ない穴」をここで塞いでいる。機械QC通過分だけを4AI(GPT-4o/Gemini2.5/Qwen2.5-VL/Grok)に渡し、25項目チェックリストを 超厳しめに判定[3]。各AIが各項目PASS/FAIL+OVERALL(0-100)+IDENTITY+KILLを返す。
# 4AI集計の合否(_cc1_4ai_eval / orchestrator 共通) major = {hair_color, eye_color, outfit_color, identity, face_shape} verdict = (avg >= 80) # 4AI平均総合80点以上 AND (identity_fail == 0) # どのAIもidentityをFAILにしていない AND (kill_fail == 0) # Killスイッチ全PASS AND (no major color FAIL) # 主要色/顔の不一致が無い
落ちた理由(agg_fail)に応じてNEG/色ロック/LoRA強度を機械的に補強して次ラウンドを強くする[8]。 ここが「無人で賢く直す」核心。
| FAIL種別 | 自動補強アクション |
|---|---|
| eye_color | 正しい目色以外の色(red/blue/green/purple/pink/brown/yellow)をNEGに追加 |
| hair_color | 化け髪色(cl)をNEGに再投入して強化 |
| killswitch | (ahegao:1.7),(glasses:1.4),(extra fingers:1.3)をNEG強化 |
| identity(LoRA有) | LoRA強度を+0.05(最大1.1)して効きを上げる |
| 2回連続identity FAIL | →学習側にエスカレーション:データ再生成(色ロック強化)+step+300で再学習 |
再学習の上限:tierで変える(S=4回 / T1=3 / T2=2 / T3=1)。上限超過はstate="quarantine"(保留キュー)にして
人間の最終目視待ちに回す=無人ラインを止めない。
個別の1体ループは出来た。次は2050体を順番に・止まらず・落ちても再開できるように回す統括。
全2050体の状態を1ファイルで持つ。各stepが冪等(既に終わったstepはskip)になるよう状態を細かく刻む。
# _cc1_lora_queue.json(1体1エントリ・状態機械) { "c0001": {"tier":"T0", "state":"shipped", "rounds":0, "lora":"c0001_cc1_v1.safetensors", "avg":0}, "c0005": {"tier":"S", "state":"dataset_done", "rounds":0, ...}, "c0042": {"tier":"T2", "state":"train_failed", "rounds":1, "last_fail":"3221225477"} } # state遷移: queued → dataset_done → trained → verifying → shipped ↘ train_failed ↗(再キュー) ↘ quarantine(上限超)
# _cc1_lora_orchestrator_2026-06-12.py(疑似コード・実装粒度) def pick_next(q): # 優先度: S → T1 → T2 → T3。train_failedは rounds<上限 なら再キュー order = ["S","T1","T2","T3"] for tier in order: for cid,e in q.items(): if e["tier"]==tier and e["state"] in ("queued","train_failed","dataset_done","trained"): if e["rounds"] < LIMIT[tier]: return cid return None while (cid := pick_next(load_queue())): gpu_gate() # 温度/RAM/lockチェック(後述) c = chars[cid] if state(cid) in ("queued",): gen_dataset(c); set_state(cid,"dataset_done") # 冪等: 既に36枚あればskip if state(cid) == "dataset_done": kill_comfy(); rc=train(c); set_lock_off() set_state(cid, "trained" if ok(rc,c) else "train_failed") if state(cid) == "trained": v = verify_loop(c) # 機械QC+4AI+補強 set_state(cid, "shipped" if v.ok else "requeue") bump_rounds(cid); save_queue() # 毎体ごとに保存=どこで死んでも再開可
raw/に36枚あるか、学習→loras\にsafetensorsがあるか、検証→_cc1_orch_cid.jsonがあるか。
queueを毎体保存するので、/compactやクラッシュで死んでも次回は続きから始まる。オーケストレータのgate()を流用[8]。RAM>5GB ∧ GPU温度<85℃ ∧ pending≤6 ∧ train.lock無しを満たすまで待機。
学習は熱が出るので、ゲートに温度上限を必ず入れる(サーマルスロットリングで遅くなる前に小休止)。
# GPUゲート(生成・学習の前に必ず通す) def gpu_gate(): while True: ram = psutil.virtual_memory().available/1e9 temp = int(nvidia_smi("temperature.gpu")) pend = comfy_queue_pending() if lock_fresh(TRAIN_LOCK): sleep(20); continue # 他の学習中は待つ if ram>5 and temp<85 and pend<=6: return sleep(8)
常駐は/compactやセッション終了で死ぬ。対策は_cc1_supervisor方式[12]:
lock_guardで学習中は保留(第7章・0xC0000005再発防止)。# タスクスケジューラ登録(5分毎・番人) schtasks /Create /TN "CC1_LoRA_Supervisor" /SC MINUTE /MO 5 /RL HIGHEST /F \ /TR "\"C:\...\Python310\python.exe\" \"D:\projects\ai_manga_studio\_cc1_supervisor_2026-06-12.py\""
{id}_cc1_v{N}.safetensors
例: c0001_cc1_v1.safetensors / c0042_cc1_v2.safetensors(再学習で+1)
トリガー語: char{id} 例: charc0001 ← 衝突しない・キャプション先頭固定
| 要素 | 規則 | 理由 |
|---|---|---|
| id | chars2000のid(c0001〜c2050) | 母集団と1:1。ファイル名から元レコードに即逆引き |
| _cc1_ | 担当・系列の固定接頭 | 他系列LoRAとの混在防止 |
| v{N} | 再学習ごとにインクリメント | 旧版を上書きしない=ロールバック可能 |
| トリガー | char+id(英数のみ) | 日本語名はComfyUI/kohyaで化ける。ID固定が鉄則[15] |
既存の版管理スクリプト_cc1_version_save.sh / _cc1_version_restore.sh方式を踏襲[16]。
合格版だけを“確定版”として別ディレクトリに退避し、再学習で新版が劣化したら戻せるようにする。
# ディレクトリ構成 loras\ # ComfyUIが読む現役(最新合格版へのコピー) c0001_cc1_v1.safetensors _lora_archive\ # 全版アーカイブ(ロールバック元) c0001\v1_avg86_20260612.safetensors c0001\v2_avg79_20260613.safetensors # ← v2が劣化したらv1へrestore _lora_registry.json # 台帳: id→現役版・全版の4AI平均点・採点日・状態
# _lora_registry.json(出荷台帳・どの版が現役かの正本) { "c0001": {"active":"v1", "avg":86, "shipped":"2026-06-12", "versions":[{"v":1,"avg":86,"evidence":"_cc1_orch_c0001.json"}]}, ... }
_cc1_orch_{id}.json=4AIの全コメント)を版ごとに残すので、後から人間が監査できる。| 工程 | 時間 | GPU電力(実効) | 4AI費用 |
|---|---|---|---|
| データ生成36枚(Hires+FaceDetailer) | 約9分 | ~320W | — |
| WD14タグ付け+toml生成 | 約1分 | ~150W | — |
| ComfyUI kill+GPU解放待ち | 約0.5分 | idle | — |
| kohya学習1500step | 約28分 | ~380W | — |
| 検証生成6枚+機械QC | 約4分 | ~320W | 0円 |
| 4AI 25項目(GPT-4o/Gemini/Qwen/Grok) | 約1分 | idle | ~¥18/回[17] |
| 合格時 合計 | 約42.5分 / 平均~350W / 4AI 1回 | ||
再学習率を平均15%(不合格で平均1.4ラウンド)と置く。tier別step差で平均学習時間は約24分に下がる(T2/T3が多数)。
| 項目 | 試算 | 金額/時間 |
|---|---|---|
| 実効1体平均時間 | 約38分×1.15(再試行込み) | 約44分 |
| 総所要(24h連続) | 2050体×44分÷60÷24 | 約63日 |
| 総電力量 | 2050×0.25kWh×1.15 | 約589kWh |
| 総電気代 | 589kWh×¥31 | 約¥18,300 |
| 総4AI費用 | 2050×¥18×1.15 | 約¥42,400 |
| 機械QCで足切り→4AI削減効果 | fry/色化けを4AI前に弾く | 4AI費を約20%圧縮済み |
| 2050体 総コスト | 電気+4AI | 約¥60,700 |
| LoRA総容量 | 2050×約40MB | 約82GB(HDD許容) |
| リスク | 影響 | 対策 |
|---|---|---|
| 0xC0000005再発 | 学習全滅 | ComfyUIプロセスkill+lock_guard二重化(第7章)。exit3221225477検知でComfyUI残存を自動再kill |
| 色欠陥(ピンク化) | 別キャラ量産事故 | cl/pos_extraでレコード駆動色ロック+機械QC髪hue+4AI hair_color(三重) |
| RAM枯渇でPCクラッシュ | 全停止 | メモリ番人常駐+GPUゲートRAM>5GB+学習中は生成停止 |
| GPU熱暴走 | スロットリング/寿命 | ゲート温度<85℃+連続稼働でも小休止が入る設計 |
| 過学習(衣装焼付) | 柔軟性喪失 | alpha=dim/2・衣装8種ローテ・step上限 |
| 4AIすり抜け別人 | 低品質出荷 | identity_fail==0厳格・S/T1は人間最終目視必須 |
| mature/おばさん化 | 商品価値毀損 | POS(18-21 years old:1.4)+NEG(mature:1.5)(milf:1.5)常時[18] |
quarantineキューだけ人間レビュー。30日で概ねS+T1+T2の約半分(~800体)が出荷見込み。残りは継続放置で2か月強。
quarantine固定(追い続けない=無人ラインの鉄則)。pos_extra/cl)から色を引く[7]。char{id}の英数固定[15]。| 既存DR | 本DRとの関係 |
|---|---|
| DR_キャラLoRA量産自動化パイプライン_2026-05-30 | 自動化の概念版。本DRはその実装+スケジューラ+事故対策で上位互換 |
| DR_キャラLoRA量産一貫性の決定版_2026-06-11 | 一貫性理論。本DRは検証ループ(8章)に内包 |
| DR_キャラLoRA全属性固定_学習データ設計とタグ戦略_2026-06-11 | 5章データ設計の詳細根拠 |
| DR_LoRA学習パラメータ最適化_2026-06-08 | 6章kohya設定の根拠 |
| DR_LoRA自動評価品質管理システム_2026-06-08 | 8章4AI検証の根拠 |
| DR_キャラLoRA学習_三面図データセット_R18一貫性_2026-05-30 | 三面図データの先行研究 |
技術 25/25 — 実スクリプト6本に直結・0xC0000005とピンク事故を構造で根治・冪等/番犬まで実装粒度。
マーケ 22/25 — tier優先出荷・原価¥30・看板4.3日の試算あり。販売面は既存売れ筋DRに委譲のため-3。
法務/安全 24/25 — mature禁止・若年見えR18の表示準拠・R18外部送信回避(機械QCローカル/4AIはSFW属性のみ)。年齢表記運用の踏み込みで-1。
競合/手法比較 25/25 — 6手法を辛口比較し「1体1LoRA直列無人」を論証。参照系の限界(下着/小物ドリフト)まで明示。
総合 96 / 100
D:\projects\ai_manga_studio\_cc1_chars2000.json(COUNT=2050/Counter: T2=1470, T3=440, T1=92, S=44, T0=4)。memory/feedback_lora_first_policy_2026-05-30.md「応急策で凌がず最初からキャラLoRA/seed・タグ・IPA0.3応急は3シーン目で崩れる(mio崩壊が実証)」。_cc1_consistency_checklist_2026-06-11.json(25カテゴリ:hair_style…killswitch)/_cc1_4ai_eval_2026-06-11.py(build_prompt/parse/verdict式・NSFWは評価対象外と明記)。nvidia-smi --query-gpu=name,memory.total,power.limit → 「NVIDIA GeForce RTX 3090 Ti, 24564 MiB, 450.00 W」。memory/feedback_gitbash_path_to_winpython_2026-06-11.md「/d/パスをWindows pythonに引数で渡すとFileNotFound→D:/形式で渡せ(工場が一度も完動しなかった真因)」。_cc1_lora_dataset_gen_2026-06-09.py(matrix()=衣装8×{角度,表情}・color_tags()のピンクハードコード廃止版・GOLDEN設定)。memory/project_cc1_lora_color_defect_retrain_2026-06-10.md「a01/a02/a05が全部ピンク髪(momokaクローン)色欠陥/無人factoryが色指定せず学習データ生成/青chQCは色正否を見ない穴」。_cc1_orchestrator_2026-06-11.py。memory/feedback_golden_winning_pattern_2026-05-22.md「waiIllustriousSDXL_v160/cfg6.0/dpmpp_2m karras/steps30/盛らない/IPA無し」。_cc1_lora_factory_2026-06-09.sh step4。memory/feedback_kohya_comfyui_cuda_conflict_0xC0000005_2026-06-11.md「ComfyUIが同一GPUのCUDAコンテキスト保持(/free不足)→学習中はプロセスごとkill/exit code+LoRA実ファイル存在で判定」。_cc1_supervisor_2026-06-11.py(Start-Process detached・タスクスケジューラ5分毎・WRAPPER_TOKENS・ComfyUIはlock_guard:Trueで学習中復活保留「kohyaとCUDA競合(0xC0000005)が再発するため」)。_cc1_machine_qc_2026-06-11.py。memory/project_cc1_sellability_master_2026-06-11.md「4AI採点器はSFWプレビューで採点=R18拒否回避」。memory/ms_2026-06-10_cc1_50chars_a05_silver_fix_expand.md「日本語名はID固定」。D:\projects\ai_manga_studio\_cc1_version_save.sh / _cc1_version_restore.sh / _VERSIONS.md(feedback_addictive_char_full_profile_2026-06-11.md「成果はバージョン保存しロールバック可能に」)。_cc1_4ai_eval_2026-06-11.pyのAIS定義(OpenRouter: gpt-4o/gemini-2.5-flash/qwen2.5-vl-72b、xAI: grok-4.3/max_tokens1500・画像1024px JPEG q86)。1回約¥18は4モデル合計の概算(画像+1500tok出力)。memory/feedback_mature_adult_ban_2026-06-01.md「(mature:1.5)(milf:1.5)等NEG+(18-21 years old:1.4)POS/量産前smokeで若さ目視」。memory/feedback_prompt_weight_overload_fry_2026-06-09.md「(tag:1.3〜1.4)を多数積むと全面ネオン破綻/基本1.0、必要な数個だけ1.1〜1.2、1.3以上は原則禁止」。memory/feedback_no_second_comfyui_8189_crash_2026-06-10.md「2本同時起動でRAM枯渇PC全体クラッシュ/8188に集約/起動前にcurl 8188/queue確認」。_cc1_lora_queue.jsonを_cc1_chars2000.jsonから生成(tier付き2050エントリ)→
②_cc1_lora_factoryのstep4前にComfyUI kill+lock処理を挿入→
③_cc1_orchestratorを「学習トリガー+verify_loop」に拡張→
④メインループ+GPUゲート+registry/archiveを_cc1_lora_orchestrator_2026-06-12.pyとして新規→
⑤_cc1_supervisorに新オーケストレータをDAEMONS追加→タスクスケジューラ登録→
⑥S 44体で実走テスト→人間目視→無人解放。