作者:YuanLiu
距离 POINT1.0 的发布已经过去两个月时间来,在这段时间业界不断涌现出一系列优秀的模型。我们通过不断紧跟前沿技术,并结合过去开发多模态模型沉淀下来的经验,对 POINTS1.0 进行了一系列更新,推出了 POINTS1.5。这一代 POINTS 模型,不仅兼顾了 POINTS1.0 中所坚持的效率优先的思想,同时极大了增强了模型的性能。
Paper: https://huggingface.co/papers/2412.08443
Github: https://github.com/WePOINTS/WePOINTS
HuggingFace: https://huggingface.co/WePOINTS/POINTS-1-5-Qwen-2-5-7B-Chat
领先的性能
先贴一下 OpenCompass Leaderboard 的情况 (截图截止的时间为 2024.12.8)
POINTS1.5-7B 位居全球 10B 以下开源模型的榜首,超越诸如 Qwen2-VL, InternVL2 和 MiniCPM-V-2.5 等业界领先的模型。同时,除了 OpenCompass 用于排名所使用的 8 个 benchmark 之外,我们对 POINTS1.5 在更多的 benchmark 上进行了测试: ChartQA[1], MME[2], LLaVA-Wild[3], SEEDBench[4], MEGABench[5], ScienceQA[6], MATH-Vision[7], MathVerse[8],具体结果如下表。可以发现 POINTS1.5-7B 的表现仍然非常惊艳,尤其在数学相关的 Benchmark 上表现尤其出色,与其他竞品之间的差距也拉得比较大。
真实场景中的表现
当然在研发一个大模型的过程中,我们不能只关注 benchmark 上的性能怎样,感受模型在真实场景中的表现也至关重要。因为我们从复杂场景的 OCR,推理能力,关键信息提取,Latex 公式提取,数学,图片翻译,物体识别几个方面对模型进行测试。可以发现,POINTS1.5 在各种场景上都有不错的表现。
模型结构
POINTS1.5 仍然沿用了 POINTS1.0 中使用的经典的 LLaVA 架构,由一个 vision encoder, 一个 projector 和一个大语言模型组成。
视觉编码器: 使用LLaVA风格架构训练视觉-语言模型类似于对大型语言模型(LLM)的持续 post-training,使其能够处理来自图像模态的 token。因此,使用高质量的视觉编码器对于 LLM 准确理解图像至关重要。为了支持任意分辨率的图像,POINTS1.0遵循了最近的研究工作,如LLaVA-Next [9] 和 InternVL [10],将大图像分割成视觉编码器可以处理的若干小块。然而,这种方法有固有的缺点,因为它破坏了图像内各块之间的空间关系。尽管添加行分割标记,例如 n,和引入全局视图等策略可以缓解这个问题,但问题依然存在。因此,POINTS1.5用NaViT风格的视觉编码器[11]替换了POINTS1.0中使用的CLIP视觉编码器,类似于最近的进展[12]。与CLIP视觉编码器不同,NaViT风格的视觉编码器可以原生处理任意分辨率的图像,而无需分割。
NaViT 中的 Batch Forwarding: 随着NaViT的引入,批量前向传播面临了新的挑战。与CLIP视觉编码器不同,CLIP视觉编码器可以沿着批量大小维度将图像连接起来,而NaViT在图像被分块后处理的图像序列长度各不相同。为了解决这个问题,我们采用了一种受大型语言模型(LLMs)启发的策略:我们将多个图像序列打包成一个长序列。然后,我们记录每个图像序列的起始和结束索引,以确保自注意力机制仅在当前图像序列的边界内应用。
Projector: 和 POINTS1.0 类似,我们使用两层 MLP 作为投影层,同时在两层线性层之间增加一层 GELU 来增加非线性。
LLM: 我们使用了 Qwen2.5-7B-Instruct
双语支持
对话模板: 根据POINTS1.0,POINTS1.5的LLM也是从指令微调版本的Qwen2.5-7B初始化的。然而,在POINTS1.0的预训练阶段,我们使用了一个续写模板来打包数据,类似于LLM预训练过程中使用的模板,这与指令微调版LLM使用的模板不同。在这个版本中,我们采用了 Qwen2.5-7B-Instruct 中使用的对话模板,并观察到相比于续写模板有性能提升。由于预训练数据是图像-标题对,我们在每个数据样本中添加了一个提示,类似于“请描述这张图片。”。为了使提示多样化,我们创建了一个候选提示池(左图),并为每个数据样本随机抽取一个提示。此外,为了区分视觉标记和文本标记,我们在视觉标记周围添加了图像前缀和后缀标记。右图展示了POINTS1.0和POINTS1.5在预训练期间聊天模板的区别。
中文预训练数据集: 在POINTS1.0的基础上,我们采用两步程序来创建预训练数据集:i) 我们使用CapFusion[12]将视觉语言模型(VLM)生成的标题与图像的原始标题合并,生成最终标题。ii) 我们使用困惑度对生成的标题进行过滤。随后,我们使用困惑度对这些数据进行过滤,类似于 POINTS1.0 中的过滤过程。我们将这些标记按升序排列,并选择前20%(约100万)用于预训练阶段。然后,这部分中文数据集与原始的100万英文数据集结合,用于预训练POINTS1.5。
中文指令微调数据: 我们继承了POINTS1.0中的所有视觉指令调优数据集,除了在本节中生成的数据集。为了创建中文视觉指令调优数据集,我们采用了几种策略:
1.将现有的英文数据集(包括问题和答案)翻译成中文。
2.使用现有数据集中的图像和问题,并使用业界领先的视觉语言模型生成相应的答案。此策略仅适用于 caption 数据集。
3.从互联网上收集图像,手动设计问题(如下图所示),使用强大的视觉语言模型生成答案,并由人工标注员验证答案。此策略主要用于中文OCR数据集。
下表显示了用于构建中文数据集的数据集及相应的策略。
在创建中文数据集之后,我们获得了9个类别的分布以及中英文分布。我们观察到不同类别之间存在显著的不平衡。然而,我们尚未找到有效的方法来平衡这些类别的数据,这个问题将留到未来的工作解决。
指令微调数据过滤
在过滤视觉指令调优数据集之前,我们手动检查了POINTS1.0中使用的每个数据集,并发现了两个重要问题:i) 一些问题可以在不参考图像的情况下回答。ii) 一些数据集中存在大量语法错误。
问题可以在没有图像的情况下回答: 直觉下,用于训练视觉-语言模型的数据应使模型能够基于图像解决问题。如果问题在没有图像的情况下可以回答,它们就会退化为纯文本数据[16]。为了过滤掉这些数据,我们使用一个强大的开源大型语言模型(LLM),例如Qwen2.5-72B-Instruct,在没有图像的情况下回答问题。如果LLM提供了正确答案,则相应的数据样本会被丢弃。这种过滤策略仅适用于包含固定和明确答案的数据集,例如AI2D[17]。然后我们用过滤后的数据集训练模型,但观察到性能略有下降。这一现象与之前的研究[18,19]一致,这些研究表明纯文本数据有助于维持预训练LLM的能力。
具有语法问题的样本: 对于第二类问题,我们设计了一个两步筛选策略:(i) 使用大型语言模型(LLM)检测当前样本中是否存在语法错误,(ii) 如果存在语法错误,我们可以选择丢弃该样本或使用LLM修复这些错误。下图(左)展示了这个过程。经过仔细比较,我们发现直接丢弃这些样本比使用LLM修复它们的效果更好。如下图(右)所示,筛选后我们保留了大约85%的原始数据。
训练策略和模型策略
训练策略: 目前,社区内对于如何训练LLaVA风格视觉-语言模型的每个模块尚未达成共识。如下表所示,不同的模型在预训练和视觉指令微调期间采用了不同的训练配置。这带来了一个问题:什么是最佳的训练配置策略?与视觉-语言模型相比,大型语言模型(LLMs)发展更为迅速,各种发展路径趋向于统一的方法。在预训练LLM之前,必须使用诸如WordPiece[20]和BPE[21]等算法在大语料库上训练一个分词器,以确保每个句子都能唯一且准确地分词为一系列索引。这个分词器还可以将一系列索引解码回句子。在预训练和后续训练过程中,分词器保持固定,而词嵌入层和所有的transformer层则进行端到端的训练。类似地,在视觉-语言模型的架构中,视觉编码器的功能类似于文本分词器,而投影器则类似于词嵌入层。因此,在训练视觉-语言模型之前,必须单独训练视觉编码器(例如,POINTS1.5中使用的Qwen2-VL视觉编码器)。随后,视觉编码器被固定,投影层和LLM进行端到端的训练。在实践中,由于视觉投影层是随机初始化的,我们发现增加一个额外的阶段(所谓的预训练阶段)来预热投影层可以带来更好的性能(在这个阶段我们固定视觉编码器,因为我们发现解冻它会降低性能,如下图)。我们的训练配置总结在最后一张表中。值得注意的是,POINTS1.5遵循了POINTS1.0的路径,使用更少的计算资源,总计少于50亿个tokens,这显著少于大多数之前的工作。
Model Soup: 在POINTS1.0之后,我们使用模型汤(model soup)来提升单个模型的性能。模型汤是在我们评估基准上表现最好的模型上进行的,主要包括使用不同视觉指令调优数据集和不同训练时长的模型。表现最好的单个模型的OpenCompass得分为66.5,使用模型汤获得的最终模型得分为67.4。
未来展望: 如前面所述,在LLaVA风格架构下扩展大型语言模型(LLM)以支持任何模态,类似于对LLM的持续后训练。我认为决定模型最终性能的三个关键因素是:i) 高质量的模态 tokenizer 和 detokenizer。tokenizer 应能唯一且准确地将任何模态信号编码到一个压缩的特征空间中,而 detokenizer 应能将压缩的特征恢复到其原始的模态信号。ii) 模态嵌入层,即投影层。iii) 高质量的指令调优数据集,以赋予LLM理解不同模态的能力。因此,我们设想未来多模态模型的发展应遵循三步策略(下图所示):i) 使用大量数据训练模态 tokenizer 和 detokenizer,例如视觉编码器和解码器。ii) 预热模态嵌入层,将任何模态信号转换为LLM的文本空间。在这一步中,我们发现数据集的规模不必非常大[22]。iii) 使用高质量的指令调优数据集训练模态嵌入层和LLM,同时保持 tokenizer 和 detokenizer冻结。
[1] Chartqa: A benchmark for question answering about charts with visual and logical reasoning.
[2] MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models.
[3] Visual information extraction in the wild: practical dataset and end-to-end solution.
[4] Seed-bench: Benchmarking multimodal llms with generative comprehension.
[5] Learn to explain: Multimodal reasoning via thought chains for science question answering.
[6] Measuring multimodal mathematical reasoning with math-vision dataset.
[7] Mathverse: Does your multi-modal llm truly see the diagrams in visual math problems?
[8] Mega-bench: Scaling multimodal evaluation to ove 500 real-world tasks.
[9] Llava-next: Improved reasoning, ocr, and world knowledge
[10] How far are we to gpt-4v?
[11] Navit, a vision transformer for any aspect ratio and resolution.
[12] Qwen2-vl: Enhancing vision-language model’s perception of the world at any resolution.
[13] Capsfusion: Rethinking image-text data at scale.
[14] Internlm2 technical report.
[15] Internlm-xcomposer2: Mastering free-form text-image composition and comprehension in vision-language large model.
[16] Mmbench: Is your multi-modal model an all-around player?
[17] diagram is worth a dozen images.
[18] Nvlm: Open frontier-class multimodal llms.
[19] Mm1. 5: Methods, analysis & insights from multimodal llm fine-tuning.
[20] Fast wordpiece tokenization.
[21] Neural machine translation of rare words with subword units.
[22] Rethinking Overlooked Aspects in Vision-Language Models
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...