图像编辑得分44.9,是专业模型的3倍
做多模态这几年,我快被各种“大一统”PPT整出心理阴影了。
翻开来一看,典型的缝合怪——理解模型输出几个token,扔给扩散模型,中间靠几个硬编码的桥接层传话,然后论文标题就敢写“Unified”。就这?我试过不下五个这种架构的开源项目,2023年那会儿,没一个能在真实场景里撑过三轮对话。上下文丢得比我奶奶记性还差。
所以当朋友甩过来BAGEL论文链接,我回了一句:又来一个缝合怪?
但这次,真不是。
先说个数。BAGEL在智能图像编辑上得分44.9。你品品——Step1X-Edit,专门干编辑这活儿的老手,14.9分。三倍。这不是调个亮度、去个水印那种低端活。这是“把咖啡换成茶,因为现在是下午三点”这种隐含逻辑推理加视觉生成的任务。模型得知道下午三点喝下午茶这个文化常识,得理解茶和咖啡在液色、杯型、热气形态上的视觉差异,还得保持原图的光影一致性——窗户光从哪儿来,杯子在桌面上的反射该怎么变。
这事儿,之前的开源模型基本干不了。
好了,44.9这个数先放着。聊聊背后的整活思路。
翻完BAGEL的论文和代码仓库(github.com/bytedance-seed/BAGEL,权重全开源,别问我为什么不用HuggingFace镜像,上周三下午我clone的时候速度只有200KB/s),发现他们做对了几个关键选择。
架构这事儿,说白了就是怎么让“理解”和“生成”睡一张床。
BAGEL用了Mixture of Transformers,总参数量14B,激活7B。两个Transformer专家——一个管语义理解,一个管视觉生成——共享自注意力层。重点:不是“理解模块抽几个token扔给生成模块”的浅层交互,是每一层都在交互。
你想象一下,这就像两个人共用一张大办公桌,随时能探头看对方草稿纸上画的啥。而不是隔着走廊喊话,喊完还听岔了。
2023年我踩过一个坑。当时在测某个开源统一模型(不点名了,现在已归档),让它“生成一张猫在沙发上的图片,沙发颜色要和上一轮对话里提到的那张一样”。崩了。理解模块从对话历史里提取“沙发颜色”这个约束时还清醒,但传到生成模块时通道太窄——大概是128维的conditioning vector——颜色信息直接丢了。生成出来的沙发变成了默认的米白色。
BAGEL这种共享自注意力的设计,理论上是把信息瓶颈给拆了。注意,我说的是理论上。实际跑起来怎么样还得看后面的数据怎么喂。
数据,这事儿挺有意思。
大部分多模态模型吃的是图文对。一张图,一段描述,干净、整齐、无聊到想睡觉。但世界不是这样运转的。世界是——你看一个B站做菜视频,画面在动,步骤在推进,锅里的颜色从粉红变金黄变焦褐,这是时序信号。你看一篇维基百科,文字中间插着示意图,图下面有注释,旁边还有信息框,这是交错结构。
BAGEL的团队干了件很脏很累的活。他们搞了4500万个从视频里提取的交错序列。怎么整的?把视频切成片段,每两帧之间用轻量级模型生成一段简短描述,字幕限制在30个token内,专门捕捉物体运动、动作转换、状态变化。这叫“帧间字幕”,目的不是让模型认物体,是让它学视觉动态的时间逻辑——水从沸腾到蒸发、人从坐到站、光线从黄昏到夜晚。
还有2000万个从网页里清洗出来的交错文档。教程、百科、带步骤图的DIY帖子。关键来了——他们用了“字幕优先”策略。在每张图片前面,先插一段简洁描述当概念支架,再让模型生成。
我理解下来,这就像是先给模型一个草稿,再让它画。降低难度。不是直接让模型从文本跳到像素,而是文本到结构化描述再到像素。
讲真,这种数据工程没什么论文卖点,脏活累活,但效果比加十层Attention都管用。
然后,涌现。真香。
论文里有张图我反复看了好几遍(Figure 5,你们自己翻)。横轴是训练数据量,从0到4T tokens。纵轴是任务性能。基础理解任务在0.18T就基本饱和了。文生图到0.68T也差不多了。
但智能编辑任务,前期一直趴在地上——15分、16分、17分,跟随机猜测差不多。到3T tokens之后,突然起飞。从15分飙到45分。
绝了。
这就是涌现。模型在某个体量之前表现得像个傻子,过了临界点突然开窍。而且消融实验显示——如果你把ViT token移除,就是管语义理解的那部分视觉特征——智能编辑性能暴跌16%。说明这种能力不是天上掉下来的,是理解和生成深度耦合之后,从交错数据里长出来的。
说实话,看到这儿我有点信了。不是信这个大统一叙事,是信这条路能走通。
当然,BAGEL不完美。14B参数,我的卡有点吃紧(RTX 4090,24GB显存,跑7B激活参数勉强能推理,但别想微调)。从社区反馈看,推理速度还算能接受——大概每张图3到5秒,看分辨率。
他们放了在线Demo,我试了几个case。
第一个:“把这张街景照片变成下雨天,路面要有反光。”做到了。而且反光的位置基本符合物理——路灯正下方最亮,车辆经过的区域有拖尾反光,人行道边缘的反光较弱。这大概就是从视频数据里学到的——雨天的路面反光是什么样的,视频里一帧一帧都记录着,模型看了几千万遍。
第二个:“预测这张照片下一秒会发生什么。”它生成了下一帧。人物手臂的摆动延续了之前的轨迹,裙摆的飘动方向也没错。翻车也有——手指细节崩了,五根手指变成了六根,或者像融化的蜡烛。但方向是对的。
第三个:“把这张产品图里的塑料杯换成玻璃杯,保持光照一致。”这个有点翻车。杯子换成了玻璃材质没错,但折射光的角度不对,看起来像PS拙劣的图层叠加。大概是训练数据里透明材质的物理渲染样本不够多。
好用是好用,就是细节还得磨。
最后说几句。
BAGEL团队在论文里写了这么一句话:“缩小开源模型和GPT-4o、Gemini差距的关键,是扩展多模态交错数据。”不是更大的模型,不是更花哨的架构,是数据本身的结构和质量。
这事儿其实挺朴素的。你想让模型理解世界,就得喂给它世界运转的方式。世界不是一张张孤立的图片,世界是流动的、交错的、因果相连的——视频里锅铲翻动的下一刻食材变色,百科里文字描述的概念对应旁边的示意图,对话里上一句提到的颜色约束着下一张图的生成。
就这样。
权重、代码、数据构建流程全开源。github.com/bytedance-seed/BAGEL。自己去翻。
我得去折腾本地部署了。4090能不能扛住,试试再说。
读者评论 5