昨天睡太早了,起来之后,就被Qwen2-VL开源消息刷屏了。
良心Qwen,开源了Qwen2-VL的2B和7B,72B需要API调用暂未开源。
该说不说Qwen系列模型真的是在开源路上一骑绝尘,全全全!
vl、audio、text连续更新,kpi直接拉满!
HF: https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d
Blog: https://qwenlm.github.io/blog/qwen2-vl/
啥也不说,先看榜单。
对比Qwen-VL
Qwen2-VL相比Qwen-VL,有如下改进:
适配不同分辨率和不同长宽比的图片 长视频理解:可以理解20分钟以上的长视频 更强的复杂推理和决策的能力,可根据视觉环境和文字指令进行自动操作手机、机器人等设备 支持除英语和中文外,也支持大多数欧洲语言、日语、韩语、阿拉伯语、越南语等多语言
模型结构上ViT加Qwen2的串联结构,在三个不同尺度的模型上,均采用600M的ViT,支持图像和视频统一输入。
实现了对原生动态分辨率的全面支持,不同大小图片被转换为动态数量的 tokens,最小只占4个tokens。 增加多模态旋转位置嵌入(M-ROPE),将原始旋转嵌入分解为代表时间、高度和宽度的三个部分,使得大规模语言模型能够同时捕捉和整合一维文本序列、二维视觉图像以及三维视频的位置信息。
先来简单测测Qwen2-7B-VL效果
https://modelscope.cn/studios/qwen/Qwen2-7B-VL-demo
以下测试均基于魔搭上的demo进行测试(有时候服务不稳定):
测试一下单图片信息抽取功能
input:请逐步详细分析,谁(姓名)几点出发,从哪儿到哪儿,并且花了多少钱
结果:完全正确
测试一下单图片信息抽取+计算功能
input:请逐步详细分析,告诉我在中文数据和英文数据分别占比是多少,并且告诉我总和
结果:完全正确
追问input:英文和代码数据的占比总和呢?
测试一下单图片理解功能
input:请逐步详细分析,这张图片里是有两只狗,对吗
结果:完全正确
测试一下单图片手写ORC功能
input:请逐步详细分析,输出图片中的文字内容
结果:错了一个字少了一个字,但是这种连笔确实还比较难
测试一下单图片表格结构化输出
input:识别图片中表格内容,并以结构化格式输出
结果:内容识别准确,但是表格结构不对,并且可能由于网页端输出长度限制,输出不正确。
再测个简单表,
结果:完全正确
测试一下多图片信息抽取+计算功能
input:请逐步详细分析,两张票一共花了多少钱
结果:OCR准确,但是计算出现了瑕疵
再测试一下多图片信息抽取+计算功能
input:请逐步详细分析,两顿饭我花了多少钱
结果:完全正确,这次对了,难倒你对饭情有独钟?
篇幅有限,更多的能力大家自己测测看看吧
HF快速使用:
PS:模型下载有困难的同学,详见我之前写的一篇文章《大模型下载使我痛苦》。
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
model = Qwen2VLForConditionalGeneration.from_pretrained(
"Qwen/Qwen2-VL-7B-Instruct", torch_dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-7B-Instruct")
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
},
{"type": "text", "text": "Describe this image."},
],
}
]
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to("cuda")
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
PS:给公众号添加【星标⭐️】不迷路!您的点赞、在看、关注是我坚持的最大动力!
我们的口号是“生命不止,学习不停”!
往期推荐:
一大堆Chinese Llama3正在袭来 LLM2LLM:迭代数据增强策略提升大模型微调效果 如何快速提高大模型的向量表征效果? RAG系统中答案无关片段对LLMs生成答案有何影响? InternLM2技术报告 Qwen1.5-MoE模型:2.7B的激活参数量达到7B模型的性能 RAG与Long-Context之争—没必要争 角色扮演大模型的碎碎念 自我蒸馏方法-减轻大模型微调过程中的灾难性遗忘 Yi技术报告细节分享 大模型增量预训练新技巧-解决灾难性遗忘 如何提高LLMs的文本表征(Text Embedding)能力? DEITA-大模型指令微调的数据高效筛选方法 大模型微调技巧 | 高质量指令数据筛选方法-MoDS 辟谣!微软撤回声称ChatGPT为20B参数的论文,并给出解释。 如何看待微软论文声称 ChatGPT 是 20B (200亿) 参数量的模型? 大模型微调技巧-在Embeeding上加入噪音提高指令微调效果 如何从数据集中自动识别高质量的指令数据 BaiChuan2技术报告细节分享&个人想法 大模型LLM微调经验总结&项目更新 打造LLM界的Web UI 是我们在训练大模型,还是大模型在训练我们? Llama2技术细节&开源影响 大模型时代-行业落地再思考 垂直领域大模型的一些思考及开源模型汇总 如何评估大模型-LLMs的好坏?