+ 针对 SenseNova-U1-8B-MoT 基模的 LoRA / Partial Fine-tuning 训练器维护团队 +
+ ++ SenseNova-U1 公开技术报告披露的 text-to-image 流匹配训练在三个关键算法层 + 上做出特定选择:以速度 (velocity) 为目标的损失函数、logit-normal 时间步采样、 + 以及 condition dropout 形式的无分类器引导校准。在大规模预训练或后训阶段, + 这些选择共同支撑了模型最终行为。但对小数据风格 LoRA 微调而言,是否应当继承 + 这一组合并未由现有公开文献回答。本文以 56 张 Hayateluc 风格图像与 8B-MoT 基模 + 为受控环境,对三个官方算法层逐一做单变量消融,并与 v18 本地基线 (x0-MSE + 损失、uniform 时间步、零 dropout) 进行对比,同时纳入 prompt 前缀格式作为额外 + 受控变量。所有训练运行 6000 步,并在统一 prompt 集上做多步采样以做视觉评估。 + 结果表明,逐项替换为官方设置后,训练 loss 不发散,但完整采样图像呈 + 现可观察的图像重建质量劣化:(i) velocity 损失导致天空与大面积渐变上 + 规则横向条纹 (banding) 与 photoreal 化;(ii) logit-normal 时间步导致大面积平 + 滑色块上高频 speckle 噪点与色阶离散化;(iii) 两者组合时进一步出现远景元素缺 + 失、构图被压缩的结构扭曲 (structural distortion),已超出 "style drift" 范畴而 + 属重建质量缺陷。condition dropout 是三项中唯一未引入可见劣化的项,反而轻 + 微改善图像结构质量。基于该结论,我们将仓库的发布默认值保持为本地基线,并 + 把官方对齐组合作为可选的 ablation 配置发布,供研究复现使用。 +
++ Keywords — + 流匹配 (flow matching) · + LoRA 微调 · + 消融研究 · + classifier-free guidance · + 风格迁移 · + SenseNova-U1 +
++ SenseNova-U1 公开报告 [1] 在 text-to-image 流匹配训练中采用三个具体的算法层: + 速度损失 (velocity loss)、logit-normal 时间步采样、以及在条件 prefix 上的 dropout + 作为 classifier-free guidance (CFG) 的校准信号。这一组合在该报告所对应的大规模 + 数据与多阶段训练管线下是合理且互相支撑的设计选择。 +
++ 与之相对,在小数据风格 LoRA 微调场景下,训练目标的属性发生了实质变化:训练数据 + 规模通常在 101–102 张量级,目的是从基模注入一个相对集中的 + 视觉风格 fingerprint,而非更新一个完整的世界模型。这种情况下,将官方训练配置整 + 体迁移过来是否仍最优,并不显然。 +
++ 本文以 SenseNova-U1-8B-MoT 为基模,在 56 张 Hayateluc 风格图像数据上做受控消 + 融。具体贡献为三点: +
++ (i) 提出一组单变量消融配置,分别替换官方三个算法层中的一个,并 + 与 v18 本地基线对照,使得每对差异可被归因到单一 lever。 + (ii) 指出 prompt 前缀格式 (训练时 caption 中风格 anchor 的位置) + 是一个独立而强的混淆变量;在没有控制该变量前,单纯的 lever 替换会得到误导性的视 + 觉差异。 + (iii) 基于训练标量曲线与多步采样视觉评估,识别每个官方 lever + 引入的具体图像重建质量缺陷:velocity 损失→横纹 + photoreal 化、logit-normal + 时间步→噪点 + 色阶离散化、两者叠加→结构扭曲。condition dropout 是唯一对小数据 + 风格 LoRA 无损甚至有益的官方算法层。 +
+ ++ 设 x0 为目标图像 patch,ε 为各向同 + 性高斯噪声,时间步 t ∈ [tε, + 1 − tε]。本仓库与上游推理共用如下线性插 + 值约定 (linear-z schedule,t 越接近 1 越接 + 近干净图): +
++ 在 x0-MSE 损失下,训练目标为 + Lx0 = + 𝔼 ‖xθ(zt,t) + − x0‖2; + 在 velocity 损失下,Lv = 𝔼 + ‖vθ(zt,t) + − v★‖2。代入 + v★ = (x0 − zt)/(1 − t) + 与 vθ = (xθ − zt)/(1 − t),可得二者关系为 +
++ 即 velocity 损失等价于以 (1 − t)−2 重新加权的 + x0-MSE。该权重在 t → 1 (近 clean 端) 发散,因此训 + 练梯度的有效分布严重偏向高 t 区间。 +
+ ++ uniform 采样取 t ∼ U(tε, + 1 − tε)。logit-normal 采样定义为 + u ∼ N(μ, σ2), + t = σ(u),其中 + σ 为 sigmoid。本文 logit-normal 取 + μ = −0.8, σ = 0.8,对应 + 𝔼[t] ≈ 0.34,将概率质量偏向较低 t + (较 noisy 一侧)。 +
+ ++ 设每步训练以独立概率 ptext 将文本条件 + 替换为空 prompt 对应的 prefix KV;以独立概率 pboth + 走 “text + image” 全部 drop 的分支。在纯 T2I 场景下,这两个 drop 模式都会回退到 + 统一的 unconditional prefix。本文取 + ptext = pboth = 0.10, + 即约 20% 步使用无条件 prefix。 +
+ ++ 训练数据为 56 张 Hayateluc 风格自然语言 caption 配对图像,分布在 7 个 aspect-ratio + bucket 上 (最大像素数 ≤ 20482)。基模为 SenseNova-U1-8B-MoT [1],加载方式为 + bf16 CPU 驻留 + 静态前缀 KV cache 的低显存 LoRA 训练,单卡 32 GB 峰值约 21 GB。 +
+ ++ 所有实验共享如下可训练面,保证不同运行间差异仅来自表 1 列出的三个 lever。 + 表 2 给出训练面分层;表 3 给出训练超参。 +
+ +表 2. 训练面分层。LoRA / partial FT / frozen + 三类合计 286M 可训练参数。所有运行共享此结构。
+| 类别 | +覆盖模块 | +参数量 | +备注 | +
|---|---|---|---|
| LoRA wrap | +
+ 注意力:q_proj_mot_gen, k_proj_mot_gen,
+ v_proj_mot_gen, o_proj_mot_gen;+ MLP: mlp_mot_gen.{gate,up,down}_proj
+ |
+ ~204M | +共 294 wrap;r = 64, α = 64 | +
| Partial fine-tune | +
+ fm_modules.timestep_embedder,+ fm_modules.noise_scale_embedder,+ fm_modules.vision_model_mot_gen,+ fm_modules.fm_head
+ |
+ ~82M | +仅 fm_modules 子树 |
+
| Frozen | +Understand path 全部模块及其它未列出的所有权重 | +— | +不更新 | +
表 3. 训练超参。所有运行共享。
+| 训练步数 | +6000 | +学习率 | +5 × 10−5 | +
| 优化器 | +PagedAdamW8bit | +Batch size | +1 (native resolution) | +
| Gradient accumulation | +1 | +Seed | +固定 (cross-run) | +
+ 本文设五组运行做单变量消融,其中四组训练运行共享数据与可训练面 (表 1)。 +
+ +表 1. 五组消融运行的算法配置。baseline + Baseline 为本仓库默认;运行 (a)–(d) 对应官方算法层逐项与全部替换。
+| 运行 | +L | +t 分布 | +ptext, pboth | +训练 prefix 注释 | +
|---|---|---|---|---|
| v18 baseline | x0 | uniform | 0, 0 | 含 think sidecar 长前缀 |
| (a) +velocity loss | v | uniform | 0, 0 | 含 think sidecar 长前缀 |
| (b) +logit-normal t | x0 | logit-normal | 0, 0 | 含 think sidecar 长前缀 |
| (c) +cond. dropout | x0 | uniform | 0.10, 0.10 | 含 think sidecar 长前缀 |
| (d) full official (a + b + c) | v | logit-normal | 0.10, 0.10 | 含 think sidecar 长前缀 |
+ 训练时记录每步 active loss、x0-MSE、v-MSE、t 统计量、 + 以及 dropout 路由计数;121-step 滑动平均后绘制。采样评估使用一组固定的 12 条 + 自然风景 prompts,在统一的 7 个 bucket 分辨率下做 50 步 Euler、 + cfg_scale = 4.0、timestep_shift = 3.0。 + 我们额外引入 prompt 前缀格式变量:v1 prompts 保留与 baseline 训练分布一致的 + 简短前缀;v2 prompts 在每条句首嵌入 artist anchor,与含 think sidecar 的训练 + caption 分布对齐。 +
+ ++ 图 1–3 给出 x0-MSE、active loss 与 v-MSE 三条标量曲线。x0-MSE 是唯一可跨损 + 失类型公平比较的指标:它是所有运行共同执行的诊断量。可见运行 (b) 与 (d) 在 + x0-MSE 上系统性高于 Baseline,差距贯穿整个训练,并非过 + 渡期偏差。 +
+ +
+ + 图 1. x0-MSE 在五组运行中的演化 (121-step 滑动平均)。 + (b) 与 (d) 系统性偏高,表明把 t 密度搬向较 noisy 区间会降低 + 模型在更清晰图像状态下学习颜色与构图的机会。 +
+
+ + 图 2. active loss 的绝对值不可跨目标比较 (velocity 损失与 + x0-MSE 单位不同)。该图仅用于检查每组运行内部是否存在有效下降趋势, + 所有运行均下降稳定,未出现训练发散。 +
+
+ + 图 3. v-MSE 作为诊断量在所有运行中都被计算。可观察到 v-MSE + 在 t → 1 端出现极端尖峰,与 §2.1 中给出的 + (1 − t)−2 加权一致。在 velocity 训练的运行 (a) 与 (d) + 中这些尖峰直接进入梯度,被高权重区间支配。 +
+
+ + 图 4. 实测 t 分布。logit-normal 运行 (b) 与 + (d) 的经验均值约 0.34,与理论值 σ(−0.8) ≈ 0.31 一致;其余运行 + 约为 0.50。 +
+
+ + 图 5. 含 condition dropout 的运行 (c) 与 (d) 中每步走 + cond / uncond 分支的累计次数。最终约 21% 步走 unconditional prefix,与设定的 + ptext + pboth + = 0.20 在大样本统计上吻合。 +
++ 训练标量只反映单步去噪行为,无法替代从纯噪声开始的多步采样。在固定 seed 与 + identical sampling 超参下,我们对每组运行生成 12 张 1024–2048 像素级风景图。 +
+ ++ 图 6 为 forest / wildflower meadow / dandelion field 三个最能体现风格 fingerprint + 的 prompt 在五组运行 (含 Baseline) 下的 contact sheet。关键观察: +
++ (i) Baseline 与运行 (c) 在所有三个 prompt 上都保持暖橙地平线、 + 青蓝高空、清晰前景轮廓的视觉指纹。 + (ii) 运行 (a) 在 dandelion field 上系统性向 photoreal 夜景偏移: + cyan 天空消失、puffball 密度降低、暖金核被压暗。 + (iii) 运行 (b) 在所有 prompt 上整体 palette 偏冷,紫蓝山失去层 + 次。 + (iv) 运行 (d) 同时承袭 (a) 与 (b) 的劣化,并叠加 composition + cropping:dandelion 图中失去远景 forest mass 与天空。 +
+ +

+ + 图 6. 同 prompt × 五组运行的 contact sheet (上→中→下三页连读)。 + 每列为一组运行,每行为一条 prompt。列名直接对应表 1 的算法配置差异。 + 风格 fingerprint 由暖金地平线、青蓝高空、painterly 厚笔触三要素共同定义; + 运行 (a) 与 (d) 出现 atmospheric drift,运行 (b) 出现 palette 偏冷。 +
++ §5.1 给出的是整图尺度上 palette / brushwork / 构图层面的偏移。但在原始 + 分辨率下查看局部,三个 v19 系列方案相比 v18 baseline 还呈现三类图像 + 重建质量层面的劣化,且每一类都与具体 lever 的训练分布偏置直接挂钩: +
++ 以下分别从三个 prompt 截取细节区域 (图 7、图 8、图 9)。每图以 v18 baseline 在最 + 上,按 (a) (b) (d) 顺序向下排列。 +
+ ++ Sample 00 (dense old-growth forest interior at dawn) 的画面左下、左侧粗树干、 + 右侧暗部都是低光强、低 SNR 区域,是 v-loss + logit-normal 组合下竖向格纹伪 + 影最先暴露的位置。运行 (d) 的左侧粗树干表面与右下苔藓层均出现可见的等间距 + 竖线。 +
+ +
+
+
+
+
+ + 图 7. Sample 00 画面下半 (左粗树干 + 中间地面 + 右下苔藓 + + 右侧上层树叶) 五向对比。 + v18:painterly chunky 厚笔触树干 + 暖色秋叶碎片 + 多层 silhouette + 清晰可分; + (a):god-rays 与 mist 大幅放大主导画面, + painterly chunky 厚笔触被 atmospheric haze 稀释成更软的笔触;树干与 + 地面 silhouette 基本保留,主要问题是风格 softening 与雾化过度; + (b):painterly 厚笔触与树形保留较好,但 + 左下暗部 + 右下暗部仍有未完全恢复的轻度竖向条纹 + (强度远低于 (d));高光 god-rays 中段也出现轻度结构化痕迹; + (c):五行中重建质量最接近 v18 — painterly chunky 树干 + 完整地面 + 碎叶都保留,god-rays 强度略偏 (a) 但 painterly 信息完整,无格纹或条纹伪影; + (d):左侧粗树干表面 + 中景树干 + 右下苔藓暗部出现明显竖向 striation 格纹, + 暗部 banding 最严重,painterly 信息几乎完全缺失。 +
++ Sample 02 (deep mountain lake at dawn) 的两侧针叶林 silhouette 与中央镜面倒影 + 是考察树形 painterly 是否退化、倒影是否出现竖纹的核心区域。运行 (d) 在两侧 + 树林区 + 水面倒影区均呈现 screen-door 竖向条纹。 +
+ +
+
+
+
+
+ + 图 8. Sample 02 中段 (左右两侧 painted tree silhouette + 中央 + 水面倒影 + 远雾) 五向对比。 + v18:painterly chunky 树形 + 厚笔触倒影 + 远山三层 silhouette + 清晰可分; + (a):整图 photoreal 化,painterly 笔触退化为 stock-photo 树形, + 倒影保留 photoreal 镜面但失去厚笔触; + (b):painted 风格部分保留,但远雾 + 倒影出现微弱竖向条纹; + (c):painted 风格保留较好,树形+倒影皆有 painterly 触感,未观察 + 到明显伪影; + (d):左侧山体 + 右侧针叶林 silhouette + 整个倒影区出现 screen-door 竖向 striation 格纹, + 覆盖范围广。 +
++ Sample 07 (backlit dandelion field) 主体为前景蒲公英 + 草丛 + 背光,是考察 + painterly 笔触是否被替换为 photographic bokeh、草丛暗区是否出现条纹的核心 + 区域。 +
+ +
+
+
+
+
+ + 图 9. Sample 07 主体区 (前景蒲公英 + 草丛暗部 + 暖背光) 五向 + 对比。 + v18:painterly chunky 笔触草叶 + painted 蒲公英 + 远景树线 + 可见; + (a):painterly 完全退化为 photographic bokeh, + 前景蒲公英变疏散小,背景暗化呈相机散景; + (b):painterly 较为完整 — chunky 草叶 + painted 蒲公英都还在, + 主要变化是视野相对收紧 (前景密度减少);草丛暗部存在轻度的竖向 streak,密度 + 低于 (d); + (c):painterly fingerprint 接近 v18 — 蒲公英密度高、chunky + 草叶 + 浮散种子全保留,无观察到格纹伪影; + (d):草丛暗部出现密集 cross-hatch 格纹 + (竖向 striation 为主,叠加微横向 banding),painterly 信息几乎完全缺失,整图 + 带 halftone 质感。 +
+
+ 我们在受控分析中发现,若 inference prompt 的 artist anchor 位置与训练 caption
+ 不一致,会引入与 lever 无关但视觉量级相当的差异。因此对 Baseline 与运行 (c) 额外
+ 做两组 prompt 集对比,结果见图 10。该结果说明把 prompt 写法与训练分布对齐是
+ 正确归因 lever 效果的必要前置条件,并解释了我们对 README 默认配置中保留
+ 显式 style.trigger 与忽略 think sidecar 的选择。
+



+ + 图 10. Baseline 在两组 prompt 集下的采样 (上→下四页连读)。 + 左:与训练同分布的短前缀 (含显式 style trigger);右:分布外的长 prompt。 + 完整采样在分布内稳定;这表明 Baseline 的强 fingerprint 不依赖额外 prefix 文本。 +
++ 由式 (2),Lv = + 𝔼 [‖xθ − x0‖2 + · (1 − t)−2],velocity 损失等价于在 x0-MSE + 上施加一个 (1 − t)−2 的权重函数。在 uniform + t 下,该权重在 t ∈ [0.9, 1.0] 区间承担约 64% + 的总积分质量。意即在 velocity 训练中,模型有大半的梯度信号被分配到 "接近 clean + 图但仍残留少量噪声" 的窗口。对于风格 LoRA 而言,颜色调性、构图、笔触特征均在 + t ∈ [0.3, 0.7] 这一中频窗口形成;velocity 损失显著削减了该窗口的 + 有效更新量,因而出现了 §5.1 (ii) 报告的 photoreal 夜景偏移。 +
+ ++ logit-normal (μ = −0.8, σ = 0.8) 将 + 𝔼[t] 从 0.5 移到 0.34,即把更多概率质量推向 noisy 端。该选择在 + 大规模数据下使得各 t 段都获得足够样本数;但在 56 张图、6000 + 步、batch=1 的小数据规模下,每个 mid-t bin 实际获得的有效样 + 本数本就稀疏,进一步的密度偏移导致 palette 与 mid-frequency texture 统计学习 + 不足,对应 §5.1 (iii) 报告的整体偏冷。 +
+ ++ 与上述两项不同,condition dropout 在小数据风格 LoRA 上未观察到风格损伤。其作 + 用机制是把 unconditional branch 与 conditional branch 的相对几何在训练期同时 + 暴露给模型,从而使 inference 时 CFG 的 uncond + s · (cond − uncond) + 推算成立。在 s = 4.0 这一相对较强的 CFG 下,没有 dropout 训练 + 的 LoRA 经常把输出推到 LoRA 未覆盖的方向,导致结构 artefact。运行 (c) 与 Baseline + 的视觉对比显示,前者在风格指纹保持不变的前提下,前景结构 (puffball 形状、 + 树干轮廓) 更清晰、稳定。 +
+ ++ §5.3 显示 prompt 中 artist anchor 的位置 (句首 vs. 句末 tag vs. 完全缺失) 与训练 + caption 分布对齐与否直接决定 LoRA delta 是否被正确激活。这一变量与目标 lever + 正交,但视觉量级与 lever 效果相当;任何不控制该变量的 lever 评估都会被 + prompt-format mismatch 污染。本文 §5.1、§5.2 与 §5.3 结论均在 v2 anchored prompt + 下复测确认。 +
+ ++ 在 SenseNova-U1-8B-MoT × 56 张 Hayateluc 风格 LoRA 微调上: + (1) velocity 损失系统性向高 t 端搬移梯度密度,导致天空与大面积 + 渐变区域出现规则横向条纹 banding 与 painterly→photoreal 退化; + (2) logit-normal 时间步在小数据下加剧 mid-t 样本稀疏,引发 palette + 偏冷与大面积平滑色块的 speckle 噪点; + (3) (1) + (2) 叠加进一步引入远景元素缺失与构图压缩等结构扭曲,劣化超出 style + drift 范畴; + (4) condition dropout 是三项中唯一无损反而有益的算法层; + (5) prompt 前缀格式与训练分布的匹配是评估前置条件,必须先控制。 +
+
+ 据此,我们将 configs/default.yaml 保留为本地基线
+ (x0 + uniform t + 0 dropout + 显式 style trigger + 忽略 think
+ sidecar),并以 configs/official_alignment.yaml 形式发布官方对齐组
+ 合,标注其用途为研究复现。该选择不否定公开报告中的算法设计,只反映其与本仓
+ 库目标 (小数据风格 LoRA) 的不匹配。
+
data: + use_think_labels: false + +style: + trigger: "my style" + prompt_template: official + +lora: + preset: attn_mlp_no_head + +unfreeze: + - '^fm_modules\.timestep_embedder\.' + - '^fm_modules\.noise_scale_embedder\.' + - '^fm_modules\.vision_model_mot_gen\.' + - '^fm_modules\.fm_head\.' + +train: + loss_type: x0 + t_dist: uniform + cond_dropout_text: 0.0 + cond_dropout_both: 0.0 ++ +