MOSS-Image 少步 LoRA:4 步 rapid-moss 与 8 步 DMD
两个社区 LoRA 将 MOSS-Image-SFT 从 50 步降至 4 或 8 次网络评估,其中 4 步 rapid-moss 适配器附带一个 ComfyUI 节点与原生工作流。
从左到右:50 步教师模型、以 4 步运行的 8 步 checkpoint,以及 4 步 rapid-moss 适配器。相同随机种子,评估提示词从未用于训练。来源:darask0
采样循环为何缩短
MOSS-Image-SFT 使用 CFG 3 以 50 步生成一张图像,而 CFG 会使前向传播翻倍,因此单张图片大约需要 100 次 DiT 评估。8 步 checkpoint 用数据空间 DMD(arXiv 2610.12102)取代了该循环:生成器从固定噪声张量出发,对自身的干净估计迭代四到八次,不使用 CFG,也没有时间步调度。
4 步适配器从该 checkpoint 继续训练,并将其限制为四次迭代,使用 DMAD(arXiv 2610.02188)训练。基于冻结教师模型的 LoRA 判别器(critic)将教师样本与学生样本区分开来,学生模型则最小化负的判别器 logit。作者在 3,199 条提示词上训练,每条配一个教师样本,并发布了 500 次迭代的 checkpoint,因为更靠后的迭代会开始削弱提示词遵循能力。
在单张 H100 上每张 1024² 图像的 DiT 耗时:
| Checkpoint | DiT 耗时 | DiT 评估次数 |
|---|---|---|
| MOSS-Image-SFT(50 步,CFG 3) | 16.2 s | 100 |
| lodestones 8 步 DMD | 1.54 s | 8 |
| rapid-moss 4 步 DMAD | 0.81 s | 4 |
上述耗时仅涵盖 transformer,不包含 Qwen3.5-9B 文本编码器和 VAE。在 RTX PRO 6000 上运行 ComfyUI 时,作者测得包含文本编码与解码在内,一张 1024² 图像耗时 4.5 至 6.9 秒。
ComfyUI 节点
两个适配器都是 fp32 LoRA 增量,其幅度小于 bf16 的舍入步长,因此将它们合并进 bf16 权重会抹掉大部分蒸馏效果。这就排除了 LoraLoaderModelOnly、diffusers 的 fuse_lora,以及任何加载预合并权重的工作流。随附的 MOSS-Image Few-Step Adapter (rapid-moss) 节点改为在运行时以 fp32 添加 LoRA,替换 fp32 时间通路,并返回一组匹配的 MODEL、SAMPLER 和 SIGMAS。
这些输出必须作为一个整体连接:MODEL 接入 BasicGuider 且不使用 CFG,然后 SAMPLER 与 SIGMAS 接入 SamplerCustomAdvanced,再接入 VAE Decode。Euler、sgm_uniform、shift 为 5 的 ModelSamplingSD3 以及跳过第 22 层,这些都是 50 步教师模型的设置,不应在此处添加。步数对 rapid-moss 为 1 至 4,对 8 步 checkpoint 为 1 至 8,推荐默认强度为 1.0。
已包含两个工作流。原生工作流使用标准 ComfyUI 加载器:来自 Comfy-Org/MOSS-Image 的 moss_image_sft_bf16.safetensors、类型为 moss_image 的 CLIPLoader,以及 FLUX.2 VAE。
第二个工作流保留 OpenMOSS 自带的 moss-image HF Loader 节点,并将其指向本地 Diffusers 目录:
comfyui/rapid-moss/ 复制到 ComfyUI/custom_nodes/rapid-moss/ 并重新启动。
2. 将 lora.safetensors、time_embedding.safetensors 和 dataspace.safetensors 放入 ComfyUI/models/rapid_moss/rapid-moss-4step/。models/rapid_moss/ 下的每个子文件夹都会成为节点 adapter 菜单中的一项,因此 8 步文件要放入第二个文件夹。
3. 加载一个工作流,选择适配器,并将基础扩散模型设置为 bf16 或 fp32 的 SFT 权重。
并排对比结果
在 17 条评估提示词上,作者报告相比以四步运行的 8 步 checkpoint,背景细节更丰富、构图更生动,并且修复了竖直海报上“夏”字重复出现的问题,便签、招牌和对话气泡中的日文也保持准确。
教师模型、以 4 步运行的 8 步 checkpoint,以及 4 步适配器。来源:darask0
第二条提示词上的同一三方对比。来源:darask0
作者也如实列出了退步之处,而非加以掩饰:轻小说封面上会出现多余的拉丁字母;一个要求两格漫画布局的 JSON 请求在下格多出了未被要求的第二个人物;店铺门帘和漫画气泡上的小字仍然失败。整体质量仍低于 50 步教师模型。
ComfyUI 中的 rapid-moss 节点,fp32 适配器已接入 BasicGuider 和 SamplerCustomAdvanced。来源:darask0
单独使用 8 步 checkpoint
lodestones 于 10 月 16 日发布了更早的 8 步 checkpoint,当时仍处于进行中状态。它只提供文件:强度 1.0 的 lora.safetensors,或强度 0.7 的 lora_latest.safetensors,外加相同的 time_embedding.safetensors 和 dataspace.safetensors。其模型卡对 8 步权重指向标准 ComfyUI LoRA 加载器,而 rapid-moss 节点可以用 4 步增量所需的 fp32 通路驱动两个适配器。
对于在 ComfyUI 之外运行适配器的用户,4 步仓库中的 inference.py 可以直接复现该采样器:保持初始噪声张量固定,通过 dataspace.safetensors 中的 128x128 矩阵将其与当前估计混合,并从同一文件读取步数编码。
获取方式
- 4 步适配器:darask0/MOSS-Image_4-step_adapter_lora,包含训练代码、日志、评估提示词和 ComfyUI 节点。
- 8 步 checkpoint:lodestones/MOSS-Image-SFT-8-steps-dmd,附带一个公开演示 Space。
- 基础模型:OpenMOSS-Team/MOSS-Image-SFT,以及 Comfy-Org/MOSS-Image 中的 ComfyUI 重打包版本。
评论
使用 GitHub 登录后即可参与讨论。