CodeFuse-VLM 开源,支持多模态多任务预训练/微调

CodeFuse-VLM是一个开源的多模态多任务微调框架,支持多种视觉和语言模型。CodeFuse-VLM-14B基于Qwen-VL和Qwen-14B,性能超越LLAVA-1.5和Qwen-VL,尤其在MMBenchmark上展示了出色的表现。该框架通过预训练和指令微调解决多任务问题,提升了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hgfkjgl.png


CodeFuse-MFT-VLM 项目地址:
https://github.com/codefuse-ai/CodeFuse-MFT-VLM

CodeFuse-VLM-14B 模型地址:
CodeFuse-VLM-14B
 

CodeFuse-VLM框架简介

随着huggingface开源社区的不断更新,会有更多的vision encoder 和 LLM 底座发布,这些vision encoder 和 LLM底座都有各自的强项,例如 code-llama 适合生成代码类任务,但是不适合生成中文类的任务,因此用户常常需要根据vision encoder和LLM的特长来搭建自己的多模态大语言模型。针对多模态大语言模型种类繁多的落地场景,我们搭建了CodeFuse-VLM 框架,支持多种视觉模型和语言大模型,使得MFT-VLM可以适应不同种类的任务。


CodeFuse-VLM 支持多种视觉达模型:CLIP,CLIP-336px,Chinese Clip,Chinese Clip-336px,Qwen Clip;多种语言达模型:Vicuna-7B,Vicunam-13B,LLAMA-2-7B,Qwen-7B,Qwen-14B。用户可以根据自己的需求,通过配置文件的方式搭配VL-MFTCoder中不同的Vision Encoder 和 LLM,使用同一套框架去适配的不同的模型,大大提高了开发效率

CodeFuse-VLM-arch.png


我们在2024年1月开源了多模态多任务微调框架——CodeFuse-VLM。在CodeFuse多任务微调的基础上,CodeFuse-VLM可以实现在多个模态,多个任务上同时并行地进行微调。通过结合多种损失函数,我们有效地解决了多任务学习中常见的任务间数据量不平衡、难易不一和收敛速度不一致等挑战。此外,CodeFuse-VLM框架具备高效训练特征,支持高效的PEFT微调,能有效提升微调训练速度并降低对资源的需求。 

https://cloud.video.taobao.com/play/u/23956347/p/1/d/ld/e/6/t/1/446458089308.mp4?auth_key=YXBwX2tleT04MDAwMDAwMTMmYXV0aF9pbmZvPXsidGltZXN0YW1wRW5jcnlwdGVkIjoiZDcxNGY0MjE3MDZmY2ZiYWY4ZWEyY2ExMGQyZGUxMDMifSZkdXJhdGlvbj0mdGltZXN0YW1wPTE3MDcxMjE2OTc=icon-default.png?t=N7T8https://cloud.video.taobao.com/play/u/23956347/p/1/d/ld/e/6/t/1/446458089308.mp4?auth_key=YXBwX2tleT04MDAwMDAwMTMmYXV0aF9pbmZvPXsidGltZXN0YW1wRW5jcnlwdGVkIjoiZDcxNGY0MjE3MDZmY2ZiYWY4ZWEyY2ExMGQyZGUxMDMifSZkdXJhdGlvbj0mdGltZXN0YW1wPTE3MDcxMjE2OTc=


CodeFuse-VLM-14B模型

我们基于Qwen-VL的视觉编码器和Qwen-14B 大语言模型,在CodeFuse-VLM框架下训练了CodeFuse-VLM-14B 模型,在多个通用和代码任务上的性能超过 LLAVA-1.5 和 Qwen-VL。
 

预训练数据

参考了Qwen-VL的Multi-Task Pretraining数据集,我们准备使用多种数据对齐Qwen-VL-14B的模态。在预训练当中我们使用多任务训练的方式,每一个数据集都是一个训练任务任务。

dataset

type

number of samples

synthdog-en

OCR

50w

synthdog-zh

OCR

50w

cc3m(downsampled)

Image Caption

55w

SBU

Image Caption

85w

Visual Genome VQA

VQA

50w

Visual Genome Region descriptions

Ref Grouding

50w

Visual Genome objects

Caption With Grouding

50w

OCR_VQA

OCR and VQA

50w

我们使用预训练数据集训练模态对齐的cross attention 模块,可以执行以下代码来启动模型预训练

sh scripts/pretrain_multinode.sh

指令微调数据

我们使用了 LLAVA-1.5 的指令微调数据,总共65w样本,LLAVA的指令微调数据集包含复杂图片的推理分析,对LLM理解视觉特征很有帮助。

截屏2023-12-03 下午5.21.11.png


指令微调数据构成如下,在视觉指令微调当中我们使用多任务训练的方式,每一个数据集都是一个训练任务任务。

dataset

type

number of samples

OCR_VQA

OCR and VQA

7w

GQA

Image Caption

8w

Visual Genome

Ref Grouding and Caption With Grouding

10w

COCO

Detailed Description and Complex Reasoning

37w

Text-VQA

Detailed Description and Complex Reasoning

3w

我们使用指令微调数据训练CodeFuse-VLM-14B中的Qwen-14B大语言模型,可以执行以下代码来启动模型的指令微调

sh scripts/finetune_multinode.sh

模型性能

我们训练的CodeFuse-VLM-14B 模型在多个benchmark上的表现超过Qwen-VL和LLAVA-1.5, 具体得分参考下面的图表。

CodeFuse-VLM-14B-radar-chart.png

Benchmark

LLAVA-1.5

Qwen-VL

CodeFuse-VLM-14B

MM_Bench

67.7

60.6

75.7

MM_Bench_CN

63.6

56.7

69.8

VqaV2

80.0

78.2

79.3

GQA

63.3

57.5

59.4

TextVqa

61.3

63.8

63.9

VizWiz

53.6

35.25

45.3

Sketch2Code

-

90.7

94.4

我们的CodeFuse-VLM-14B 在MMBenchmark的中英文榜单分别取得第13/21名的排名,高于Qwen-VL第29/36名的排名
MMBench
 

产品图片

我们通过CodeFuse-VLM 在蚂蚁内部训练了网页图片到前端代码的多模态大模型,并把大模型集成到内部的Visual Studio Code插件中。如下面两站图所示,左边的图片是网页原图,右边的图片是大模型生成的前端代码渲染出的图片,多模态大模型生成的前端代码渲染出的图片对网页原图有很高的还原性,很大地提高了前端工程师开发的效率。

公众号产品图片.png

公众号产品图片2.png

<think>好的,我现在需要帮助用户了解视觉语言模型VLM)的相关信息和使用方法。首先,我应该回顾用户提供的引用资料,确保回答准确并符合他们的需求。用户提到了四个引用,分别涉及VLM的发展历程、架构、对比、应用以及具体案例,比如CogAgent。 首先,用户的问题是关于VLM的介绍和应用。我需要先定义VLM,结合引用中的信息。根据引用[1],VLM是能够处理视觉和文本信息的多模态模型,用于理解两者之间的关联。然后,按照用户的要求,结构要清晰,分步骤解答。 接下来是核心架构。引用[2]提到了图像编码器、投影器、分词器等组件,我需要把这些部分详细说明,比如图像编码器可能使用CNN或ViT,文本编码器用Transformer,以及如何通过投影器对齐特征。 基本原理部分需要解释模型如何训练,比如对比学习(引用[1]中的CLIP)或生成式任务。应用场景方面,引用[3]和[4]提到了智能医疗、自动驾驶、GUI代理等,需要具体举例,如CogAgent用于GUI操作。 挑战和趋势部分,引用[1]和[3]指出了数据需求大、模态对齐困难,未来可能向端到端发展。使用方法则要分步骤:选模型、准备数据、微调、部署,可能结合引用[4]的CogAgent案例。 需要注意用户提到的引用标注,在相关内容后添加引用标识,比如[^1]、[^2]等。同时,用户要求生成相关问题,我需要根据内容提出三个相关问题,比如技术挑战、实际应用中的问题、与传统模型的区别。 最后,确保回答使用中文,数学公式用$...$,但看起来用户的问题不涉及数学公式,所以可能不需要。但如果有技术细节涉及公式,比如损失函数,可能需要用LaTeX,但根据引用内容,可能不需要。 检查是否遗漏了用户提供的任何引用,特别是CogAgent在引用[4]中的信息,需要提到其应用案例。确保回答结构清晰,分点明确,引用正确,并且语言自然流畅。</think>### 视觉语言模型VLM)介绍及应用 #### 一、VLM 的定义与核心能力 视觉语言模型VLM)是一种多模态人工智能模型,能够同时处理视觉(图像/视频)和文本信息,并通过跨模态交互实现语义对齐与推理[^1]。其核心能力包括: 1. **跨模态理解**:将视觉内容转化为语言描述,或根据文本生成对应视觉内容; 2. **复杂任务处理**:如图像问答、视觉推理、图文检索等; 3. **场景泛化**:适应自动驾驶、医疗影像分析等多样化场景[^3]。 --- #### 二、VLM 的核心架构 典型 VLM 包含以下组件(以两阶段模型为例)[^2]: 1. **图像编码器**:使用 CNN(如 ResNet)或 Vision Transformer(ViT)提取图像特征; 2. **文本编码器**:基于 Transformer 的预训练语言模型(如 BERT、GPT); 3. **跨模态投影器**:对齐视觉与语言特征空间,常用线性层或交叉注意力机制; 4. **解码器**:生成文本输出(如回答或描述)。 例如,CLIP 模型通过对比学习对齐图像-文本对特征[^1],而 CogAgent 则通过 GUI 界面交互实现具身智能[^4]。 --- #### 三、VLM 的基本原理 1. **训练目标**: - 对比学习:最大化匹配图像-文本对的相似度(如 CLIP) - 生成式学习:通过序列生成任务(如“描述图像内容”)优化模型 2. **多模态融合策略**: - 早期融合:直接拼接视觉与文本特征 - 晚期融合:通过注意力机制动态交互(如 Flamingo 模型)[^3] --- #### 四、VLM 的应用场景 | 领域 | 典型案例 | |--------------|--------------------------------------------------------------------------| | 智能医疗 | 分析医学影像并生成诊断报告 | | 自动驾驶 | 理解道路场景与交通标志,辅助决策 | | 工业质检 | 结合产品图像与工艺文档进行缺陷检测 | | 具身智能 | CogAgent 通过 GUI 界面操作软件(如点击按钮、填写表单)[^4] | | 教育 | 根据教材插图生成题目解析 | --- #### 五、VLM 的挑战与趋势 **挑战**: 1. 多模态数据对齐困难,需大量标注数据 2. 计算成本高(如训练千亿参数模型) 3. 评估指标不完善,语义准确性难量化 **趋势**: 1. 轻量化:开发适用于边缘设备的紧凑型 VLM 2. 端到端训练:统一视觉与语言编码器架构(如 LLaVA) 3. 具身智能扩展:结合物理世界交互(如机器人控制)[^4] --- #### 六、VLM 使用方法(以开源模型为例) 1. **选择预训练模型**:Huggingface 平台提供 BLIP、LLaVA 等模型[^4] 2. **数据准备**:需图像-文本配对数据集(如 COCO、VQA) 3. **微调训练**: ```python # 伪代码示例:使用 PyTorch 微调 VLM model = VLMModel.from_pretrained("blip-base") optimizer = AdamW(model.parameters()) for image, text in dataloader: loss = model(image, text) # 对比损失或生成损失 loss.backward() optimizer.step() ``` 4. **部署应用**:通过 API 或 ONNX 格式集成到生产环境 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值