From d5f102c828384366d644e774b44e2c7a8b3703c1 Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Thu, 23 Apr 2026 20:37:28 +0300 Subject: [PATCH] Split refiner status from training info --- conditioning.py | 40 ++++++++++++++++++++++------ docs/FunPackGemmaEmbeddingRefiner.md | 4 +-- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/conditioning.py b/conditioning.py index beab6562..8b8e4710 100644 --- a/conditioning.py +++ b/conditioning.py @@ -2543,16 +2543,40 @@ class FunPackVideoRefiner: "⚠️ Still exploring" if avg_reward_ema > -0.2 else "🔄 Heavy correction" ) + pending_feedback = data.get("pending_feedback") + if not feedback_enabled: + feedback_state = "Feedback off" + elif pending_feedback is not None: + feedback_state = f"Feedback queued for '{pending_feedback.get('concept_label', 'concept')}'" + else: + feedback_state = "Feedback ready" + + suggestions_snapshot = active.get("lora_weight_suggestions", {}) + suspect_count = sum(1 for item in suggestions_snapshot.values() if item.get("suspect")) + if isinstance(lora_stack, dict) and lora_stack.get("loras"): + lora_state = f"LoRA active ({len(lora_stack.get('loras', []))} loaded" + if suspect_count > 0: + lora_state += f", {suspect_count} suspect" + lora_state += ")" + else: + lora_state = "LoRA idle" + + sigma_state = "Sigma active" if isinstance(sigmas, torch.Tensor) and sigma_strength != "off" else ( + "Sigma connected (off)" if isinstance(sigmas, torch.Tensor) else "Sigma idle" + ) + + latent_state = ( + "Latent active" if latent_output_connected and refined_latent is not None else + "Latent armed" if latent_output_connected else + "Latent idle" + ) status = ( - f"Mode {mode.upper()} | Iter {iter_num} | Total iters {global_total_iterations} | " - f"History {len(history)} | Unique prompts {len(prompt_histories)}\n" - f"Rating {rating}/10 {trend} | Sim {similarity:.3f} | Reward {reward:+.2f} | " - f"EMA {avg_reward_ema:+.2f} | Good ratio {good_ratio:.0%} | Expl {expl:.3f} | {health}\n" - f"Dominant: {dominant_line} | Groups: {group_line}\n" - f"{lora_suggestion_status}\n" - f"{sigma_status}\n" - f"{latent_status}" + f"{health} | Mode {mode.upper()} | Rating {rating}/10 {trend} | Iter {iter_num}\n" + f"Session: {len(prompt_histories)} prompt(s), {global_total_iterations} total update(s), " + f"{len(history)} history item(s) on this prompt\n" + f"Focus: {dominant_line} | {feedback_state}\n" + f"Systems: {lora_state} | {sigma_state} | {latent_state}" ) # ====================== FINAL SAVE ====================== diff --git a/docs/FunPackGemmaEmbeddingRefiner.md b/docs/FunPackGemmaEmbeddingRefiner.md index 5cedad04..f8c63ae9 100644 --- a/docs/FunPackGemmaEmbeddingRefiner.md +++ b/docs/FunPackGemmaEmbeddingRefiner.md @@ -40,11 +40,11 @@ If you want the model to preserve speech or spoken lines, wrap that text in `"` **modified_positive**: Refined conditioning. Connect this output to the next conditioning stage in your workflow. -**status**: Human-readable training status, including iteration and refinement diagnostics. +**status**: Short general node state summary. Use this to quickly see whether the refiner is learning well, what it is focused on, and which subsystems are active. **feedback_question**: Optional concept feedback prompt generated by the node when feedback mode is active. -**training_info**: Additional training details for the current refinement step. +**training_info**: Detailed training diagnostics for the current refinement step, including exact metrics, concept breakdown, LoRA suggestion details, and sigma/latent refinement details. **loss_graph**: Graph image showing learning loss over total session iterations for the current refinement key.