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

vllm 部署 Qwen2.5-VL-7B-Instruct 识别程序(docker版)

vllm 部署 Qwen2.5-VL-7B-Instruct-AWQ

( 基于 docker )

作者项目不允许部署 Qwen2.5-VL-7B-Instruct 非量化版,因为作者目前是 4090 48G 魔改过的,
上面已经跑了一个ollama程序,导致显存只剩下了20G不到,
如果是 24 G 内存,可以跑 Qwen2.5-VL-7B-Instruct 非量化版,操作一样

目前作者环境如下:

驱动CUDA显卡型号显卡块数
560.35.0312.6.14090 48G8

下载模型

modelscope download --model Qwen/Qwen2.5-VL-7B-Instruct-AWQ --local_dir  /data/qwen2.5/Qwen2.5-VL-7B-Instruct-AWQ

开始配置

docker 配置

vim /etc/docker/daemon.json
{
"registry-mirrors": [
	"https://docker.cloudmessage.top",
	"https://kfp63jaj.mirror.aliyuncs.com",
    "https://j47dskil.mirror.aliyuncs.com"
   ],
"ipv6": false,
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
  },
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  },
"default-runtime": "nvidia",
"data-root": "/data/docker"
}

docker 安装 vllm

###镜像比较大16G多,还是先拉下来再运行
docker pull vllm/vllm-openai:latest

运行 程序

docker run --runtime nvidia --gpus "device=0"   --name vllm-qwen2.5-vl-7b_AWQ \
-v /data/qwen2.5:/data/qwen2.5 \
-v /data/vllm_cache:/root/.cache/vllm \
-p 8110:8000 \
-e CUDA_VISIBLE_DEVICES=0 \
-d vllm/vllm-openai:latest \
--model /data/qwen2.5/Qwen2.5-VL-7B-Instruct-AWQ \
--dtype float16 \
--block-size 16 \	
--use-v2-block-manager \
--max-num-batched-tokens 8192 \
--max-num-seqs 32

--gpus "device=0"  # 指定显卡,0是第一块,1是第二块
--name vllm-qwen2.5-vl-7b_AWQ \ # docker 容器名称
-v /data/qwen2.5:/data/qwen2.5 \ # 模型存放目录
-v /data/vllm_cache:/root/.cache/vllm \ # vllm 目录
-p 8110:8000 \  # 映射端口
-e CUDA_VISIBLE_DEVICES=0 \ #强制容器仅使用 GPU 设备 0,因为容器中只能看到一块显卡
-d vllm/vllm-openai:latest \  # 指定镜像
--model /data/qwen2.5/Qwen2.5-VL-7B-Instruct-AWQ \ # 指定模型
--dtype float16 \  # 混合精度推理
--block-size 16 \  #  KV缓存块大小	
--use-v2-block-manager \  # 新版显存管理器	
--max-num-batched-tokens 8192 \ # 最大批处理tokens(4096-16384)
--max-num-seqs 32 最大并发请求数

测试程序

# 创建虚拟环境
conda create -n qwenvl python=3.11 -y
conda activate qwenvl
vim vllm_ocr.py
import base64
import time  # 导入time模块
from openai import OpenAI

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')

# 初始化 OpenAI 客户端
client = OpenAI(
    base_url="http://192.168.3.164:8110/v1",
    api_key="NOT_NEED"
)

# 本地图片路径
image_path = "1744184033544.jpg"

# 编码图片
base64_image = encode_image(image_path)

# 记录开始时间
start_time = time.time()

response = client.chat.completions.create(
  model="/data/qwen2.5/Qwen2.5-VL-7B-Instruct-AWQ",
  # 仔细分析图片中的内容后,请以HTML结构化(含所有非表格文字)完整输出。\n注意:不需要 <style>标签
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "完整输出图中所有相关文字"},
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}",
          },
        },
      ],
    }
  ],
  max_tokens=4096,
)

# 计算耗时
elapsed_time = time.time() - start_time

print(response.choices[0])
print(f"\n请求耗时: {elapsed_time:.2f}秒")  # 打印耗时,保留两位小数

python vllm_ocr.py

在这里插入图片描述

docker ps -a
docker logs -f vllm-qwen2.5-vl-7b_AWQ

在这里插入图片描述

1744184033544.jpg 图片内容如下

在这里插入图片描述

相关文章:

  • 学习笔记—C++—类和对象(2)
  • 优质LLM Agent项目推荐清单
  • 字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口)
  • 为什么 npm list -g 没显示 node_modules?✨
  • 【Linux】TCP_Wrappers+iptables实现堡垒机功能
  • 基于 SysTick 定时器实现任务轮询调度器
  • 嵌入式硬件篇---Uart和Zigbee
  • 基于MATLAB/simulink的信号调制仿真--AM调制
  • 数学知识——欧拉函数
  • WHAT - React 技术栈常用库/工具
  • 用AI无差别转换技术协议到生产工艺
  • 硬件知识积累 单片机+ 光耦 + 继电器需要注意的地方
  • [打印机] 惠普打印机的安装和配置
  • 蓝桥杯速成刷题清单(上)
  • grok 驱动级键盘按键记录器分析
  • 扒光HPM6800系列 | 强到起飞的显控MCU介绍
  • 人工智能在高中教育中的应用现状剖析与挑战应对
  • 【QT】QWidget 概述与核心属性(API)
  • FreeRTOS静态任务创建(2025.4.9巨详细)
  • Vue.js组件化开发实战:从工程化到安全纵深设计
  • 做不一样的网站/网站搭建外贸
  • 北京城乡建设委员会官方网站/合肥做网站公司哪家好
  • 网站开发贴吧/行业关键词分类
  • 网站建设单选按钮/优化推广排名网站教程
  • 做网站劫持多少钱/千锋教育培训机构怎么样
  • 怎么写代码自己制作网站/网站信息查询