Orannue's picture
Upload preference refinement pipeline README
789b6fb verified
|
Raw History Blame Contribute Delete
12 kB

Preference Refinement Pipeline

本文档记录当前 RelationAdapter refinement 的实际数据、训练方法、实验结果和下一轮扩展方案。文中将原始 text-decoupled LoRA 简称为 TD,新加入的 refinement LoRA 简称为 RF。

1. 当前目标

给定同一关系编辑条件下的 best--worst pair,训练一个轻量 RF LoRA,使模型:

  1. 相比冻结 TD 更偏好 best、排斥真实生成出的 worst;
  2. 保持 TD 已有的 source identity、构图、纹理和清晰度;
  3. 推理时仍然只运行一个合并后的模型,不增加 diffusion steps;
  4. 能够与 TD baseline 使用相同 case、相同 seed 做严格前后对比。

2. TD baseline

当前 1024、无文本 TD checkpoint:

data/refinement_assets/models/Orannue_resubmit/
  relation252k_rope_1024_no_text5/iteration-40000.safetensors

训练 RF 时:

frozen FLUX.1-Kontext-dev backbone
  + merged and frozen TD LoRA
  + zero-initialized trainable RF LoRA

关闭 RF adapter 时模型严格退化为 TD;只有 RF LoRA 参数参与反向传播。

3. 当前 candidate 数据

3.1 Condition 采样

Relation252K 官方训练划分包含 220 个 edit group。当前每个 group 随机选取 5 个不同的 demo/query 组合:

220 groups x 5 conditions = 1,100 conditions

一个 condition 包含:

cond1 + cond2 + source + GT target

构建脚本:

DiffSynth-Studio/tools/refinement/build_relation252k_refinement_multi.py

3.2 TD 自采样

每个 condition 使用 TD 生成 5 个固定 seed:

1,100 conditions x 5 seeds = 5,500 TD candidates

合并后的 manifest:

data/refinement_candidates/rope1024_refinement_1100_5seed/generation.json

所有候选均为空文本推理。生成图是 2x2 grid,真正 result 位于右下角;排序、构建训练 pair 和评估时都只裁剪右下角。

4. Best--worst 排序

4.1 候选集合

对于每个 condition:

  • best 从 GT + 5 TD candidates 中选择;
  • worst 只从 5 个 TD candidates 中选择;
  • GT 同时作为一个候选和 GT-direction scoring reference;
  • worst 不允许选择 GT。

4.2 自动指标

CLIP condition edit direction:

dcond=norm⁡(ECLIP(cond2)−ECLIP(cond1)), d_{\mathrm{cond}} =\operatorname{norm}(E_{\mathrm{CLIP}}(\mathrm{cond2})-E_{\mathrm{CLIP}}(\mathrm{cond1})),

dresult=norm⁡(ECLIP(y)−ECLIP(source)), d_{\mathrm{result}} =\operatorname{norm}(E_{\mathrm{CLIP}}(y)-E_{\mathrm{CLIP}}(\mathrm{source})),

sdemo=dresultTdcond. s_{\mathrm{demo}}=d_{\mathrm{result}}^T d_{\mathrm{cond}}.

另外计算:

  • CLIP GT direction:candidate 相对 source 的变化是否接近 GT 相对 source 的变化;
  • DINO preservation:candidate 与 source 的结构/身份相似度。

三个分数先在同一个 condition 的候选内部转换为 rank,再组合:

s=0.55sdemo−rank+0.30sGT−rank+0.15spreservation−rank. s=0.55s_{\mathrm{demo-rank}} +0.30s_{\mathrm{GT-rank}} +0.15s_{\mathrm{preservation-rank}}.

4.3 当前自动通过条件

一个 pair 被称为自动高置信,仅表示它不需要进入当前 review queue,必须同时满足:

  1. 三个独立指标中至少两个同意所选 best;
  2. 三个独立指标中至少两个同意所选 worst;
  3. best 与 worst 的 combined rank margin 不小于 0.25。

这不是人工正确性保证,也不应在论文中描述为人工标注。

当前结果:

项目 数量
全部 conditions 1,100
自动通过 pairs 512
进入 review queue 588
自动通过 pair 覆盖的 groups 198 / 220
GT best + TD worst 498
TD best + TD worst 14

训练 pair manifest:

data/refinement_pairs/rope1024_refinement_1100_highconf/residual_pairs.json

5. 旧 residual RF

旧方法在同一个 noised worst latent 上回归固定 latent residual:

Δv=vTD+RF−sg⁡(vTD), \Delta v =v_{\mathrm{TD+RF}}-\operatorname{sg}(v_{\mathrm{TD}}),

Lresidual=∥Δv−γ(z0w−z0b)∥22. \mathcal L_{\mathrm{residual}} =\left\|\Delta v-\gamma(z_0^w-z_0^b)\right\|_2^2.

512-pair 实验配置:

learning rate: 2e-5
steps: 1,000
RF rank: 32
residual strength: 0.2
anchor: 0

旧方法能够增强部分编辑,但由于 498/512 的 best 是 GT,worst - GT latent 差包含编辑以外的纹理、光照、构图和随机生成差异。直接 MSE 回归这些完整差异会产生平均化和模糊。

旧 RF 的较好推理折中为 step 1000 / RF scale 0.5:

指标 相对 TD 的变化
combined edit score +0.0128
DINO preservation -0.0237
edge sharpness -13.8%

因此仅降低 RF inference scale 可以减轻模糊,但不能解决旧 objective 的根本问题。

6. 当前 preference RF

训练入口:

DiffSynth-Studio/examples/flux/model_training/
  train_finetune_preference_refinement_rope1024.py

6.1 Same-noise pair

对同一个 best--worst pair,采样相同 timestep 和相同 noise:

ztb=(1−σt)z0b+σtϵ, z_t^b=(1-\sigma_t)z_0^b+\sigma_t\epsilon,

ztw=(1−σt)z0w+σtϵ. z_t^w=(1-\sigma_t)z_0^w+\sigma_t\epsilon.

分别计算 TD+RF 和冻结 TD 对 best/worst 的 flow-matching MSE:

ℓθb, ℓθw,ℓTDb, ℓTDw. \ell_\theta^b,\ \ell_\theta^w, \qquad \ell_{\mathrm{TD}}^b,\ \ell_{\mathrm{TD}}^w.

相对 preference margin 为:

m=(ℓθw−ℓθb)−(ℓTDw−ℓTDb). m= (\ell_\theta^w-\ell_\theta^b) -(\ell_{\mathrm{TD}}^w-\ell_{\mathrm{TD}}^b).

Preference loss:

Lpref=−log⁡σ(β2wtm). \mathcal L_{\mathrm{pref}} =-\log\sigma\left(\frac{\beta}{2}w_t m\right).

它只要求 TD+RF 相比冻结 TD 更偏好 best,不要求输出逐像素或逐 latent 拟合 GT。

6.2 TD anchor

对 best 和 worst 两条输入都约束 RF 不要过度偏离 TD:

Lanchor=wt2(∥vθb−vTDb∥22+∥vθw−vTDw∥22). \mathcal L_{\mathrm{anchor}} =\frac{w_t}{2} \left( \|v_\theta^b-v_{\mathrm{TD}}^b\|_2^2 +\|v_\theta^w-v_{\mathrm{TD}}^w\|_2^2 \right).

当前总 loss:

L=Lpref+λanchorLanchor \boxed{ \mathcal L =\mathcal L_{\mathrm{pref}} +\lambda_{\mathrm{anchor}}\mathcal L_{\mathrm{anchor}} }

代码支持额外的 best SFT loss,但当前设置为 0,避免再次引入 GT 整图回归:

preference_best_weight = 0

6.3 已运行配置

pairs: 512
learning rate: 5e-6
beta: 1.0
anchor weight: 0.05
best SFT weight: 0
RF rank: 32
GPUs: 2
training steps: 500
checkpoint interval: 100

训练 Job 12369888 已完成。单卡真实 loss smoke 的峰值显存为 42.56 GiB;正式训练只保存 RF LoRA。

7. 当前 preference RF 结果

相同 seed 的 10-case 初步验证结果:

方法 combined edit DINO preservation edge sharpness
旧 residual RF 最佳点 +0.0128 -0.0237 -13.8%
Preference RF step 200 +0.0285 -0.0140 +9.5%
Preference RF step 300 +0.0429 -0.0347 +27.7%

当前选择 step 200:

  • 编辑增益高于旧 RF;
  • source preservation 损失小于旧 RF;
  • 没有旧 residual MSE 的整体模糊;
  • step 300 开始明显变得激进;
  • step 400--500 出现高频描边和崩坏,不能使用。

这说明 preference objective 有效,但当前 beta=1.0 / anchor=0.05 的稳定训练窗口较窄,必须 early stop。下一轮可尝试降低 beta 或提高 anchor,使 200 steps 之后不再快速发散。

HF 前后对比:

https://huggingface.co/Orannue/resubmit/tree/main/
rope1024_preference_rf_beta1_anchor005_step200_before_after

8. 当前 512 pairs 是否足够

8.1 足够的部分

512 pairs 已足够用于:

  • 验证 preference loss 能否正常工作;
  • 对比旧 residual MSE 与 preference RF;
  • 发现合理的 checkpoint 和超参数趋势;
  • 证明 hard negative 对编辑增强有训练信号。

8.2 不足的部分

512 pairs 还不足以作为最终正式 refinement 数据:

  1. 只覆盖 198/220 groups,22 个 edit group 没有自动通过 pair;
  2. 平均每个已覆盖 group 只有约 2.6 pairs;
  3. 498/512 的 best 是 GT,positive 类型过于单一;
  4. 当前正式前后评估只有 10 cases,且仅来自排序后的前两个 edit group;
  5. 自动指标同时参与 pair 选择和当前模型选择,存在 metric overfitting 风险;
  6. 588 个 review cases 尚未利用,其中可能包含大量有效 hard negatives。

因此当前结果应称为 method validation,不能直接作为最终论文性能结论。

9. 推荐的数据扩展顺序

9.1 第一优先级:复核现有 588 cases

先对 review queue 做人工或独立视觉 reviewer 复核,而不是立即重新生成全部数据:

  • 确认 source identity 是否保持;
  • 确认 cond1--cond2 编辑是否在 result 中出现;
  • 确认 worst 是否确实是语义失败,而不只是低清晰度;
  • 保留具有明确错误模式的 hard negative;
  • 拒绝仅因自动指标噪声被选中的 pair。

如果能从 588 cases 中恢复一半,训练集可从 512 增加到约 800 pairs,且无需额外生成成本。

9.2 第二优先级:每个现有 condition 增加 seed

当前每个 condition 只有 5 个 TD samples。建议追加 3 个 seed:

1,100 conditions x (5 existing + 3 new) = 8,800 candidates

相对当前只需新增:

1,100 x 3 = 3,300 images

增加同一 condition 下的 seed 比立即增加 condition 更适合当前目标,因为 preference RF 的主要训练信号来自 hard negative。更多 seed 可以提高找到真实失败样本的概率。

但不能只按当前 CLIP/DINO 组合分数机械选择最差图;候选越多,越容易选到指标 adversarial artifact,因此必须结合视觉 review。

9.3 第三优先级:补齐 group 覆盖

针对当前没有自动通过 pair 的 22 个 groups,定向增加 conditions 和 seeds,直到每个 group 至少有 3 个确认可用 pairs。

全 220 groups 的最低平衡目标:

220 groups x 3 accepted pairs = 660 balanced pairs

正式训练更建议达到:

1,000--1,500 reviewed or independently verified pairs

这是当前项目的工程目标,不是通用理论阈值。训练时还应进行 group-balanced sampling,避免候选多的 group 主导 RF。

9.4 第四优先级:增加 conditions

只有在复核 588 cases、追加 seed 和补齐 22 groups 后仍缺少覆盖时,再把每个 group 的 condition 数从 5 提高到 8--10。

直接使用 10 conditions/group、5 seeds 会产生:

220 x 10 x 5 = 11,000 candidates

这能扩展 source/query 多样性,但成本高于先给现有 conditions 添加 seed。

10. 推荐下一轮正式方案

数据

  1. 复核 588 review cases;
  2. 对 1,100 conditions 追加 3 seeds;
  3. 对缺失的 22 groups 定向补样;
  4. 构建约 1,000--1,500 个高质量、group-balanced pairs;
  5. 单独保留每个 group 的 held-out test case,不参与 pair 选择。

训练

建议以当前 step-200 结果为参照,重新从 zero-init RF 开始小规模参数消融:

实验 beta anchor 目的
A 0.5 0.05 减弱 preference 更新
B 1.0 0.10 增强 TD 保持
C 0.5 0.10 最保守组合

每个实验先训练 300 steps,每 50 steps 保存。只有在 50 个以上、跨 group 的 held-out cases 上确认稳定后,再扩大训练步数。

评估

至少同时报告:

  • CLIP condition directional score;
  • GT directional score;
  • DINO source preservation;
  • 清晰度/高频 artifact 检查;
  • 独立 GPT 或人工视觉评分;
  • 相同 seed 的 TD vs TD+RF 前后对比。

模型选择不能只依赖构建 best--worst 数据时使用的同一套自动指标。

11. 结论

当前 512-pair preference RF 已证明:相对旧 residual MSE,pairwise preference + TD anchor 能获得更强的编辑增益、更小的 source 损失,并避免整体模糊。

但 512 pairs 和 10-case 验证仍不足以支撑最终模型结论。下一步最有价值的工作不是继续增加训练步数,而是:

  1. 复核现有 588 cases;
  2. 为当前 1,100 conditions 增加 seed,获得更可靠的 hard negatives;
  3. 补齐 22 个缺失 groups;
  4. 在更大、跨 group 的 held-out 集合上选择 beta、anchor 和 early-stop step。