8.6 KiB
💛 Checkpoint Status Tagger (右手 v0.3.1)
Checkpoint Status Tagger は、出力された画像を見ながら、そのモデルに対して冷徹かつ瞬時に格付け(ステータスタグ打ち)を行う「シャドウガーデンの執行官」じゃ。
最大の特徴は、不要と判断したモデルをその場ですぐに物理削除(消去)せず、一旦「削除予約(Delete Reservation)」という安全なバッファ状態に留める設計にあるのじゃ。
v0.2.0のアップデートでは、ついに最上位の絶対神ステータス god! (👑) が降臨!さらに、**「不要モデルを消す際に、邪魔なサムネイル画像(.jpgなど)も一緒に消し去ってくれる」**という超絶便利な機能まで手に入れてしまったぞい!
🔌 入出力仕様(Specifications)
📥 入力(Inputs)
ckpt_name_str(必須 / STRING): 格付け対象とするCheckpointのファイルパス文字列。Checkpoint Name Cyclerの同名出力から繋げば「今まさにその画像を吐き出しているモデル」が対象となり、Checkpoint List Selectorから繋げば「今画面で目視検分しているモデル」、あるいは「タブレットのDirectLinkで外部レビュー中のモデル」が対象となるぞ。
📤 出力(Outputs)
- 出力ソケットはない。
- 評価を保存する終端ノードとして使用する。
🎛 5つの格付けボタン(Status Toggles)
ノード上にはおぬしの魂を込める5つのステータスボタンが並んでおる。これらは「トグル(もう一度押すと解除して none に戻る)」で切り替わるぞ。
god! (👑)── 絶対神!殿堂入り!未来永劫守り抜く最強のモデルじゃ! 【New!】favorite (💛)── お気に入り!よく使うエース級。Cyclerの狙い撃ちフィルター対象じゃ。nice (👍)── 実用的な良モデル。これもフィルターで優遇できるぞ。keep (✔)── 保留・キープ。とりあえず延命させる通常モデルじゃ。delete (🗑)── 削除予約。 SSDの闇へと葬るための処刑宣告じゃ。
🛡️ 誤爆を100%防ぐ「右手の誇り(排他制御)」
本ノードには、うっかりミスで神モデルを消し去らぬよう、鉄壁のバリデーションが組まれておる。
god!(👑) / favorite(💛) / nice(👍) / keep(✔) のいずれかが点灯している(有効な)状態のときは、delete(🗑) ボタンはフロントエンド側で物理的にグレーアウトして押せなくなり、バックエンド(Pythonサーバー)側でも削除キューへの追加を絶対に弾く仕様になっておるのじゃ!
削除予約をするには、必ず現在のプラス評価を一度オフ(none)にするステップを踏まねばならん。右手の誇りにかけて、おぬしの推しモデルを全力で守護するぞ!
🧠 技術的・運用深淵:【なぜ即座に消さず、削除予約なのか?】
一般的な管理ツールのように「不要ならその場で即座に unlink(ファイル削除)すればいいではないか」と思う不届き者もおるかもしれん。しかし、それをやらない(やってはならない)のには、運用面と技術面における深遠な理由があるのじゃ。
👥 1. 運用面の理由:【審判のやり直し(リライト)アビリティ】
何百件もの夜間バッチを回していると、1枚目のプロンプトでは「うわ、このモデル絵柄が崩れててダメじゃな、削除(🗑)!」と判断してしまうことがある。 しかし、その直後に別のプロンプト(ジョブ)で、文字通り脳が吹き飛ぶほどの「奇跡の神絵」をそのモデルが吐き出す瞬間が訪れるかもしれない。
もし即座に物理削除されていたら、その奇跡を目撃することはできず、神モデルは永遠に失われていた。
「削除予約」という猶予状態にしておくことで、「さっきは削除タグを打ったが、この神絵を見たからにはやっぱり keep や god! に戻すのじゃ!」という、神の指先によるジャッジの覆しが、いつでも1クリックでノーリスクに執行できるようになるのじゃよ!
💻 2. 技術面の理由:【OSのファイルロック回避 & ジョブ安全性】
技術的には、さらに深刻なリアルタイム運用の壁が存在する。
- OSによるファイルロックの壁: ComfyUI(Python)がまさに現在処理(KSamplerなどで生成)を行っているCheckpointファイルは、OS(Windows/Linux等)のシステムによってガチガチにファイルロックが掛けられている。 そのため、実行中に外部から直接ファイルを消そうとしても「アクセスが拒否されました」とエラーになり、そもそも物理的に消去することができんのじゃ!
- 生成パイプラインの保護: もしジョブの隙間を縫ってリアルタイムにファイルを無理やり消し去った場合、プロンプトサーバーのキュー(待ち行列)の奥深くに積まれている「次のジョブ」がそのモデルを読み込もうとした瞬間、パスを見失ってシステムが盛大に大破(クラッシュ)してしまう。
【その場で即時削除しようとした場合(墜落)】
[現在処理中] ── 🔒 OSがモデルをロック中!消そうとするとエラー発生
[ジョブ待機] ── 💥 実行中にモデルが急に消えると、次のジョブがパスを見失ってComfyUI全体が墜落!
【HandpickerSuiteの削除予約システム(安全・堅牢)】
[Taggerで🗑を押す] ── 📝 テキストの予約キュー(JSONL)にメモるだけ。生成ラインは1ミリも止まらない!
[全てのジョブ完了] ── 🌅 週末などに安全なタイミングで、専用スクリプトから対話的に一括物理執行!
ゆえに、本Suiteは生成ラインの稼働中にストレージへ一切の暴力を振るわない。
delete(🗑) が押された時は、データディレクトリ内の checkpoint_delete_queue.jsonl に「このモデルは後で消す候補じゃぞ」と、軽量なテキストの暗殺リスト(キュー)を書き残すだけに留める。
この鮮やかな非同期設計により、生成パイプラインの安全性を100%担保したまま、超高速な格付けスピードを実現しているのじゃ!
🗑 削除スクリプトによる最終執行(The Execution)
夜間バッチや選別作業がすべて終わり、安全なタイミング(朝や週末など)になったら、おぬしの手でSSDの容量を完全に解放(パージ)してくりゃれ。
- ターミナル(コンソール)を開き、出力先ディレクトリ(
ComfyUI/output/CheckpointHandpickerSuite/delete_scripts/)に自動生成されている以下のスクリプトを実行するのじゃ。(※v0.2.0から出力場所がテンポラリから出力フォルダ側へ安全に移設されたぞ!)
python ComfyUI/output/CheckpointHandpickerSuite/delete_scripts/delete_reserved_checkpoints.py
- スクリプトが起動すると、削除予約リストから1件ずつモデルのパス、紐づいている
.json(メタデータ等)、そして なんとサイドカーサムネイル画像(.jpg / .png など)まで自動検知 して画面に表示し、Delete this checkpoint? (y/N):と最終確認を迫ってくるぞ!チリひとつ残さぬ徹底ぶりじゃ! - 本当に不要なら
yを、やっぱり残したくなったらnを押すのじゃ!(ここで心変わりしてもセーフじゃ!) - 物理削除が完了したら、ComfyUIの画面に戻って Selector の
🔄 Refresh Allボタンをポチッと一発叩くのじゃ。それだけで、空き容量ができた最新のストレージ状態が再起動なしで一瞬でシステムへ反映されるぞ!