当前位置: 首页 > article >正文

qwen2.5-vl复现日志

本文不生产技术,只做技术的搬运工!!!

前言

        作者使用A100-40G*4进行qwen2.5-vl本地部署。

环境配置

git clone https://github.com/QwenLM/Qwen2.5-VL.git
cd Qwen2.5-VL
conda create -n qwen2.5-vl python=3.11 -y
pip install -r requirements_web_demo.txt
pip install flash-attn==2.6.1
pip install vllm==0.7.3
pip install autoawq --no-deps

单卡加载

7B

vllm serve /data/qwen2.5-vl/model-7b/ --port 8084 --host 0.0.0.0 --dtype bfloat16 --limit-mm-per-prompt image=5,video=5 --max-model-len 3840

7B-awq

vllm serve /data/qwen2.5-vl/model-7b-awq/ --port 8084 --host 0.0.0.0 --dtype bfloat16 --limit-mm-per-prompt image=5,video=5 --max-model-len 3840.8

多卡加载

7B

CUDA_VISIBLE_DEVICES=0,1,2,3 vllm serve /data/qwen2.5-vl/model-7b/ --port 8084 --host 0.0.0.0 --dtype bfloat16 --limit-mm-per-prompt image=5,video=5 --max-model-len 3840 --tensor-parallel-size 4 --gpu-memory-utilization 0.8

7B-awq

CUDA_VISIBLE_DEVICES=0,1,2,3 vllm serve /data/qwen2.5-vl/model-7b-awq/ --port 8084 --host 0.0.0.0 --dtype bfloat16 --limit-mm-per-prompt image=5,video=5 --max-model-len 3840 --tensor-parallel-size 4 --gpu-memory-utilization 0.8

72B-awq

相较于7b-awq的加载,72b-awq加载时会报错:

KeyboardInterrupt: MQLLMEngine terminated

 这里作者并没有找到更好的解决方案,只是根据推理时的报错推测和cuda有关,因此在启动命令上增加了--enforce-eager参数解决了该问题,但是感觉并没有在根本上解决该问题,只是将其掩盖能凑活使用罢了

CUDA_VISIBLE_DEVICES=0,1,2,3 vllm serve /data/qwen2.5-vl/model-72b-awq/ --port 8084 --host 0.0.0.0 --dtype bfloat16 --limit-mm-per-prompt image=5,video=5 --max-model-len 3840 --tensor-parallel-size 4 --gpu-memory-utilization 0.8 --enforce-eager

实验

代码

from openai import OpenAI
import time

# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://0.0.0.0:8084/v1"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

times = []  # 记录每次调用的时间

for i in range(20):
    start_time = time.time()  # 开始时间
    chat_response = client.chat.completions.create(
        model="/data/qwen2.5-vl/model-72b-awq/",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": "https://modelscope.oss-cn-beijing.aliyuncs.com/resource/qwen.png"
                        },
                    },
                    {"type": "text", "text": "描述一下这张图像"},
                ],
            },
        ],
    )
    end_time = time.time()  # 结束时间
    elapsed_time = end_time - start_time  # 计算耗时
    times.append(elapsed_time)  # 添加到列表中
    print(f"第 {i + 1} 次调用结果: {chat_response.choices[0].message.content}")
    print(f"第 {i + 1} 次调用耗时: {elapsed_time:.4f} 秒")

# 去掉最大值和最小值
if len(times) >= 3:
    times.remove(max(times))
    times.remove(min(times))

# 计算平均耗时
average_time = sum(times) / len(times) if times else 0
print(f"去掉一个最大值和一个最小值后,平均每次调用耗时: {average_time:.4f} 秒")

结果


http://www.kler.cn/a/590980.html

相关文章:

  • Certbot实现SSL免费证书自动续签(CentOS 7 + nginx/apache)
  • Python刷题:流程控制(上)
  • Pytest项目_day01(HTTP接口)
  • C++八大常见的设计模式的实现与实践指南
  • 服务器防火墙根据什么特征来过滤数据包?
  • H3C SecPath SysScan-AK 系列漏洞扫描系统
  • vue中根据html动态渲染内容
  • 设备物联网无线交互控制,ESP32无线联动方案,产品智能化响应
  • 基于SpringBoot的Mybatis和纯MyBatis项目搭建的区别
  • docker 安装 nginx 部署Vue前端项目
  • AOP+Nacos实现动态数据源切换
  • 超详细kubernetes部署k8s----一台master和两台node
  • AK 接口
  • Oracle静默安装方法
  • MySQL事务:确保数据一致性的关键机制
  • 复旦:LLM不同层位置编码缩放
  • 【arXiv 2025】卷积加法自注意力CASAtt,轻量且高效,即插即用!
  • 【紫光同创FPGA开发常用工具】FPGACPLD的下载与固化
  • 数据库设计实验(4)—— 数据更新实验
  • 神思智飞无人机智能调度系统介绍