资讯动态

vllm企业私有化大模型部署实战指南

发布时间:2026/10/9 10:18:26 来源:尧图企业网站定制
原文vllm企业私有化大模型部署实战指南在企业内网物理断网、禁止外网访问的安全管控下无法在线拉取镜像、模型权重及依赖常规云端部署方案不适用。为了满足智能问答、知识库RAG、本地推理等业务对稳定性、低延迟、高并发和数据私密性的要求本次基于企业GPU服务器集群采用vLLM推理框架完成多模型统一部署优化涵盖DeepSeek-V4-Flash、Qwen3-Embedding-8B等适配不同业务场景。全程采用Docker容器化离线部署规避内网依赖缺失与环境兼容问题并结合FP8 KV缓存、多卡张量并行专家并行、CUDA Graph编译加速、MTP推测解码等vLLM高阶优化策略提升GPU利用率与推理吞吐。部署完成后通过vLLM官方压测工具进行多并发压力测试采集TPS、首token延迟、单token生成延迟、QPS、错误率等指标完成性能校验与参数调优最终搭建出一套可复用、高稳定、高性能的企业内网离线大模型服务架构。本文作为个人实战的完整记录覆盖了从环境准备、容器部署、参数调优到压力测试的全流程实战细节为同类企业私有化大模型落地提供标准化参考。离线环境前置准备离线Docker镜像准备内网无外网权限无法在线pull镜像需提前在外网机器拉取vLLM官方镜像并打包迁移外网拉取镜像docker pull vllm/vllm-openai:latest镜像打包导出docker save vllm/vllm-openai:latest -o vllm-openai-latest.tar将tar包迁移至内网服务器执行导入docker load -i vllm-openai-latest.tar模型权重与分词器文件准备提前下载完整模型权重、分词器配置文件保证文件完整无缺失统一存放至内网服务器固定目录挂载至容器使用全程离线加载必备模型包DeepSeek-V4-Flash-0731、Qwen3-Embedding-8B、Qwen3.5-9B包含文件模型权重文件、vocab词典、tokenizer配置、模型配置、推理脚本等全套文件内网存放路径统一防至/path/xxx目录保证目录权限可读后续容器只读挂载端口与目录规划准备提前规划端口与存储目录避免端口冲突、目录权限不足问题端口规划8000端口DeepSeek主模型、8001端口向量模型、8003端口Qwen3.5-9B模型提前确认端口未被占用目录规划提前创建模型挂载目录、压测结果保存目录/path/model配置读写权限服务配置服务器开放网卡访问权限支持内网其他机器调用模型API接口部署Deepseek-v4-flashsudo docker rm -f vllm-deepseek 2/dev/null sudo docker run -d \ --name vllm-deepseek \ --gpus device0,1,2,3 \ --ipchost \ -v /path/deepseek-ai/DeepSeek-V4-Flash-0731:/model/DeepSeek-V4-Flash-0731:ro \ -e CUDA_VISIBLE_DEVICES0,1,2,3 \ -e TRANSFORMERS_OFFLINE1 \ -p 8000:8000 \ vllm/vllm-openai:latest \ /model/DeepSeek-V4-Flash-0731 \ --served-model-name deepseek-v4-flash \ --host 0.0.0.0 \ --port 8000 \ --kv-cache-dtype fp8 \ --tensor-parallel-size 4 \ --max-model-len 250000 \ --max-num-seqs 50 \ --enable-expert-parallel \ --gpu-memory-utilization 0.95 \ --enable-auto-tool-choice \ --tool-call-parser deepseek_v4 \ --tokenizer-mode deepseek_v4 \ --reasoning-parser deepseek_v4 \ --trust-remote-code自动清理旧容器在 4 卡 GPU 上用 vLLM 部署 DeepSeek-V4-Flash MoE 大模型开启 FP8 KV 缓存、张量并行 专家并行支持 25 万长上下文与工具调用对外暴露 OpenAI 兼容 API 在 8000 端口离线不联网。容器管理参数参数作用sudo docker rm -f vllm-deepseek强制删除旧容器无论运行或停止2/dev/null屏蔽容器不存在的报错信息前面删除成功后才继续执行 docker rundocker run -d后台守护进程方式运行Docker 容器配置参数参数含义--name vllm-deepseek容器命名为 vllm-deepseek--gpus device0,1,2,3分配 GPU 0/1/2/3 共 4 张卡--ipchost共享宿主机 IPC 命名空间多卡通信必需-v ...:/model/...:ro挂载模型文件进容器ro 只读-e CUDA_VISIBLE_DEVICES0,1,2,3容器内仅可见这 4 张 GPU-e TRANSFORMERS_OFFLINE1transformers 离线模式不联网拉配置-p 8000:8000宿主机 8000 端口映射到容器 8000vllm/vllm-openai:latest使用的镜像vLLM OpenAI 兼容服务vLLM 推理参数参数含义/model/DeepSeek-V4-Flash-0731指定模型路径--served-model-name deepseek-v4-flashAPI 调用时的模型名称--host 0.0.0.0 --port 8000监听所有网卡、端口 8000--kv-cache-dtype fp8KV 缓存用 FP8 精度省显存提吞吐--tensor-parallel-size 4张量并行度 4权重拆分到 4 卡--max-model-len 250000最大上下文窗口 25 万 token--max-num-seqs 50最多并发 50 个请求序列--enable-expert-parallel专家并行优化 MoE 模型显存与负载--gpu-memory-utilization 0.95显存利用率上限 95%--enable-auto-tool-choice开启自动工具调用--tool-call-parser deepseek_v4使用 DeepSeek V4 工具调用解析器--tokenizer-mode deepseek_v4使用 DeepSeek V4 分词器模式--reasoning-parser deepseek_v4使用 DeepSeek V4 推理解析器--trust-remote-code允许执行模型仓库自定义代码慎用参数分类汇总类别涉及参数核心作用容器生命周期rm -f / -d / --name清理旧容器、后台运行、命名硬件与资源--gpus / -e CUDA_VISIBLE_DEVICES / --ipc分配 4 卡 GPU 并保证通信模型与数据-v / TRANSFORMERS_OFFLINE / 模型路径挂载模型、离线加载网络端口-p 8000:8000 / --host / --port对外暴露 OpenAI API并行策略--tensor-parallel-size 4 / --enable-expert-parallel张量并行 专家并行显存与性能--kv-cache-dtype fp8 / --gpu-memory-utilization省显存、高吞吐能力开关--enable-auto-tool-choice / 各 parser工具调用与思考链解析效果测试curl http://1x.x.x.x:8000/v1/chat/completions -H Content-Type: application/json -d {model:deepseek-v4-flash, messages:[{role:user, content: 你好介绍一下你自己}]}部署Deepseek-v4-flash性能优化sudo docker rm -f vllm-deepseek 2/dev/null sudo docker run -d \ --name vllm-deepseek \ --gpus device0,1,2,3 \ --ipchost \ -v /path/DeepSeek-V4-Flash:/model/DeepSeek-V4-Flash:ro \ -e CUDA_VISIBLE_DEVICES0,1,2,3 \ -e TRANSFORMERS_OFFLINE1 \ -p 8000:8000 \ vllm/vllm-openai:latest \ /model/DeepSeek-V4-Flash \ --served-model-name deepseek-v4-flash \ --host 0.0.0.0 \ --port 8000 \ --kv-cache-dtype fp8 \ --tensor-parallel-size 4 \ --max-model-len 250000 \ --max-num-seqs 50 \ --enable-expert-parallel \ --gpu-memory-utilization 0.95 \ --compilation-config {cudagraph_mode:FULL_AND_PIECEWISE,custom_ops:[all]} \ --enable-auto-tool-choice \ --tool-call-parser deepseek_v4 \ --tokenizer-mode deepseek_v4 \ --reasoning-parser deepseek_v4 \ --trust-remote-code \ --speculative_config {method:mtp,num_speculative_tokens:1}参数解释参数分类参数说明前置清理docker rm -f vllm-deepseek 2/dev/null强制删除旧容器2/dev/null屏蔽 “容器不存在” 的报错前面成功才继续执行后面Docker 容器基础docker run -d-d 后台守护模式运行容器--name vllm-deepseek容器名称--gpus device0,1,2,3分配 GPU 0,1,2,3 共 4 张卡给容器--ipchost共享宿主机 IPC 命名空间多卡张量并行必需GPU 之间高速通信-v /path/DeepSeek-V4-Flash:/model/DeepSeek-V4-Flash:ro挂载宿主机 NVMe 盘模型目录ro 只读保护模型文件不被意外修改-e CUDA_VISIBLE_DEVICES0,1,2,3环境变量容器内仅能看到 0~3 号 GPU-e TRANSFORMERS_OFFLINE1HuggingFace 离线模式不会联网拉取模型配置 / 分词器-p 8000:8000端口映射宿主机 8000 端口转发容器 8000外部访问 APIvllm/vllm-openai:latest使用 vLLM 官方 OpenAI 兼容镜像vLLM 模型基础/model/DeepSeek-V4-Flash容器内模型文件路径--served-model-name deepseek-v4-flashAPI 调用时model参数填写的模型名称--host 0.0.0.0监听所有网卡 IP允许外部服务器访问--port 8000服务监听端口显存 并行策略--kv-cache-dtype fp8KV 缓存使用 FP8 精度节省大量显存--tensor-parallel-size 4张量并行度 4模型权重拆分到 4 张 GPU--max-model-len 250000最大上下文窗口250000 token--max-num-seqs 50最多同时并发处理 50 条请求序列--enable-expert-parallelMoE 模型专家并行把不同专家层分散到多张 GPU均衡负载--gpu-memory-utilization 0.95GPU 显存利用率上限 95%尽可能利用显存预留少量余量性能加速新增--compilation-config {cudagraph_mode:FULL_AND_PIECEWISE,custom_ops:[all]}CUDA Graph 编译加速减少 CPU 调度开销FULL_AND_PIECEWISE 自动切换完整 / 分段 graph启用全部自定义算子提升吞吐--speculative_config {method:mtp,num_speculative_tokens:1}MTP 推测解码DeepSeek V4 Flash 专属每步预预测 1 个 token提升生成速度工具调用 安全--enable-auto-tool-choice开启自动工具调用能力--tool-call-parser deepseek_v4DeepSeek V4 专用工具调用解析器--tokenizer-mode deepseek_v4DeepSeek V4 专用分词器模式--reasoning-parser deepseek_v4DeepSeek V4 推理解析器解析思考链输出--trust-remote-code允许加载模型仓库自定义代码离线部署常用公网环境存在安全风险压力测试docker exec -it vllm-deepseek vllm bench serve \ --backend openai \ --base-url http://1x.x.x.x:8000 \ --model /model/Deepseek-V4-Flash-0731 \ --tokenizer /model/Deepseek-V4-Flash-0731 \ --endpoint /v1/chat/completions \ --dataset-name random \ --random-input-len 1024 \ --random-output-len 512 \ --num-prompts 40 \ --max-concurrency 8 \ --request-rate inf \ --save-result \ --result-dir /path/AI**在 vLLM 的容器里对在线 Deepseek-V4-Flash 模型服务做并发压测。构造 40 条请求每条输入 1024 token、输出 512 token最大并发 8尽可能持续发请求最后把吞吐、延迟等性能指标保存到磁盘。vllm bench serve 是 vLLM 自带的服务压测工具用来对一个已经启动好的 OpenAI 兼容接口做并发性能测试统计TPS每秒 token 吞吐首 token 延迟、后续 token 延迟并发下的 QPS、错误率等指标参数解释参数含义--backend openai被测服务是 OpenAI 协议兼容接口vLLM 启动的服务默认就是这个协议--base-url http://1x.x.x.x:8000被测大模型服务地址8000 是 vLLM 默认端口--model /model/Deepseek-V4-Flash-0731指定模型名称 / 路径--tokenizer /model/Deepseek-V4-Flash-0731指定分词器路径--endpoint /v1/chat/completions使用 chat 对话接口做压测不是普通 completions--dataset-name random不使用真实数据集自动生成随机 token 作为输入 prompt方便纯压力测试--random-input-len 1024每个请求输入上下文固定 1024 tokens--random-output-len 512要求模型每个请求输出 512 tokens--num-prompts 40总共发送 40 个请求 完成本次压测--max-concurrency 8最大并发请求数同时最多 8 个请求打进去--request-rate inf请求速率无限大只要并发没满就立刻发下一个尽可能打满 max-concurrency8--save-result压测结束保存性能报告--result-dir /path/model性能报告保存到这个目录示例控制台打印样例-------------- Serving Benchmark Result -------------- Successful requests: 40 Failed requests: 0 Request throughput (req/s): 2.1 Output token throughput (tok/s): 1080 Total token throughput (tok/s): 3250 ------------ Time To First Token ------------ Mean TTFT (ms): 142 Median TTFT (ms): 136 P99 TTFT (ms): 215 ------------ Time Per Output Token ----------- Mean TPOT (ms): 0.89 Median TPOT (ms): 0.87 P99 TPOT (ms): 1.12向量化模型部署Qwen3-Embedding-8B 部署sudo docker rm -f vllm-qwenembedding 2/dev/null sudo docker run -d \ --name vllm-qwenembedding \ --gpus device5 \ --ipchost \ -v /path/Qwen3-Embedding-8B:/model/Qwen3-Embedding-8B:ro \ -e VLLM_ENABLE_CUDA_COMPATIBILITY1 \ -p 8001:8000 \ --restart unless-stopped \ vllm/vllm-openai:latest \ /model/Qwen3-Embedding-8B \ --served-model-name qwen3-embedding-8B \ --host 0.0.0.0 \ --port 8000 \ --runner pooling \ --trust-remote-code \ --max-model-len 8192 \ --max-num-seqs 100 \ --gpu-memory-utilization 0.5 \ --tensor-parallel-size 1 \ --enforce-eager在 5 号单张 GPU 上用 vLLM 部署通义千问 Qwen3-Embedding-8B 向量嵌入模型对外提供 OpenAI 兼容的 Embedding 向量接口端口宿主机 8001用于 RAG 知识库的文本向量化。参数参数值作用说明docker rm -fvllm-qwenembedding 2/dev/null强制删除旧同名容器屏蔽容器不存在时的报错docker run -d-后台守护模式运行容器--namevllm-qwenembedding容器名称--gpusdevice5仅使用 GPU 编号 5单卡部署不和大模型抢占其他显卡--ipchost-共享宿主机 IPC 命名空间满足 vLLM 进程通信需求-v/path/Qwen3-Embedding-8B:/model/Qwen3-Embedding-8B:ro挂载 NVMe 盘中的模型ro只读保护模型文件-eVLLM_ENABLE_CUDA_COMPATIBILITY1开启 CUDA 兼容模式规避算子编译、驱动版本兼容报错-p8001:8000端口映射宿主机 8001 → 容器内部 8000与 8000 端口的 DeepSeek 服务隔离--restartunless-stopped自动重启策略除非手动停止否则崩溃 / 服务器重启自动拉起服务镜像vllm/vllm-openai:latestvLLM 官方镜像提供 OpenAI 兼容 API模型路径/model/Qwen3-Embedding-8B容器内模型存放路径--served-model-nameqwen3-embedding-8BAPI 调用时请求体中model参数填写的模型名称--host0.0.0.0监听所有网卡允许外部机器访问--port8000容器内部监听端口--runnerpooling核心参数指定为 Embedding 向量模型启用池化输出向量不是文本生成--trust-remote-code-允许加载模型仓库自定义代码Embedding 模型必需--max-model-len8192输入文本最大 token 长度上限--max-num-seqs100最多同时并发处理 100 条向量化请求--gpu-memory-utilization0.5GPU 显存最大占用上限 50%预留显存给其他任务--tensor-parallel-size1张量并行度 1单卡运行不拆分模型权重--enforce-eager-强制 PyTorch eager 执行模式关闭 CUDA Graph提升向量服务稳定性Qwen3.5-9B 部署sudo docker rm -f vllm-qwen3_5 2/dev/null sudo docker run -d \ --name vllm-qwen3_5 \ --gpus device6 \ --ipchost \ -v /path/Qwen3.5-9B:/model/Qwen3.5-9B:ro \ -e VLLM_ENABLE_CUDA_COMPATIBILITY1 \ -p 8003:8000 \ --restart unless-stopped \ vllm/vllm-openai:latest \ /model/Qwen3.5-9B \ --served-model-name qwen3.5-9B \ --host 0.0.0.0 \ --port 8000 \ --tensor-parallel-size 1 \ --data-parallel-size 1 \ --max-model-len 200000 \ --max-num-seqs 50 \ --gpu-memory-utilization 0.6 \ --enable-prefix-caching \ --trust-remote-code在 6 号单卡 GPU 上使用 vLLM 部署 Qwen3.5-9B 大语言模型对外提供 OpenAI 兼容对话 API宿主机访问端口 8003开启前缀缓存加速长上下文场景作为独立对话模型服务。参数分类参数说明Docker 容器基础--name vllm-qwen3_5容器名称vllm-qwen3_5--gpus device6绑定 GPU 编号 6单卡独立部署和其他服务资源隔离--ipchost共享宿主机 IPC 命名空间保障 vLLM 进程通信-v /path/Qwen3.5-9B:/model/Qwen3.5-9B:ro挂载 NVMe 盘模型目录到容器ro只读保护模型文件-e VLLM_ENABLE_CUDA_COMPATIBILITY1开启 CUDA 兼容模式规避算子编译报错-p 8003:8000端口映射宿主机 8003 → 容器内 8000独立端口避免冲突--restart unless-stopped容器自动重启策略除非手动停止否则自动恢复vllm/vllm-openai:latest基础镜像vLLM 官方 OpenAI 兼容接口镜像vLLM 模型与 API/model/Qwen3.5-9B容器内模型加载路径--served-model-name qwen3.5-9BAPI 调用时使用的模型名称请求 body 的 model 字段填此值--host 0.0.0.0监听所有网卡允许外部机器访问服务--port 8000容器内部服务监听端口并行策略--tensor-parallel-size 1张量并行度 1单卡运行不拆分模型权重--data-parallel-size 1数据并行度 1不启动多副本负载分发上下文 并发--max-model-len 200000最大上下文窗口200000 token--max-num-seqs 50最多同时并发处理 50 条对话请求显存 加速--gpu-memory-utilization 0.6GPU 显存使用率上限 60%预留显存余量防止 OOM--enable-prefix-caching前缀缓存相同上下文前缀复用 KV 缓存RAG / 多轮对话加速安全选项--trust-remote-code允许加载模型仓库内自定义分词器代码离线部署使用

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑