From 814cece02f0b85f8079a7af2c03592d0c35a2086 Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Sat, 30 May 2026 10:39:22 +0300 Subject: [PATCH] Revert "Add pre-generation conditioning ascent to value function guidance" This reverts commit 1283203c648129bcbed2274db93f078d5427c6f5. --- samplers.py | 10 +--------- value_function.py | 24 ------------------------ 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/samplers.py b/samplers.py index 22e14df9..b00afa0d 100644 --- a/samplers.py +++ b/samplers.py @@ -1467,11 +1467,7 @@ class FunPackLTXAVSceneChainSampler: print("[FunPackSceneChain] embed_guidance: no liked direction found (need 3+ liked generations)") else: _value_fn = self._load_value_function(refinement_key_input) - if _value_fn: - ready = _value_fn.is_ready() - mode = f"value function ({_value_fn.n_trained} samples, ascent {'on' if ready else 'pending'})" - else: - mode = "fixed direction" + mode = f"value function ({_value_fn.n_trained} samples)" if _value_fn else "fixed direction" print(f"[FunPackSceneChain] embed_guidance: active via {mode}, strength={embed_guidance_strength}") first_scene_seed = self._scene_seed(scene_conditionings[0]) @@ -1517,10 +1513,6 @@ class FunPackLTXAVSceneChainSampler: else: guide_tail = 0 - if embed_guidance and _value_fn is not None and _value_fn.is_ready(): - orig_cond, orig_extra = scene_positive[0][0], scene_positive[0][1] - ascended = _value_fn.ascend(orig_cond) - scene_positive = [[ascended, orig_extra]] + list(scene_positive[1:]) if embed_guidance and _liked_dir is not None: _eg_old_wrapper = self._build_embed_guidance_wrapper(model, _liked_dir, embed_guidance_strength, value_fn=_value_fn) sampled = self._sample_chunk( diff --git a/value_function.py b/value_function.py index 7f0683d4..8609f230 100644 --- a/value_function.py +++ b/value_function.py @@ -85,30 +85,6 @@ class OnlineValueFunction(nn.Module): reward.backward() return c_fresh.grad.to(orig_device, conditioning.dtype) - def ascend(self, conditioning): - """Gradient ascent on conditioning until reward plateaus. Self-terminating, no user params.""" - if not self.is_ready(): - return conditioning - mlp_device = next(self.parameters()).device - orig_device = conditioning.device - orig_dtype = conditioning.dtype - step_size = conditioning.float().norm().item() * 0.005 - prev_reward = -float("inf") - with torch.inference_mode(False), torch.enable_grad(): - c = torch.empty(conditioning.shape, dtype=torch.float32, device=mlp_device) - c.copy_(conditioning) - for _ in range(50): - c = c.detach().requires_grad_(True) - reward = self.forward(self.compress(c).unsqueeze(0)) - reward.backward() - reward_val = reward.item() - grad = F.normalize(c.grad.float(), dim=-1) - c = c.detach() + step_size * grad - if reward_val - prev_reward < 1e-3: - break - prev_reward = reward_val - return c.detach().to(orig_device, orig_dtype) - def is_ready(self): return len(self.buffer_c) >= self.MIN_SAMPLES