附:4服务模型 API设置测试 流程
0. 前期部署准备流程(依赖安装 + 模型下载 + 校验脚本)
0.1 整体部署说明
本次推理部署采用离线纯净部署方案,基于Linux服务器、Conda虚拟环境隔离,全程锁定依赖版本、固化环境变量、内网拷贝模型,无外网不稳定下载,可1:1复刻生产环境。本章完整记录:环境搭建、安装命令、依赖版本、环境变量、模型拷贝、文件校验、依赖自检脚本。
0.2 环境依赖安装流程
0.2.1 创建隔离虚拟环境
|
bash |
0.2.2 基础深度学习依赖安装
|
bash |
0.2.3 推理&量化专项依赖安装
|
bash |
0.2.4 生产固化依赖版本表(不可变更)
|
依赖库 |
固化版本 |
用途说明 |
|
vllm |
0.20.2 |
推理引擎、压测工具、分布式张量并行 |
|
torch |
2.5.1 |
底层CUDA张量运算,适配CUDA12.1 |
|
autoawq |
0.2.7 |
解析AWQ4bit量化权重 |
|
transformers |
4.48.3 |
模型结构读取、分词器加载 |
|
marlin-kernels |
最新稳定版 |
4090显卡专属量化高速内核 |
0.3 系统环境变量配置(永久写入)
针对双卡4090硬件限制(无P2P直通),专门配置环境变量规避警告、稳定通信、限制显卡占用。
|
bash # 生效配置 |
- NCCL_P2P_DISABLE=1:关闭显卡P2P检测,解决4090不支持SymmMem报错。
- CUDA_VISIBLE_DEVICES=0,1:强制只使用两张显卡,防止串卡。
- VLLM_SLEEP_WHEN_IDLE:空闲自动降频,降低服务器功耗与温度。
0.4 模型下载、拷贝与校验流程
0.4.1 模型基础信息
- 模型名称:Qwen3.6-27B-AWQ
- 存放路径:/data/models/Qwen3.6-27B-AWQ
- 模型格式:safetensors(8分片权重)
- 磁盘占用:20.35GB
- 量化方式:4bit-AWQ + Marlin硬件加速
0.4.2 模型拷贝流程(内网离线)
本服务器不使用外网Huggingface下载,采用ModelScope资源拷贝,保证模型完整、无损坏、无限速。
|
bash |
0.4.3 模型人工校验步骤
0.5 生产级依赖自检脚本(可直接复用)
为方便后期运维环境校验,编写一键依赖检查脚本,检测CUDA、Torch、vLLM、AWQ依赖是否齐全、版本是否匹配。
|
bash echo "========== CUDA 版本检测 ==========" echo "========== Python 版本检测 ==========" echo "========== 关键依赖版本检测 ==========" echo "========== GPU 可用性检测 ==========" |
使用方式:赋予权限、一键执行,快速排查环境异常。
|
bash |
1. 测试基本信息
1.1 硬件环境
|
硬件项目 |
参数详情 |
|
GPU型号 |
NVIDIA RTX 4090 24GB |
|
GPU数量 |
2张(双卡张量并行) |
|
系统内存 |
512GB(大内存无加载瓶颈) |
|
硬盘文件系统 |
XFS |
1.2 软件环境
|
软件项目 |
版本/说明 |
|
推理框架 |
vLLM 0.20.2 |
|
量化算法 |
AWQ + Marlin 高速内核 |
|
通信后端 |
NCCL 2.28.9 |
|
KV缓存格式 |
FP8(显存压缩) |
|
Attention后端 |
FlashInfer |
2. 压测命令与核心参数说明
2.1 完整压测命令
|
bash |
2.2 关键长度参数通俗详解(重点)
为方便运维人员理解,采用笔记本生活化比喻,直白区分三个长度参数:
2.2.1 max-model-len = 4096(最大上下文窗口)
比喻:一本总共4096页的笔记本(硬件天花板)
模型最大记忆上限,历史对话+提问+回答全部加起来不能超过4096token,超出自动截断前文。
2.2.2 input-len = 1024(压测输入长度)
比喻:你写给AI的题目,占用1024页
压测固定输入长文本,模拟真实业务长文案、长文档、长问题输入。
2.2.3 output-len = 1024(压测生成长度)
比喻:AI写出的答案,占用1024页
强制模型必须生成1024token,不允许提前结束,用于测试长文本生成能力。
2.3 三者组合关系
4096(总容量) = 1024输入 + 1024输出 + 预留缓存空间
中文通用换算:1token ≈ 1.5~2个汉字
- 输入1024token ≈ 2000汉字
- 输出1024token ≈ 2000汉字
- 最大上下文 ≈ 8000汉字
2.4 其余核心参数说明
|
参数 |
取值 |
作用说明 |
|
tensor-parallel-size |
2 |
双卡均分权重,降低单卡显存压力 |
|
gpu-memory-utilization |
0.75 |
显存安全上限,杜绝OOM |
|
kv-cache-dtype |
fp8 |
KV缓存压缩,节省显存、提升吞吐 |
|
enforce-eager |
启用 |
关闭CUDAGraph,换取工业级稳定性 |
3. 部署流程与日志关键记录
3.1 模型加载阶段
3.2 无害告警日志汇总
本次所有警告无报错、不影响生产,全部为硬件/环境兼容提示:
- NIXL is not available:分布式高速传输组件未安装,单节点无影响。
- SymmMemCommunicator:4090算力架构8.9不支持对称通信,自动降级NCCL。
- Custom allreduce disabled:无显卡P2P直连,自动关闭自定义通信。
4. 实测性能结果与数据解析
4.1 核心稳定性能指标
|
性能指标 |
实测数值 |
说明 |
|
Prompt编码吞吐(读题速度) |
813.1 tokens/s |
批量并行编码,速度极高,非生成速度 |
|
Generation生成吞吐(真实输出) |
74~101 tokens/s |
用户真实感知生成速度,优秀水平 |
|
稳定并发数 |
8 reqs |
无排队、无卡顿 |
|
KV缓存使用率 |
12.5%~15.7% |
显存余量极大 |
4.2 关键数据通俗解释
- 813 tokens/s:输入编码速度,GPU一次性批量读完长文本,所以速度极高。
- 74~101 tokens/s:真实逐字生成速度,自回归生成,为用户实际体验速度。
5. 优缺点总结
5.1 优点
5.2 现存短板
6. 生产优化建议
7. 最终测试结论
本次在双RTX4090服务器完成Qwen3.6-27B-AWQ工业级压测,采用vLLM推理、AWQ量化、FP8 KV缓存、双卡张量并行。环境纯净、依赖固化、模型校验完整、全程无报错无溢出。
实测输入编码吞吐813.1tokens/s,真实生成吞吐稳定101tokens/s,8路并发平稳运行,显存余量充足。
结论:整套部署方案成熟、稳定、可直接投产,所有参数永久固化,作为本服务器官方生产力部署方案。
测试人员:技术测试组
测试时间:2026年05月12日
附:
8 卡 4090 服务器 4 服务设置测试流程
一、环境基础信息
- 服务器:8 卡 RTX 4090
- 模型:Qwen3.6-27B-AWQ
- 虚拟环境路径:/opt/venv/vllm
- 内网网卡:enp194s0f0
- 内网 IP:[10.255.254.44](10.255.254.44)
- 公网 IP:[218.31.112.74](218.31.112.74)
- 对外端口:2196
- 后端内网端口:8000、8001、8002、8003
二、前期问题排查与根因
- 根因:
- vLLM 多卡分布式随机选错网卡 / IP
- NCCL/TCPStore 通信链路不稳定
- 更换分布式后端为 mp 规避 NCCL 不稳定
- Nginx 代理后端改为内网 IP 端口
三、系统环境变量永久配置
|
bash |
四、进入虚拟环境并加载运行变量
|
bash export VLLM_SLEEP_WHEN_IDLE=1 |
五、单终端一键启动 4 个 vLLM 后端服务
|
bash CUDA_VISIBLE_DEVICES=2,3 vllm serve /data/models/Qwen3.6-27B-AWQ \\ CUDA_VISIBLE_DEVICES=4,5 vllm serve /data/models/Qwen3.6-27B-AWQ \\ CUDA_VISIBLE_DEVICES=6,7 vllm serve /data/models/Qwen3.6-27B-AWQ \\ |
六、查看 vLLM 服务是否正常运行
|
bash |
七、Nginx 负载均衡 + 反向代理配置
1. 写入配置文件
|
bash server { location / { |
2. 校验配置并重启 Nginx
|
bash |
3. 防火墙放行对外端口
|
bash |
八、服务连通性测试命令
1. 查看模型列表测试
|
bash |
2. 对话接口测试示例
|
bash |
九、对外正式服务接入信息
- 接口基础地址:http://218.31.112.74:2196/v1
- API Key:sk-qwen-27b-lb-2026
- 模型名称:/data/models/Qwen3.6-27B-AWQ
十、部署稳定保障说明
- 服务无人值守部署
(开机自启 + 崩溃自动重启)
1、停止原有手动服务
|
bash pkill -f vllm sleep 3 ps -ef | grep vllm |
2、创建 4 个 systemd 托管服务文件
1. 创建 vllm-8000 服务
|
Bash sudo tee /etc/systemd/system/vllm-8000.service >/dev/null <<'EOF' [Unit] Description=vLLM Service 8000 After=network.target
[Service] User=hmtsgpu WorkingDirectory=/home/hmtsgpu Environment="PATH=/opt/venv/vllm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment="VLLM_SLEEP_WHEN_IDLE=1" Environment="VLLM_USE_DEEP_GEMM=0" Environment="VLLM_USE_FLASHINFER_MOE_FP16=1" Environment="VLLM_USE_FLASHINFER_SAMPLER=0" Environment="OMP_NUM_THREADS=4" Environment="VLLM_USE_MODELSCOPE=true" Environment="VLLM_API_KEY=sk-qwen-27b-lb-2026" Environment="NCCL_SOCKET_IFNAME=enp194s0f0" Environment="GLOO_SOCKET_IFNAME=enp194s0f0" Environment="VLLM_HOST_IP=10.255.254.44" Environment="CUDA_VISIBLE_DEVICES=0,1"
ExecStart=/opt/venv/vllm/bin/vllm serve /data/models/Qwen3.6-27B-AWQ \\ –trust-remote-code \\ –tensor-parallel-size 2 \\ –gpu-memory-utilization 0.80 \\ –max-model-len 262144 \\ –kv-cache-dtype fp8 \\ –disable-custom-all-reduce \\ –enforce-eager \\ –port 8000 \\ –host 10.255.254.44 \\ –distributed-executor-backend mp \\ –api-key sk-qwen-27b-lb-2026
Restart=always RestartSec=5 LimitNOFILE=65535
[Install] WantedBy=multi-user.target EOF
|
2. 创建 vllm-8001 服务
|
Bash sudo tee /etc/systemd/system/vllm-8001.service >/dev/null <<'EOF' [Unit] Description=vLLM Service 8001 After=network.target
[Service] User=hmtsgpu WorkingDirectory=/home/hmtsgpu Environment="PATH=/opt/venv/vllm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment="VLLM_SLEEP_WHEN_IDLE=1" Environment="VLLM_USE_DEEP_GEMM=0" Environment="VLLM_USE_FLASHINFER_MOE_FP16=1" Environment="VLLM_USE_FLASHINFER_SAMPLER=0" Environment="OMP_NUM_THREADS=4" Environment="VLLM_USE_MODELSCOPE=true" Environment="VLLM_API_KEY=sk-qwen-27b-lb-2026" Environment="NCCL_SOCKET_IFNAME=enp194s0f0" Environment="GLOO_SOCKET_IFNAME=enp194s0f0" Environment="VLLM_HOST_IP=10.255.254.44" Environment="CUDA_VISIBLE_DEVICES=2,3"
ExecStart=/opt/venv/vllm/bin/vllm serve /data/models/Qwen3.6-27B-AWQ \\ –trust-remote-code \\ –tensor-parallel-size 2 \\ –gpu-memory-utilization 0.80 \\ –max-model-len 262144 \\ –kv-cache-dtype fp8 \\ –disable-custom-all-reduce \\ –enforce-eager \\ –port 8001 \\ –host 10.255.254.44 \\ –distributed-executor-backend mp \\ –api-key sk-qwen-27b-lb-2026
Restart=always RestartSec=5 LimitNOFILE=65535
[Install] WantedBy=multi-user.target EOF
|
3. 创建 vllm-8002 服务
|
Bash sudo tee /etc/systemd/system/vllm-8002.service >/dev/null <<'EOF' [Unit] Description=vLLM Service 8002 After=network.target
[Service] User=hmtsgpu WorkingDirectory=/home/hmtsgpu Environment="PATH=/opt/venv/vllm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment="VLLM_SLEEP_WHEN_IDLE=1" Environment="VLLM_USE_DEEP_GEMM=0" Environment="VLLM_USE_FLASHINFER_MOE_FP16=1" Environment="VLLM_USE_FLASHINFER_SAMPLER=0" Environment="OMP_NUM_THREADS=4" Environment="VLLM_USE_MODELSCOPE=true" Environment="VLLM_API_KEY=sk-qwen-27b-lb-2026" Environment="NCCL_SOCKET_IFNAME=enp194s0f0" Environment="GLOO_SOCKET_IFNAME=enp194s0f0" Environment="VLLM_HOST_IP=10.255.254.44" Environment="CUDA_VISIBLE_DEVICES=4,5"
ExecStart=/opt/venv/vllm/bin/vllm serve /data/models/Qwen3.6-27B-AWQ \\ –trust-remote-code \\ –tensor-parallel-size 2 \\ –gpu-memory-utilization 0.80 \\ –max-model-len 262144 \\ –kv-cache-dtype fp8 \\ –disable-custom-all-reduce \\ –enforce-eager \\ –port 8002 \\ –host 10.255.254.44 \\ –distributed-executor-backend mp \\ –api-key sk-qwen-27b-lb-2026
Restart=always RestartSec=5 LimitNOFILE=65535
[Install] WantedBy=multi-user.target EOF
|
4. 创建 vllm-8003 服务
|
Bash sudo tee /etc/systemd/system/vllm-8003.service >/dev/null <<'EOF' [Unit] Description=vLLM Service 8003 After=network.target
[Service] User=hmtsgpu WorkingDirectory=/home/hmtsgpu Environment="PATH=/opt/venv/vllm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment="VLLM_SLEEP_WHEN_IDLE=1" Environment="VLLM_USE_DEEP_GEMM=0" Environment="VLLM_USE_FLASHINFER_MOE_FP16=1" Environment="VLLM_USE_FLASHINFER_SAMPLER=0" Environment="OMP_NUM_THREADS=4" Environment="VLLM_USE_MODELSCOPE=true" Environment="VLLM_API_KEY=sk-qwen-27b-lb-2026" Environment="NCCL_SOCKET_IFNAME=enp194s0f0" Environment="GLOO_SOCKET_IFNAME=enp194s0f0" Environment="VLLM_HOST_IP=10.255.254.44" Environment="CUDA_VISIBLE_DEVICES=6,7"
ExecStart=/opt/venv/vllm/bin/vllm serve /data/models/Qwen3.6-27B-AWQ \\ –trust-remote-code \\ –tensor-parallel-size 2 \\ –gpu-memory-utilization 0.80 \\ –max-model-len 262144 \\ –kv-cache-dtype fp8 \\ –disable-custom-all-reduce \\ –enforce-eager \\ –port 8003 \\ –host 10.255.254.44 \\ –distributed-executor-backend mp \\ –api-key sk-qwen-27b-lb-2026
Restart=always RestartSec=5 LimitNOFILE=65535
[Install] WantedBy=multi-user.target EOF
|
三、加载服务并设置开机自启
|
bash sudo systemctl daemon-reload sudo systemctl enable vllm-8000 sudo systemctl enable vllm-8001 sudo systemctl enable vllm-8002 sudo systemctl enable vllm-8003
|
四、一键启动全部 4 个服务
|
bas sudo systemctl start vllm-8000 sudo systemctl start vllm-8001 sudo systemctl start vllm-8002 sudo systemctl start vllm-8003 |
五、查看服务运行状态
|
bash sudo systemctl status vllm-8000 sudo systemctl status vllm-8001 sudo systemctl status vllm-8002 sudo systemctl status vllm-8003 |
六、无人值守核心能力说明
七、日常运维命令
|
bash # 查看单个服务状态 sudo systemctl status vllm-8000 # 重启单个服务 sudo systemctl restart vllm-8000 # 重启全部 4 个服务 sudo systemctl restart vllm-8000 vllm-8001 vllm-8002 vllm-8003 # 查看实时日志sudo journalctl -u vllm-8000 -f
|
网硕互联帮助中心




评论前必须登录!
注册