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 服务!如有问题,请参考日志或联系技术支持。


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

展开 收起
0评论

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

取消
确认
评论举报

相关文章推荐

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