Valley2,基于电商场景的多模态大模型

文摘   2025-01-14 20:35   浙江  

Valley2是一种新颖的多模态大型语言模型,旨在通过可扩展的视觉-语言设计增强各个领域的性能,并拓展电子商务和短视频场景的实际应用边界。Valley2在电子商务和短视频领域中实现了最先进的性能。它引入了如大视觉词汇、卷积适配器(ConvAdapter)和Eagle模块等创新,提高了处理多样化真实世界输入的灵活性,同时增强了训练和推理效率。


模型链接:

https://www.modelscope.cn/models/bytedance-research/Valley-Eagle-7B


代码链接:

https://github.com/bytedance/Valley


论文链接:

https://arxiv.org/abs/2501.05901


01

模型架构


采用了Qwen2.5作为其LLM主干,SigLIP-384作为视觉编码器,并结合MLP层和卷积进行高效的特征转换。


projector:采用了一个带有大型隐藏层MLP的projector,用轻量级的ConvAdapter替换了之前的PixelShuffle方法。


Eagle模块 :通过添加额外的视觉编码器以减少失真并确保兼容极端输入,从而扩展令牌表示。


数据


02

数据和训练方式


数据

Valley2的数据由三个部分组成:

  • OneVision风格的数据用于每个阶段的多模态大型模型训练。

  • 针对电子商务和短视频领域的数据和评估。

  • 构建用于复杂问题解决的链式思维(CoT)数据。


训练

训练过程包括四个阶段:文本-视觉对齐、高质量知识学习、指令微调以及链式思维后训练。


03

实验结果


Valley2在多个公开基准测试中表现优异,特别是在MMBench、MMStar、MathVista等多个基准上得分较高。此外,在Ecom-VQA基准测试中,Valley2也超越了其他相同规模的模型。

cot-post train 前后对比:


04

模型效果



05

模型推理


下载模型代码

!git clone https://github.com/bytedance/Valley.git%cd Valley


模型推理

from valley_eagle_chat import ValleyEagleChatfrom modelscope import snapshot_downloadimport urllib.request
# 需要把模型文件中的config.json的eagle_vision_tower和mm_vision_tower改为本地路径
model_dir = snapshot_download("bytedance-research/Valley-Eagle-7B")!modelscope download --model=Qwen/Qwen2-VL-7B-Instruct --local_dir=./Qwen2-VL-7B-Instruct!modelscope download --model=AI-ModelScope/siglip-so400m-patch14-384 --local_dir=./siglip-so400m-patch14-384model = ValleyEagleChat( model_path=model_dir, padding_side = 'left',)
url = 'http://p16-goveng-va.ibyteimg.com/tos-maliva-i-wtmo38ne4c-us/4870400481414052507~tplv-wtmo38ne4c-jpeg.jpeg'
img = urllib.request.urlopen(url=url, timeout=5).read()
request = { "chat_history": [ {'role': 'system', 'content': 'You are Valley, developed by ByteDance. Your are a helpfull Assistant.'}, {'role': 'user', 'content': 'Describe the given image.'}, ], "images": [img],}
result = model(request)print(f"\n>>> Assistant:\n")print(result)
from valley_eagle_chat import ValleyEagleChatimport decordimport requestsimport numpy as npfrom torchvision import transforms
model = ValleyEagleChat( model_path=model_dir, padding_side = 'left',)
url = 'https://videos.pexels.com/video-files/29641276/12753127_1920_1080_25fps.mp4'video_file = './video.mp4'response = requests.get(url)if response.status_code == 200: with open("video.mp4", "wb") as f: f.write(response.content)else: print("download error!") exit(1)
video_reader = decord.VideoReader(video_file)decord.bridge.set_bridge("torch")video = video_reader.get_batch( np.linspace(0, len(video_reader) - 1, 8).astype(np.int_)).byte()print([transforms.ToPILImage()(image.permute(2, 0, 1)).convert("RGB") for image in video])
request = { "chat_history": [ {'role': 'system', 'content': 'You are Valley, developed by ByteDance. Your are a helpfull Assistant.'}, {'role': 'user', 'content': 'Describe the given video.'}, ], "images": [transforms.ToPILImage()(image.permute(2, 0, 1)).convert("RGB") for image in video],}result = model(request)print(f"\n>>> Assistant:\n")print(result)


显存占用:


06

未来工作


计划发布包含文本、图像、视频和音频模态的全能模型,并引入基于Valley的多模态嵌入训练方法,以支持下游检索和探测应用。


总之,Valley2代表了多模态大型语言模型的一个重要进展,展示了如何通过改进结构、数据集构建及训练策略来提升模型性能。


点击阅读原文,即可跳转模型~




👇点击关注ModelScope公众号获取
更多技术信息~



魔搭ModelScope社区
模型开源社区魔搭社区ModelScope官方账号
 最新文章