MOSS-Image Edit LoRA 为 ComfyUI 带来指令编辑能力

ComfyUI Wikinews

一个 rank-64 的编辑 LoRA 让 MOSS-Image 获得基于指令、支持一到四张参考图像的编辑能力,ComfyUI 核心也在同一天合并了原生编辑 LoRA 支持。

MOSS-Image 于 2026 年 10 月 22 日获得首个指令编辑 LoRA:<code>chinoll/Moss-Image-Edit</code>,这是一个 rank-64 适配器,接收一到四张参考图像和一条文本指令。九小时之内,ComfyUI 核心就在 PR #17296 中加入了对这一类适配器的原生支持,该 PR 于同日合并。

MOSS-Image 是 OpenMOSS 的 5B 文本与排版模型,本站曾在发布时报道:清晰的文字、JSON 布局框,以及同一周内发布的 ComfyUI 核心实现。它缺少的正是拿一张已有图像去修改的能力。编辑意味着布局编辑或控制适配器,而不是“给这个人换一件夹克”。

新的适配器填补了这一空白。它是社区发布,而非 OpenMOSS 官方发布,但它正是 ComfyUI 维护者围绕其接入核心支持的实现。

LoRA 改变了什么

模型卡直白地描述了适用范围:颜色、服装、光照、季节和视觉风格,由一条文本指令和最多四张参考图像驱动。指令说明要改什么,参考图像承载要保留什么。

MOSS-Image Edit LoRA 的编辑案例

随 LoRA 发布的案例网格图。来源:chinoll/Moss-Image-Edit

使用多张参考图像时,每张图像都必须在指令中被指明,因为适配器本身不会分配角色。节点包的示例提示词是 Dress the person in image 1 in the outfit from image 2.

从机制上看,这个适配器小巧且常规。检查 safetensors 头部可得到全部 42 个 DiT 层中的 504 个 tensor,每层六个投影(q、k、v、o、ffn_up_gate、ffn_down),rank 为 64,alpha 为 64。其 adapter_config.json 声明了 moss-edit-lora 格式版本 1,并把训练约定记录为 ref-prefix-only-t0__target-text-original-moss-v1,这正是 ComfyUI 现在以 Moss-Image-Edit 为名实现的布局。

同一份权重可配合 MOSS-Image-Base 或 MOSS-Image-SFT 使用;Base 保留更多训练信号,SFT 则是更整洁的起点。模型卡中的示例均以 SFT 为对象进行训练和采样。

编辑前后对比案例

项目仓库中的编辑展示:每组以源图像开头,随后是其编辑结果。

ComfyUI 核心路径

Kijai 的 PR #17296 新增了 Text Encode MOSS-Image Edit 节点,仍标记为实验性,位于 model/conditioning/moss_image 下。它接收 clip、prompt、vae、edit_format 选项,以及一组可自动增长的图像。edit_format 选择器是有意思的部分,因为它体现了编辑 LoRA 之间并不通用这一事实:

选项参考布局文本编码器能否看到参考图像
ai-toolkitindex_timestep_zero_isolated能,以 Picture N: 为前缀
ai-toolkit (kv_cache off)index_timestep_zero能,且参考图像在每一步都对已生成图像做注意力
Moss-Image-Editindex_timestep_zero_text_start不能

对于 Moss-Image-Edit 布局,视觉塔从不接收参考图像,因此指令必须自行描述编辑内容;外观完全来自注入 DiT 的参考 Latent。对于用 ai-toolkit 训练的适配器,参考图像会被缩小到最大 384×384,并作为 Picture N: token 前置到提示词中。

该适配器通过标准 LoRA 加载器加载,因为该 PR 为这些文件所使用的裸 layers.N.proj.q 键风格添加了别名。也就是说,原生路线就是普通的 MOSS-Image 节点图,配合来自 Comfy-Org/MOSS-Image 的单文件权重,外加一个 LoRA 加载器和新的文本编码节点;参考图像以图像形式连接到该节点,而不是单独的 Latent 输入。

该 PR 还报告了一项速度修复而非新功能:对于隔离布局,参考图像的每块 K/V 只在 extra_conds 中计算一次,而不是每一步都计算,这使得 1024² 输出配 1 MP 参考图像的情况从每步 826 ms 降到 457 ms。该支持在 v0.42.1 标签之后合并,因此已安装的发布版需要更新到该标签之后才能使用。

节点包路径

同一位作者还提供了一个自包含的节点包 Chenkin-x/ComfyUI-Moss-Image-Edit,于 10 月 22 日出现,在 MOSS Image Edit 类别下新增了加载器和编辑节点。它运行自己的一份 MOSS 运行时,而不是核心节点,并且需要完整的 Diffusers 快照,而非单文件重新打包版本:

ComfyUI/models/moss_image/
├── MOSS-Image-SFT/          # pipeline_moss_image.py, transformer/, text_encoder/, tokenizer/, vae/, scheduler/
└── Moss-Image-Edit/         # adapter_config.json, adapter_model.safetensors

加载器的 snapshot_dir 指向基础模型,adapter_dir 指向适配器。随包附带两个工作流,一个用于单张参考图像,一个用于两张;要扩展到三张或四张,需向空闲的 reference_3 和 reference_4 输入添加 Load Image 节点。文档给出的默认值为:输出 512×512、30 步、CFG 4.0、inference_shift 5.0,参考图像长边 512 且不裁剪。

设置默认值说明
width / height512 / 51216 的倍数
reference_max_edge512对齐到 16,从不裁剪
steps30
cfg4.0
inference_shift5.0采样时间分布
seed42默认固定

参考图像如何进入 DiT

两条路线都依赖同一个技巧。参考图像被 VAE 编码为 Latent token,在自身 RoPE 索引处以时间步零追加到图像序列,并且只彼此做注意力。由于这些 token 在采样循环中从不改变,它们的每块 K/V 可以缓存一次并重复使用,这正是为什么一个没有训练文本编码器的 rank-64 适配器足以在指令改写其余内容的同时保持身份一致。

参考 KV 缓存架构

来自训练仓库的参考 KV 缓存示意图,展示缓存的参考块与已生成 token 并列。

训练仓库公布了整套流程而非仅有权重:数据准备、配置和推理脚本。训练数据是 NOOB2 配对数据加上 ConceptEdit-12M 数据集,指令取自 instruction.detailed_en,源图像与编辑后图像由 VAE 一起编码,两张图像都会缩放使长边保持在 max_edge 以内,且不裁剪、不填充。指南使用四进程 torchrun 启动,通过打过补丁的 adjust_lr_fn 在 ZeRO-2 上使用 DeepSpeed Muon,使用带 varlen 打包的 Flash Attention 4,训练期间文本编码器量化为 int8。验证样本按步写出,并附上已生成/源/目标三元组,因此仓库中的 checkpoint 可以复现或扩展。

值得了解的局限

该 LoRA 是一个 297 MB 的 bf16 适配器,相对基础模型很小,但它不是通用编辑器。公布的范围是属性与场景编辑:颜色、服装、光照、季节和风格,外加表情。模型卡未记录对象插入,未发布基准测试,也未声称能把两个主体合成到一个场景中。如前所述,多参考编辑依赖提示词来分配角色。这也不是 OpenMOSS 的官方发布:权重、节点包和训练代码全部出自同一位作者,只有核心 PR 经过了 ComfyUI 维护者的审查。

获取方式

评论

使用 GitHub 登录后即可参与讨论。

评论加载中…
MOSS-Image Edit LoRA 为 ComfyUI 带来指令编辑能力 | ComfyUI Wiki