摘要:Chameleon 展示了广泛而通用的功能,包括图像字幕任务中最先进的性能,在纯文本任务中优于 Llama-2,同时与 Mixstral 8x7B 和 Gemini-Pro 等模型具有竞争力,并带有图像生成的能力,所有这些都在 1 个模型中。Chameleon
生成理解统一架构的开山之作。
Chameleon 是一个既能做图像理解,又可以做图像或者文本生成任务的,从头训练的 Transformer 模型。
Chameleon 完整记录了为实现 mixed-modal 模型的架构设计,稳定训练方法,对齐的配方。
Chameleon 在一系列全面的任务上进行评估:有纯文本任务,也有图像文本任务 (视觉问答、图像字幕),也有图像生成任务,还有混合模态的生产任务。
Chameleon 展示了广泛而通用的功能,包括图像字幕任务中最先进的性能,在纯文本任务中优于 Llama-2,同时与 Mixstral 8x7B 和 Gemini-Pro 等模型具有竞争力,并带有图像生成的能力,所有这些都在 1 个模型中。Chameleon 还在人类评测上匹配或超过更大模型的性能,包括 Gemini Pro 和 GPT-4V。
Chameleon 在标志着生成理解统一建模的架构方面向前迈出的重要一步。
图1:Chameleon 架构。将所有模态数据 (图像、文本和代码) 都表示为离散 token,并使用统一的 Transformer 架构。Chameleon 的训练数据是交错混合模态数据 ∼10T token,以端到端的方式从头开始训练。文本 token 用绿色表示,图像 token 用蓝色表示
下面是对本文的详细介绍。
1 Chameleon:生成理解统一模型的开山之作
(来自 Meta)
1 Chameleon 论文解读
1.1 Chameleon 研究背景
1.2 Chameleon 的预训练
1.3 Chameleon 的架构改进
1.4 Chameleon 的对齐策略
1.5 人类测试
1.6 标准 Benchmark 结果
多模态基础模型的一般特点是单独去建模不同的模块,一般而言通过 modal-specific 的编码器或者解码器。这带来了一个问题就是可能会限制模型跨模态整合信息的能力,以及生成可以包含任意图像和文本序列的多模态文档的能力。
因此,本文提出的 Chameleon 是一种混合模态基础模型,能够处理图文交织的混合序列,包括生成以及推理。这种模型能完整地做多模态相关的任务,包括图像生成,图像理解以及文本 LLM 能做的纯文本任务。Chameleon 的训练数据是所有模态的交错混合数据,即图像、文本和代码。且 Chameleon 以端到端的方式从头开始训练。
Chameleon 把图片和文本数据全部使用了基于 token 的表征。通过将图像量化为离散 token,类似于文本中的单词,Chameleon 可以把一种 Transformer 架构应用于图像和文本 token 序列,且无需单独的图像/文本编码器或特定领域的解码器。这种 early-fusion 的方法,要求所有模态的数据从一开始就投影到共享的表征中,允许跨模态的理解和生成。但是也带来了重大的技术挑战,尤其是在优化稳定性和 Scaling 方面。
Chameleon 通过架构创新和训练技术的结合来解决这些挑战。架构方面,对 Transformer 进行了一些修改,比如 query-key normalization 和 revised placement of layer norms。作者发现这对于混合模态设置中的稳定训练至关重要。训练技术方面,Chameleon 展示了如何将用于纯文本 LLM 的 SFT 方法应用于混合模态中。使用以上技术,本文成功训练了 Chameleon-34B,使用 Llama-2 5× 的 token 数。
作为一个生成理解统一模型,Chameleon 可以做图像理解任务 (visual question answering 和 image captioning)。在这个 benchmark 上超过了 Flamingo, IDEFICS 和 Llava-1.5。Chameleon 还可以做纯文本任务,在常识推理和阅读理解任务上与 Mixtral 8x7B 和 Gemini-Pro 匹敌。最令人印象深刻的是,Chameleon 在混合模态推理和生成方面解锁了全新的功能。
作者还通过一个精心设计的人工测试来评测对 open-ended prompts 的混合模态的长响应,并发现 Chameleon-34B 超过了 Gemini-Pro 和 GPT-4V:在成对比较中实现了对 Gemini-Pro 的 60.4% 偏好率以及对 GPT-4V 的 51.6% 偏好率。
下面展示了一个 Chameleon 生成的图文交织数据的样例:
图2:Chameleon 生成的图文交织数据
图3:Chameleon 生成结果采样
图4:Chameleon 输出采样
图像 Tokenizer
作者基于[1]训练了一个新的图像 tokenizer,将 512×512 的图像编码为 1024 个离散 token,token 来自大小为8192 的 codebook。
文本 Tokenizer
作者在训练数据的子集上训练了一个新的 BPE tokenizer[2],词汇量为 65,536,其中包括 8192 个 image codebook token。
预训练数据
Chameleon 将预训练阶段分为 2 个单独的阶段。第 1 阶段占训练的前 80%,第 2 阶段占最后 20%。对于所有 Text-To-Image 对,对其中 50% 做了旋转,图像出现在文本之前 (caption)。
1) 第 1 阶段训练数据
使用由以下非常大规模的完全无监督数据集组成的数据混合。
Text-Only 数据:
使用各种文本数据集,包括用于训练 LLAMa-2 和 CodeLLaMa 的预训练数据的组合,总共 2.9 万万亿个纯文本 token。
Text-Image 数据:
预训练的 Text-Image 数据是公开可用的数据源和许可数据的组合。然后将图像大小调整并居中裁剪为 512×512 图像以进行 tokenization。总共包含 1.4B text-image pair,带来 1.5 trillion text-image token。
Text/Image 交织数据:
Chameleon 从公开可用的 Web 来源获取数据,不包括来自 Meta 产品或服务的数据,总共有 400B token 的交错文本和图像数据。对图像应用相同的过滤,如 Text-To-Image 情况。
2) 第 2 阶段训练数据
在第 2 阶段,Chameleon 将第 1 阶段数据的权重降低了 50%,并在更高质量的数据集中混合,同时保持相似比例的图像文本 token。Chameleon 还包含大量指令调整集的训练集的过滤子集。
当将 Chameleon 模型扩展到 8B 参数和 1T token 以上时,保持稳定的训练就变得十分具有挑战性。Chameleon 采用以下架构和优化配方来实现稳定性。
Chameleon 的架构主要遵循 LLAMa-2。对于归一化,Chameleon 继续使用 RMSNorm。使用 SwiGLU 激活函数和旋转位置嵌入 (RoPE)。
图 5 中绘制了随着训练的进行最后一个 Transformer 层的 Output Norm,作者发现 Output Norm 不受控制的增长与预测未来 Loss Divergence 密切相关。
图5:Output Norm 不受控制的增长是未来训练分歧的有力指标
为此,作者使用 QK-Norm。QK-Norm 通过将 LayerNorm 应用于 Attention 中的 Query 和 Key 向量直接控制输入到 Softmax 的范数增长。
图 6 中展示了有和没有 QK-Norm 的 Chameleon-7B 的训练损失曲线,后者在训练大约 20% 的 epoch 之后发散。
图6:Chameleon-7B 使用 QK-Norm 的消融实验结果
作者发现,通过控制 Norm 增长来稳定 Chameleon-7B,除了 QK Norm 外,还需要在注意层和前馈层之后引入dropout,如下图 7 所示。
图7:Chameleon-7B 使用 Dropout 的消融实验结果
然而,这个策略不足以稳定 Chameleon-34B,Chameleon-34B 需要对 Norm 进行额外的重新排序:
Chameleon-34B 的这个做法和 Swin Transformer 很像,就是把 Attention 和 FFN 中的 Norm 放在 Block 的最后。此外,作者发现这种类型的归一化与 Dropout 结合使用效果不佳,因此,作者在没有 Dropout 的情况下训练 Chameleon-34B。此外,作者追溯发现,当使用 Norm Re-ordering 时,Chameleon-7B 也可以在没有 Dropout 的情况下稳定地训练,但 QK-Norm 在这两种情况下都是必不可少的。作者在图 8 中绘制了 Chameleon-7B 和 Chameleon-34B 的前 600K 步的训练曲线。
图8:Chameleon-7B 和 Chameleon-34B 在混合模态数据的 600K 步训练曲线
图9:对于 Chameleon-34B,使用 Dropout 不会修复 Divergence,无论是否有 Norm Re-ordering
对于 Chameleon-7B,重要的是同时使用 dropout 和 z-loss 来实现稳定性,而 Chameleon-34B 只需要 z-loss。Chameleon-7B 使用 ~ 8M token 的 Global Batch Size 训练,Chameleon-34B 使用 ~ 12M token 的 Global Batch Size 训练。作者在完整的训练数据集上训练了 2.1 Epoch,在训练期间看到的总共 9.2 trillion token。
Chameleon 遵循最近的工作 LIMA[3],使用基于精心策划的高质量数据集的监督微调的轻量级对齐阶段。Chameleon 的对齐包括一系列不同类型的数据,既针对模型能力,又提高安全性。
Chameleon 将有监督微调 (SFT) 的数据集分为以下几类:Text, Code, Visual Chat, Image Generation, Interleaved Text/Image Generation, 以及 Safety。作者在图 10 中包含了来自 Chameleon-SFT 数据集的每个类别的示例。其中,
Text SFT 数据:来自 LLaMa-2。Code SFT 数据:来自 CodeLLaMa。Image Generation SFT 数据:搞了一个高美学的图像数据集。首先从美学分类器中选择评分至少为 6 的图像,然后选择大小与长宽比最接近 512×512 的前 64K 图像。Visual Chat 和 Interleaved Text/Image Generation SFT 数据:专注于使用第三方供应商的高质量数据。图10:不同类别的示例对齐数据:
图11是 SFT 阶段的数据的统计结果。
图11:SFT 阶段的数据的统计结果
数据的平衡
作者发现 SFT 阶段数据的平衡对于高质量的对齐很重要:在 SFT 阶段,如果模态配对之间存在严重不平衡,模型就会学习生成该模态的无条件先验,导致模型会缄默或者过度夸大某一模态的生成。
在微调期间,每个数据集实例都包含一个成对的提示及其相应的答案。为了提高效率,作者将尽可能多的提示和答案打包到每一个序列中,插入一个不同的 token 来描述 prompt 的末尾和 answer 的开头。
使用自回归训练目标,选择性地屏蔽 prompt token 的损失。这种有针对性的方法允许完全基于 answer token 来优化模型,总体上提供了轻微收益。
在 SFT 过程中,prompt 中的图像用 border padding 调整大小,确保图像中的所有信息都可用,而 answer 中的图像是 center-cropped 的,确保视觉上良好的图像生成质量。
Chameleon 具有显着的新的混合模态理解和生成能力,这些能力不能用现有的 Benchamrk 来衡量。本节将详细介绍如何对大型多模态语言模型的响应进行人工评估。
具体来说,作者要求注释者创造性地思考他们想要多模态模型为不同的现实场景生成什么。例如,对于 "想象你在厨房里" 的场景,注释者可能会提出诸如 "如何煮意大利面?" 或 "我应该如何设计岛屿的布局。显示一些例子。" Prompt 可以是带有某些图像的纯文本或文本,并且预期的 Response 应该是混合模态,包含 text 和 image。
最后,最终评测集包含 1,048 个 Prompt:441 个 (42.1%) 是混合模态,包含 text 和 image,其余 607 个 (57.9%) 是 text-only 的。
图12:任务类别和 Prompt 的示例
作者将 Chameleon 34B 与 OpenAI GPT-4V 和 Google Gemini Pro (后面 2 个调用 API) 进行比较。虽然这些模型可以将混合模态提示作为输入,但它们的响应仅是 text-only 的。作者通过用图像增强 GPT-4V 和 Gemini 响应来创建额外的 Baseline,以获得更强大的 Baseline。具体来说,作者通过在每个原始 prompt 的末尾添加以下句子来指导这些模型生成图像标题:"If the question requires an image to be generated, then generate an image caption instead and enclose the caption in a pair of ⟨caption⟩ ⟨/caption⟩ tags." 然后,作者使用OpenAI DALL-E 3生成基于这些 caption 的 image,并将原始响应中的 caption 替换为生成的图像。将增强的响应表示为 GPT-4V+ 和 Gemini+。使用相同的第三方众包供应商,作者进行了两种类型的评估来衡量模型性能:absolute 和 relative。
对于 absolute 评估,通过询问 3 个不同的注释者一组关于响应相关性和质量的问题来分别判断每个模型的输出。对最关键的问题进行了详细的结果和分析,即 Response 是否满足 Prompt 中描述的任务。如图 13 所示,Chameleon 的响应被认为更多完成任务:Chameleon 为 55.2%,Gemini+ 为 37.6%,GPT-4V+ 为 44.7%。
图13:提示任务完成率
对于 relative 评估,作者通过将 Chameleon 与给每个 Baseline 模型相同的提示并把响应随机顺序呈现,再询问人工注释者他们喜欢哪个来比较不同的模型。图 14 显示了 Chameleon 在 Baseline 上的胜率。总体而言,Chameleon 在 Gemini+ 和 GPT-4V+ 上的胜率分别为 60.4% 和 51.6%。Chameleon 在 Gemini 和 GPT-4V 上的胜率分别为 69.1% 和 61.7%。
图14:Chameleon 与 Baseline:Gemini+、GPT-4V+、Gemini、GPT-4V
鉴于 Chameleon 的多种模态输出能力,没有单个的模型可以直接跟它对比;因此,作者对每个类别中针对最佳模型分别进行评估。
文本任务
作者根据其他最先进的 text-only 的 LLM 评估预训练模型的一般纯文本能力。在常识推理、阅读理解、数学问题和世界知识领域使用内部评估平台来评估所有模型,在图 15 中报告了结果。
图15:与开源基础模型的整体性能比较
常识推理和阅读理解
作者报告了以下衡量常识推理和阅读理解能力的基准的 0-shot 性能:PIQA、SIQA、HellaSwag、WinoGrande 、ARC-Easy、ARC-Challenge、OpenBookQA 和 BoolQ。可以观察到 Chameleon-7B 和 Chameleon-34B 与 Llama-2 模型有竞争力,Chameleon-34B 在 5/8 任务中甚至优于 Llama-2 70B,并与 Mixstral 8x7B 相当。
MATH 和 World Knowledge
作者报告了 GSM8K Benchmark 的 8-shot 性能,以及 MATH Benchmark 上的 4-shot 性能。作者报告的是 maj@N 精确匹配准确度,就是从模型中采样 N 个,并通过多数投票选择答案。在 GSM8k 上,Chameleon-7B 的性能优于相应的 Llama-2 模型,性能与 Mistral 7B 相当 (50.9 对 52.1 maj@8)。此外,Chameleon-34B 在 maj@1 (61.4 vs 56.8) 的表现优于 Llama2-70B,在 maj@32 上的表现优于 Mixstral 8x7B (77.0 vs 75.1)。同样,在 MATH 上,Chameleon-7B 优于 Llama-2,在 maj@4 上接近了 Mistral 7B,而 Chameleon-34B 优于 Llama2-70B,在 Maj@4 上接近 Mixstral 8x7B 的性能 (24.7 vs 28.4)。
作者还报告了 MMLU 的性能。Chameleon 模型都优于 Llama-2 模型,Chameleon-34B 接近 Mixstral 8x7B/Gemini-Pro 的性能 (65.8 vs 70.6/71.8)。
总体而言,Chameleon 全面优于 LLAMa-2,在某些任务上的表现接近 Mistral 7B/Mixral 8x7B。
图像文本任务
接下来,作者在以图像为条件的文本生成的任务上评估 Chameleon,特别是 image captioning 和 visual question-answering 任务,并在图 16 中展示了 Chameleon-34B 的结果。连同我们的预训练模型,作者还展示了一个模型的结果,该模型对所有任务进行微调 (Chameleon-34B-MultiTask),以及专门针对特定评估任务进行微调的模型 (Chameleon-34B-SFT)。
图16:图像-文本能力评估结果
与可用的开源模型进行评估:Flaminggo 80B、IDEFICS 80B 和 Llavara-1.5 以及最近的闭源模型,例如 Gemini 和 GPT4-V。
图像字幕: 对于图像字幕评估,作者报告了 MS-COCO 的 Karpathy test split 以及 Flickr30k 的 Karpathy test split 上的 CiDER 分数,使用 pycoevalcap 包。对于 Chameleon 模型,作者将字幕限制为 30 tokens。通过 API 使用多个提示和生成长度评估了 GPT-4V 和 Gemini 模型,并报告了能够实现的最佳性能。
开源的预训练模型中,Chameleon-34B (2-shot) 在 COCO 和 32-shots 上都优于 Flaminggo 和 IDEFICS 更大的 80B 模型,同时在 Flickr30k 上匹配其性能。对于微调和闭源模型,Chameleon-34B 的多任务和 SFT 变体在 COCO 上的表现都优于所有其他模型。而对于 Flickr30k,SFT 模型优于其他模型,MultiTask 模型性能接近。
视觉问答: 对于视觉问答 (VQA),作者报告了 VQA-v2 的 testdev split 的性能。对于 VQA-v2,2-shot 的预训练 Chameleon-34B 模型与较大 Flamingo 和 IDEFICS 模型的 32-shot 性能相匹配,而对于微调/闭源模型,Chameleon-34B-Multitask 接近 IDEFICS-80B-Instruct 和 Gemini Pro 的性能。同时性能与更大的模型,例如 Flaminggo-80B-FT、GPT-4V 和 Gemini Ultra 接近。
一般来说,Chameleon 在图像字幕和 VQA 任务中都相当具有竞争力。在预训练和微调的模型评估中,Chameleon 通过使用更少的上下文训练示例和更小的模型大小来与其他模型达到差不多的性能。
来源:极市平台