LLM - Qwen-VL 视觉模型初体验

目录

一.引言

二.环境准备

三.模型测试

1.模型 Load

2.模型 Chat

3.目标识别

四.总结


一.引言

随着语言 LLM 的崛起,多模态的图像、视频模型更迭的速度也在加快,今天尝试下 Qwen 最新的 Qwen-VL 多模态模型,官方文档介绍中 4-bit 量化版本并未有明显的性能下降,所以这里我们直接上 4-bit 量化模型搞起:

模型下载地址: https://huggingface.co/Qwen/Qwen-VL-Chat-Int4

二.环境准备

除了基础的 package 依赖需要更改外,还需到单独安装依赖库,主要是 AutoGPTQ:

pip install -r requirements.txt
pip install optimum

git clone https://github.com/JustinLin610/AutoGPTQ.git & cd AutoGPTQ
pip install -v .

下载前、下载后还有一些依赖的坑,所以除了上述依赖外,大家安装前首先保证安装如下两个 package:

pip install transformers_stream_generator
pip install gekko

三.模型测试

1.模型 Load

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(1234)

use_int4 = True

if use_int4 == True:
    model_path = "/model/Qwen-VL-Chat-Int4"
else:
    model_path = "/model/Qwen-VL-Chat"

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

# use bf16
#model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True, bf16=True).eval()
# use fp16
# model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True, fp16=True).eval()
# use cpu only
# model = AutoModelForCausalLM.from_pretrained(model_path, device_map="cpu", trust_remote_code=True).eval()
# use cuda device
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="cuda", trust_remote_code=True).eval()

这里 4 bit 模型加载后大约需要 20G 显存,如果不想使用量化模型,也可以在 HF 上下载对应的原始 FP32 的模型。

2.模型 Chat

query = tokenizer.from_list_format([
    {'image': '/vision/cr7.jpg'},
    {'text': '这是什么'},
])
response, history = model.chat(tokenizer, query=query, history=None)
print(response)

通过图片与 Instruction 获取图像的理解: 

3.目标识别

# 2nd dialogue turn
response, history = model.chat(tokenizer, '输出"奖杯"的检测框', history=history)

print(response)
image = tokenizer.draw_bbox_on_latest_picture(response, history)
if image:
  image.save('1.jpg')
else:
  print("no box")

通过 "检测框" 的指令进行目标识别:

四.总结

实际测试下,一些简单的图像识别、标注任务量化版本与非量化版本差距不大,而且显存占用和推理速度都比较友好,有需要的同学可以上手试试。

### Qwen2.5-VLQwen2.5-Instruct 的区别 #### 架构设计上的差异 Qwen2.5-VL 系列相较于 Qwen2.5-Instruct,在模型架构上有显著的不同。Qwen2.5-VL 针对多模态任务进行了优化,其网络结构被进一步简化以增强对时间与空间尺度的感知能力[^1]。这种改进使得 Qwen2.5-VL 更适合处理涉及图像、视频以及其他复杂数据形式的任务。 相比之下,Qwen2.5-Instruct 主要专注于纯文本输入场景下的指令跟随性能提升。它通过强化训练来提高对话理解和生成质量,适用于自然语言处理中的问答、翻译以及代码生成等领域。 #### 性能表现的区别 由于上述架构调整,Qwen2.5-VL 在运行效率方面有所改善,并且能够在多项视觉语言综合评测指标上取得优异成绩,甚至优于某些国际知名竞品(如 GPT-4o-mini)。而 Qwen2.5-Instruct 则更侧重于文字交互体验流畅度和准确性方面的突破。 ### 应用场景对比分析 #### 多模态领域应用-Qwen2.5-VL 对于需要融合多种感官信息的应用场合来说,比如自动驾驶辅助系统开发过程中需要用到的道路环境识别功能;或者医疗健康监测设备里涉及到的人体生理参数可视化展示部分,则可以优先考虑采用具备更强时空理解力特性的 Qwen2.5-VL 模型来进行技术支持。 以下是基于 vLLM 平台部署该版本的具体操作方法示例: ```bash HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download Qwen/Qwen2.5-VL-7B-Instruct ``` 启动服务端口监听命令如下所示: ```python import vllm from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct") model = vllm.LLM("Qwen/Qwen2.5-VL-7B-Instruct", tokenizer=tokenizer) # Start the server with a specific port number. server = model.start_server(port=8090) ``` #### 文本处理方向适用-Qwen2.5-Instruct 当项目需求集中于文档摘要提取、情感倾向判断或是创意写作支持等方面时,那么选择经过专门调校过的 Qwen2.5-Instruct 将会更加合适一些。这类应用场景通常只需要依赖高质量的语言表达能力和逻辑推理技巧即可满足业务目标要求[^2]。 例如可以通过以下方式加载并初始化这个特定用途定制化后的实例对象用于实际生产环境中: ```python from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer model_name_or_path = 'Qwen/Qwen2.5-Instruct' tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) text_generator = pipeline('text-generation', model=model, tokenizer=tokenizer) result = text_generator("Write an article about artificial intelligence.", max_length=500)[0]['generated_text'] print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BIT_666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值