1.模型选型

  • 服务器信息:NVIDIA T4 * 2 16G * 2 Driver Version: 535.154.05 CUDA Version: 12.2
  • 模型选择Qwen2.5-VL-7B-Instruct-AWQ,速度非常快,毫秒级响应

2.下载模型

docker run --rm -it \
    --gpus all \
    --entrypoint /bin/bash \
    --pids-limit -1 \
    --security-opt seccomp=unconfined \
    -v /root/lipengcheng/models1:/models \
    -e OMP_NUM_THREADS=8 \
    vllm/vllm-openai:latest \
    -c "pip install modelscope && python3 -c \"from modelscope import snapshot_download; snapshot_download('qwen/Qwen2.5-VL-7B-Instruct-AWQ', cache_dir='/models/qwen')\""

3.下载vllm镜像

docker pull vllm/vllm-openai:latest

4.启动容器

docker run --gpus all -d -p 8000:8000 --name qwen2.5-vl-7b \
    --ipc=host \
    --pids-limit -1 \
    --security-opt seccomp=unconfined \
    -v /root/lipengcheng/models1/qwen/Qwen2___5-VL-7B-Instruct-AWQ:/model \
    -e HF_DATASETS_OFFLINE=1 \
    -e TRANSFORMERS_OFFLINE=1 \
    -e OMP_NUM_THREADS=16 \
    vllm/vllm-openai:latest \
    --model /model \
    --tensor-parallel-size 2 \
    --max-model-len 16384 \
    --gpu-memory-utilization 0.9 \
    --trust-remote-code
  • 参数解释
一、 Docker 基础运行参数
此部分负责容器的基础生命周期与资源映射。

--gpus all:将宿主机的所有 GPU 资源透传给容器使用。

-d:后台运行(Detached 模式),避免占用当前终端会话。

-p 8000:8000:端口映射。将容器内部的 8000 服务端口映射到宿主机的 8000 端口,以便外部服务(如 API 客户端)进行访问。

--name qwen2.5-vl-7b:指定容器名称,便于后续的日志查看、启停和资源监控。

-v <宿主机路径>:/model:目录挂载。将宿主机中实际存放模型权重的复杂路径,映射为容器内统一且极简的 /model 目录,可有效规避 vLLM 对过长路径的解析异常。

二、 系统与权限控制参数(关键)
此部分用于打破系统默认的安全限制,是大模型在多卡、高并发场景下不崩溃的保障。

--ipc=host:(多卡并行必填项) 允许容器直接使用宿主机的共享内存。在启用多卡张量并行(TP)时,GPU 之间的数据交换极其频繁,若不配置此项,容器默认的 64MB 共享内存会被瞬间耗尽并导致进程卡死。

--pids-limit -1:解除容器内最大进程/线程数的限制。大模型在加载和推理阶段会派生海量线程,设置为 -1(无限制)可防止 pthread_create failed 报错。

--security-opt seccomp=unconfined:解除系统级安全拦截。部分较新的 Linux 内核(如 Ubuntu 24.04)默认的安全策略(seccomp)会拦截 AI 计算库的底层系统调用,配置此项可予开放行。

三、 环境变量配置(网络与 CPU 调优)
此部分通过 -e 注入容器,用于优化启动速度和宿主机 CPU 负载。

HF_DATASETS_OFFLINE=1TRANSFORMERS_OFFLINE=1:(离线部署核心) 强制底层 HuggingFace 库开启纯离线模式。禁止其在服务启动时尝试连接外网校验版本或下载依赖,实现“秒读”本地硬盘模型,彻底杜绝因网络超时或 DNS 解析失败导致的启动崩溃。

OMP_NUM_THREADS=16:限制 CPU 底层数学库的并发线程数。避免在进行 CPU 预处理时占用宿主机全部核心,防止系统资源抢占导致的整体卡顿。

四、 vLLM 引擎推理参数
此部分直接决定了 AI 模型的显存分配逻辑和运行表现。

--model /model:指定 vLLM 加载模型的路径(对应上述 -v 挂载的容器内路径)。

--tensor-parallel-size 2:张量并行度(TP)。强制将模型切分并分布到 2 块显卡上协同计算,解决单张显存不足的问题(卡数需根据实际物理 GPU 数量严格对应)。

--max-model-len 16384:最大上下文长度限制。限制单次请求(包含历史对话及图像编码)的最大 Token 数量。合理设定此阈值,可防止因输入超长文本导致显存溢出(OOM)。

--gpu-memory-utilization 0.9:显存利用率分配。指定 vLLM 引擎可预先占用的显存比例上限(此处为 90%)。系统会利用这些空间存放模型权重和 KV Cache,预留 10% 供显卡驱动和其他底层进程使用。

--trust-remote-code:允许执行模型包内附带的自定义 Python 代码。对于采用了新架构的模型(如 Qwen、InternVL),此项为必填项,否则引擎会出于安全限制拒绝加载其特有的网络结构代码。
  • 启动日志

查看代码 CODEBLOCK_PLACEHOLDER_0005

  • 显卡缓存模型的速度

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • token缓存数量30多万个

5.模型测试

CODEBLOCK_PLACEHOLDER_0006 CODEBLOCK_PLACEHOLDER_0007

6.测试模型页面html

  • 页面展示,单个html页面,直接双击运行,如果有喜欢的,可以私信我

更多推荐