Qwen2.5-VL-3B-Instruct 模型部署手册

2025-03-29 15:23:36 0点赞 2收藏 0评论


Qwen2.5-VL-3B-Instruct 模型部署手册

Qwen2.5-VL-3B-Instruct 模型部署手册

本地部署基于 Qwen2.5-VL-3B-Instruct 模型的 Flask 服务。手册包括环境配置、依赖安装、模型加载和运行服务的步骤,适用于 Windows 系统。

通义千问VL模型可以根据您传入的图片来进行回答。

访问视觉模型可以在线体验图片理解能力。

百炼(Model Studio)

如何使用Qwen-VL模型_大模型服务平台百炼(Model Studio)-阿里云帮助中心

huggingface 上的7b 模型

Qwen/Qwen2.5-VL-7B-Instruct-AWQ at main

github

QwenLM/Qwen2.5-VL: Qwen2.5-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.

应用场景

  • 图像问答:描述图像中的内容或者对其进行分类打标,如识别图像中的人物、地点、植物等,并给出对应的描述或标签。

  • 文字识别(OCR):识别图像中的文字,如文档截图、日常图像等,并支持格式化输出文本内容。通义千问VL模型能识别多种语言,如中文、英语、日语、韩语、阿拉伯语、越南语等。

  • 数学题目解答:解答图像中的数学问题,包括题目分析、解题思路及结果等。

  • 内容创作:根据图像内容创作文案或者标题。如根据图像自动生成的社交媒体帖子、广告语或是文章标题。

  • 代码生成:根据前端页面截图生成前端代码,如HTML、CSS和JavaScript的代码,或根据图表信息生成使用图表库的代码,如ECharts、Chart.js等。


本文档指导如何在本地部署一个基于 Qwen2.5-VL-3B-Instruct 模型的 Flask 服务,用于处理文本和图像输入的生成任务。服务支持 GPU 加速(需安装 CUDA 和对应 PyTorch 版本)。


前置条件

  1. 硬件要求

    • 支持 NVIDIA GPU(推荐,至少 8GB 显存)。

    • 足够的磁盘空间(模型文件约 6-8GB,依赖库额外占用空间)。

  2. 操作系统

    • Windows 或 Linux(以下步骤适用于两者,特殊说明会标注)。

  3. 网络要求

    • 需联网下载模型和依赖库。


安装步骤

1. 安装 Anaconda

  1. 下载并安装 Anaconda:

  • 根据操作系统安装(Windows/Linux)。

  1. 验证安装:

    conda --version

    输出类似 conda 23.x.x 表示安装成功。


2. 安装 NVIDIA CUDA Toolkit

  1. 检查 GPU 支持的 CUDA 版本:

    • 运行以下命令查看驱动支持的最高 CUDA 版本:

      nvidia-smi

    • 示例输出:

      CUDA Version: 12.2

  2. 下载并安装 CUDA Toolkit:

    • 访问 CUDA Toolkit Archive

    • 选择与 nvidia-smi 输出匹配或稍低的版本(推荐 11.x 或 12.x)。

    • 安装完成后验证:

      nvcc --version

      输出类似 Cuda compilation tools, release 12.2, V12.2.xxx 表示成功。

  3. 安装 cuDNN(可选,推荐):

    • NVIDIA cuDNN 下载与 CUDA 版本匹配的 cuDNN。

    • 解压并将文件复制到 CUDA 安装目录。


3. 创建并激活 Conda 环境

  1. 创建新环境:

    conda create -n QwenLocaVL python=3.11

  2. 激活环境:

    conda activate QwenLocaVL

    • 激活后命令行前会出现 (QwenLocaVL)


4. 安装 PyTorch(支持 GPU 加速)

image-20250328175844043image-20250328175844043
  1. 根据 CUDA 版本选择 PyTorch:

    • 访问 PyTorch 官网

    • 根据 CUDA 版本选择安装命令。例如:

      • CUDA 12.2:

        pip install torch torchvision --index-url https://download.pytorch.org/whl/cu122

      • CUDA 11.8:

        pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118

  2. 验证安装:

    import torch print(torch.__version__) print(torch.cuda.is_available()) # 应输出 True


5. 安装依赖库

安装 Git

首先,你需要安装 Git:

  • 下载 Git:前往 Git 官网 下载适合你系统的版本(Windows/macOS/Linux)。

  • 安装 Git:运行安装程序,按照默认选项安装即可(重要:勾选 "Add Git to PATH" 选项)。

2. 检查 Git 是否安装成功

安装完成后,重新打开终端(CMD/PowerShell),运行以下命令检查 Git 是否可用:

git --version

在激活的 Conda 环境 (QwenLocaVL) 中执行以下命令:

  1. 安装 Transformers 和 Accelerate: 这里有大坑 可以通过

    下面任选其一 pip install git+https://github.com/huggingface/transformers accelerate ​ ​

  2. 安装 Qwen-VL-Utils:

    • Windows:

      pip install qwen-vl-utils

    • Linux:

      pip install qwen-vl-utils[decord]

  3. 安装其他依赖:

    pip install torchvision modelscope

  4. 安装 Flask:

    pip install flask


image-20250328175906157image-20250328175906157

6. 配置代码

  1. 将以下代码保存为 app.py

    import torch import base64 import io from PIL import Image import requests from flask import Flask, request, jsonify from modelscope import snapshot_download from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor from qwen_vl_utils import process_vision_info from flask import json ​ app = Flask(__name__) ​ # 全局变量存储模型和处理器 model = None processor = None ​ def load_model(): """加载模型和处理器""" global model, processor model_dir = snapshot_download('qwen/Qwen2.5-VL-3B-Instruct') model = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_dir, torch_dtype=torch.bfloat16, device_map="auto", ) processor = AutoProcessor.from_pretrained( model_dir, max_pixels=1280 * 28 * 28 ) print("模型加载完成") ​ def process_image_url(image_url): """处理图片URL,返回PIL图像对象""" response = requests.get(image_url) if response.status_code != 200: raise Exception(f"获取图片失败: {response.status_code}") return Image.open(io.BytesIO(response.content)) ​ def process_image_base64(image_base64): """处理Base64编码的图片,返回PIL图像对象""" image_data = base64.b64decode(image_base64) return Image.open(io.BytesIO(image_data)) ​ @app.route('/generate', methods=['POST']) def generate(): """处理生成请求的API端点""" if model is None or processor is None: return jsonify({"error": "模型尚未加载完成"}), 503 try: data = request.json messages = data.get('messages', []) # 处理消息中的图片 for message in messages: if message['role'] == 'user': for i, content in enumerate(message['content']): if content['type'] == 'image': image_data = content['image'] if image_data.startswith('http'): pass else: process_image_base64(image_data) # 准备推理 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(model.device) # 生成回复 max_new_tokens = data.get('max_new_tokens', 128) generated_ids = model.generate(**inputs, max_new_tokens=max_new_tokens) 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 ) response_data = {"response": output_text[0]} return app.response_class( response=json.dumps(response_data, ensure_ascii=False), mimetype='application/json' ) except Exception as e: return jsonify({"error": str(e)}), 500 ​ if __name__ == '__main__': print("正在加载模型...") load_model() app.run(host='0.0.0.0', port=5000)

  2. 确保代码文件与 Conda 环境一致。


7. 运行服务

  1. 在 Conda 环境中运行:

    python app.py

    • 输出类似 模型加载完成 和 Flask 服务启动信息:

      * Running on http://0.0.0.0:5000

  2. 测试服务:

    • 使用 curl 或 Postman 发送 POST 请求到 http://localhost:5000/generate

    • 示例请求:

      { "messages": [ { "role": "user", "content": [ {"type": "text", "text": "Describe this image"}, {"type": "image", "image": "https://example.com/image.jpg"} ] } ], "max_new_tokens": 128 }


常见问题排查

  1. 模型加载失败

    • 检查网络连接,确保能访问 Hugging Face 和 ModelScope。

    • 确认磁盘空间足够。

  2. GPU 不可用

    • 运行 python -c "import torch; print(torch.cuda.is_available())" 检查。

    • 确保 CUDA 和 PyTorch 版本匹配。

  3. 依赖安装报错

    • 使用 pip install --upgrade pip 更新 pip。

    • 逐个安装依赖,检查具体错误。


注意事项

  • 解释器选择:在 IDE(如 PyCharm/VSCode)中,确保选择 Conda 环境 QwenLocaVL 的 Python 解释器。

  • 性能优化:首次加载模型较慢,后续请求会更快。

  • 安全性:仅限本地测试,生产环境需添加认证和防火墙。


完成以上步骤后,你将成功部署一个支持文本和图像输入的 Qwen2.5-VL-3B-Instruct 服务!如有问题,请参考日志或联系技术支持。


希望这份手册对你有帮助!如果需要进一步调整或补充,请告诉我。

展开 收起

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

1834元起

ZSpace 极空间 私有云Z2Pro 2盘位 NAS存储 水墨黑

ZSpace 极空间 私有云Z2Pro 2盘位 NAS存储 水墨黑

1199元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)黑色

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)黑色

3499元起

Synology 群晖 DS923+ 四盘位 NAS存储(AMD R1600、4GB)

Synology 群晖 DS923+ 四盘位 NAS存储(AMD R1600、4GB)

4209元起

UGREEN 绿联 DXP4800 Plus 四盘位 私有云NAS存储

UGREEN 绿联 DXP4800 Plus 四盘位 私有云NAS存储

2979元起

HUAWEI 华为 AS6020 双盘位 家庭存储 NAS

HUAWEI 华为 AS6020 双盘位 家庭存储 NAS

1698元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2679元起

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

1496元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2299元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1367.66元起

极空间私有云Z4Pro 8G版四盘位Nas网络存储服务器家庭个人云相册备份文件同步【配】钛金灰

极空间私有云Z4Pro 8G版四盘位Nas网络存储服务器家庭个人云相册备份文件同步【配】钛金灰

2266元起

绿联私有云DXP4800 Plus 16G内存四盘位NAS网络存储 个人云硬盘家庭服务器 万兆网口 适用iPhone16

绿联私有云DXP4800 Plus 16G内存四盘位NAS网络存储 个人云硬盘家庭服务器 万兆网口 适用iPhone16

3179元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1696元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3099元起

极空间私有云Q4四盘位NAS网络存储服务器AI家庭相册个人云硬盘文件同步手机平板扩容适用iPhone16

极空间私有云Q4四盘位NAS网络存储服务器AI家庭相册个人云硬盘文件同步手机平板扩容适用iPhone16

1999元起

UGREEN 绿联 DXP6800 Pro 六盘位 NAS存储(Intel Core i5、无盘)

UGREEN 绿联 DXP6800 Pro 六盘位 NAS存储(Intel Core i5、无盘)

4899元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
2
扫一下,分享更方便,购买更轻松