最新资讯

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

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

2025-06-16 01:37:41 2 阅读

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 
--restart always 
-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 
--gpu-memory-utilization 0.5 
--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   # 新版显存管理器	
--gpu-memory-utilization 0.5  # 用于模型执行器的 GPU 内存比例,这个比例的范围为 0 到 1。
								例如,值 0.5 表示 GPU 内存利用率为 50%。如果未指定,将使用默认值 0.9。
--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结构化(含所有非表格文字)完整输出。
注意:不需要