Qwen2.5-VL 多模态模型运行新手入门

Qwen2.5-VL 多模态模型运行指南

环境准备

# 创建conda虚拟环境
conda create --name my-qwen2.5-vl python=3.10
conda activate my-qwen2.5-vl

依赖安装

# 安装核心依赖包
pip install git+https://github.com/huggingface/transformers accelerate
pip install qwen-vl-utils[decord]==0.0.8

# 安装PyTorch(推荐使用CUDA 12.1版本)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

代码准备

创建qwen-vl.py文件并粘贴以下内容:

from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
import torch

# 基础模型加载方式
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    "Qwen/Qwen2.5-VL-3B-Instruct", 
    torch_dtype="auto",
    device_map="auto"
)

# (可选)启用flash_attention_2加速(需要支持CUDA的GPU)
# model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
#     "Qwen/Qwen2.5-VL-3B-Instruct",
#     torch_dtype=torch.bfloat16,
#     attn_implementation="flash_attention_2",
#     device_map="auto"
# )

# 初始化处理器
processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-3B-Instruct")

# 构建多模态输入
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": "test.jpg"},
            {"type": "text", "text": "描述这张图片."}
        ]
    }
]

# 预处理流程
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"
).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)

准备测试图片

  1. 下载任意图片 下载图片
    请添加图片描述

  2. 重命名为test.jpg

  3. 放置在与代码文件同级目录

运行程序

python qwen-vl.py

预期输出

这张图片展示了一位年轻女子和她的狗在海滩上互动的场景。她坐在沙滩上,穿着格子衬衫和黑色裤子,面带微笑地看着她的狗。她的狗戴着彩色的项圈,正在用前爪与她握手。背景是模糊的海洋和天空,给人一种宁静和温暖的感觉。阳光洒在她们身上,营造出一种温馨和谐的氛围。

Loading checkpoint shards: 100%|██████████| 2/2 [00:04<00:00,  2.00s/it]
Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.48, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.
['这张图片展示了一位年轻女子和她的狗在海滩上互动的场景。她坐在沙滩上,穿着格子衬衫和黑色裤子,面带微笑地看着她的狗。她的狗戴着彩色的项圈,正在用前爪与她握手。背景是模糊的海洋和天空,给人一种宁静和温暖的感觉。阳光洒在她们身上,营造出一种温馨和谐的氛围。']

高级配置

视觉令牌范围调整

# 在初始化processor时添加参数(单位:像素)
min_pixels = 256 * 28 * 28  # 对应256个视觉令牌
max_pixels = 1280 * 28 * 28 # 对应1280个视觉令牌
processor = AutoProcessor.from_pretrained(
    "Qwen/Qwen2.5-VL-3B-Instruct",
    min_pixels=min_pixels,
    max_pixels=max_pixels
)

常见问题

图像处理器警告

Using a slow image processor...
  • 这是预期提示,不影响程序运行
  • 将在transformers v4.48版本后自动使用快速处理器

CUDA内存不足

  • 尝试缩小输入图片尺寸
  • 启用flash_attention_2优化
  • 使用更低精度的参数:torch_dtype=torch.float16
### Qwen2.5-VL 视觉大模型环境配置 对于希望在配备 NVIDIA GeForce RTX 3050 Ti 显卡的设备上部署 Qwen2.5-VL 的用户来说,理解并遵循一系列特定步骤来设置运行环境至关重要[^1]。 #### 硬件准备 确保硬件满足最低需求,特别是 GPU 和内存方面的要求。NVIDIA GeForce RTX 3050 Ti 是支持 CUDA 技术的显卡之一,这使得它能够加速深度学习算法中的矩阵运算过程,从而提高训练效率和推理速度。 #### 软件安装 为了使该视觉大模型正常工作,需先完成如下软件包的安装: - **CUDA Toolkit**: 安装与显卡相匹配版本的 CUDA 工具包,这是利用 Nvidia 显卡进行高性能计算的基础。 - **cuDNN Library**: cuDNN 提供高度优化的实现方式用于标准神经网络原语,可以显著提升基于卷积架构的大规模数据集处理性能。 - **Python 及其依赖库**: 推荐使用 Python 3.x 版本,并通过 pip 或 conda 来管理项目所需的第三方模块,比如 PyTorch、TensorFlow 等框架以及 NumPy、Pandas 数据科学工具箱。 ```bash conda create --name qwen_env python=3.9 conda activate qwen_env pip install torch torchvision torchaudio cudatoolkit=11.3 -c pytorch ``` #### 下载预训练权重文件 访问官方发布的资源页面获取最新的预训练参数文件链接地址,下载完成后将其放置于指定目录下以便后续加载调用。 #### 加载模型实例化对象 编写一段简单的脚本来初始化 Qwen2.5-VL 实例,读取本地存储路径下的权重信息完成模型结构重建。 ```python import torch from transformers import AutoModelForVision2Seq, AutoFeatureExtractor device = "cuda" if torch.cuda.is_available() else "cpu" model_name_or_path = "./path_to_model_weights" feature_extractor = AutoFeatureExtractor.from_pretrained(model_name_or_path) model = AutoModelForVision2Seq.from_pretrained(model_name_or_path).to(device) print(f"Model loaded successfully on {device}.") ``` 上述代码片段展示了如何创建一个可以在给定输入图像基础上生成描述文本的多模态转换器管道。 #### 测试验证功能正确性 最后一步是对整个流程做一次完整的测试,确认各个组件之间协同工作的稳定性。可以通过提供几张不同类型的图片作为样本输入,观察输出结果是否合理有效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值