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.03 | 12.6.1 | 4090 48G | 8 |
下载模型
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结构化(含所有非表格文字)完整输出。
注意:不需要