摘要:Xmodel-VLM是一个多模态视觉语言模型,它通过结合视觉和语言信息来处理各种视觉语言任务。它是为在消费级GPU服务器上高效部署而设计的,直接面对个关键的行业问题,即解决阻碍大规模多模态系统广泛采用的高昂服务成本。通过严格的训练,从头开始开发了一个1B级的语
Xmodel-VLM是一个多模态视觉语言模型,它通过结合视觉和语言信息来处理各种视觉语言任务。它是为在消费级GPU服务器上高效部署而设计的,直接面对个关键的行业问题,即解决阻碍大规模多模态系统广泛采用的高昂服务成本。通过严格的训练,从头开始开发了一个1B级的语言模型,使用LLaVA范式进行模态对齐。Xmodel VLM,是一个轻量级但强大的多模态视觉语言模型。对众多经典的多模态基准测试的广泛测试表明。Xmode VLM的体积更小、执行更快,而且其性能与大型模型相当。
模型架构
Xmodel-VLM的架构包含三个关键部分:
视觉编码器:使用预训练的CLIP ViT-L/14作为视觉编码器,分辨率为336x336。
轻量级语言模型(LLM):从零开始训练的1.1B规模的轻量级语言模型Xmodel-LM,设计上与LLaMA相似。
投影器(Projector):两层多层感知机MLP,用于加强视觉编码器与LLM之间的连接,并使用Mish函数作为激活函数,同时作为下采样机制,减少视觉标记数量。
训练策略
Xmodel-VLM的训练分为两个阶段。第一阶段预训练,冻结视觉编码器和Xmodel-LM,专注于训练投影器。第二阶段多任务训练,对投影器和语言模型进行全面微调。
以下是这两个阶段的详细说明:
预训练阶段:目标是训练一个高效的投影器(Projector),同时保持视觉编码器(Vision Encoder)和轻量级语言模型(LLM)冻结。
数据集:使用CC-595K数据集的一个筛选子集进行训练。
参数设置:
初始学习率:1e-3
批处理大小:64
训练周期:进行一个周期的训练。
优化器:使用AdamW优化器,动量参数为0.9和0.999,以及epsilon值为1e-8。
权重衰减:权重衰减设置为0。
过程:在这个阶段,视觉编码器和LLM的权重保持不变,只有投影器内部的可训练参数被更新。这相当于创建一个与冻结的LLM嵌入兼容的视觉标记器。
指令调优阶段(微调):目标是在指令调优阶段,目标是对投影器和语言模型进行全面微调,以增强它们的视觉理解和语言处理能力。
数据集:在LLaVA-Instruct-150K数据集上进行微调。
参数设置:
学习率:4e-5
批处理大小:32
训练周期:进行一个周期的微调。
优化器和权重衰减:与预训练阶段相同,使用AdamW优化器,权重衰减为0。
过程:在微调期间,LLM中的所有参数都会更新,但不会使用LoRA(Low-Rank Adaptation)技术。视觉编码器的权重保持冻结。
训练策略的优势:模态对齐:通过预训练和微调,Xmodel-VLM能够有效地对齐视觉和文本空间,提高跨模态任务的性能。
轻量级:Xmodel-VLM通过精心设计的1.1B参数规模的语言模型,实现了模态间的对齐,同时保持了模型的轻量级。
性能:尽管参数数量较少,Xmodel-VLM在多个视觉语言基准测试中展现了具有竞争力的性能。
以下是Xmodel-VLM训练过程的代码实现示例:
# 预训练阶段
# 加载预训练的视觉编码器和语言模型
vision_encoder = load_pretrained_vision_encoder('clip_vit_l_14')
language_model = load_pretrained_language_model('xmodel_lm_1.1b')
# 冻结视觉编码器和语言模型的权重
freeze_weights(vision_encoder)
freeze_weights(language_model)
# 初始化投影器
projector = initialize_projector
# 预训练
pretrain(projector, vision_encoder, language_model, cc_595k_dataset,
learning_rate=1e-3, batch_size=64, epochs=1)
# 微调阶段
# 解冻语言模型的权重
unfreeze_weights(language_model)
# 微调
finetune(projector, vision_encoder, language_model, llava_instruct_150k_dataset,
learning_rate=4e-5, batch_size=32, epochs=1)
基于openMind Library,在魔乐社区中的应用小试
魔乐社区与openmind高度融合,可以在社区中直接调用openmind库来使用魔乐社区中已经上传成功的模型。
魔乐社区中,已经存在了VLM大模型,在导航栏搜索VLM,选择您需要的微调版本模型,然后根据下列方法去下载。
下载到本地之后,我们就可以根据需要来调整模型,主要调整模型的config和model文件,以及根据上文提到的Xmodel的改进代码进行调整,调整之后就可以在自己的数据集上运行,运行结果也将保存到本地。
体验空间
在魔乐空间创建了一个体验空间,用于测试体验简单的VLM任务,例如让模型做单词情感分析,情感分析能够帮助理解自然语言,预测词频概率以及预测情感倾向,用途较为广泛。
如happy是积极的,bad是消极的。
分别输入bad和happy,就可以让VLM做情感分析,
可以发现他们为不同的类别,而pleasure与happy为同一类别单词,再尝试输入pleasure
可以看到,模型是可以判断出不同单词的情感类别,并给出一个评分标准
以下是体验空间的网址:
DataFun/VLM | 魔乐社区
通过实际应用,我们可以看到Xmodel-VLM在多模态任务中的潜力和灵活性。在魔乐社区中,我们也可以轻松的下载和使用此模型来解决工程中的问题,通过适当的训练和微调,Xmodel-VLM可以发挥出色的性能。
来源:DataFunTalk