ARTICLE · 1077186
本地大模型部署指南- vLLM(含源码)
面向 Linux/NVIDIA GPU 的高吞吐推理服务,提供连续批处理与 OpenAI 兼容 API。
推荐环境:Ubuntu/Linux + NVIDIA GPU;Windows 建议 WSL2 或容器化 Linux
模型格式:Hugging Face Transformers 模型、量化模型及 vLLM 支持的格式
示例接口:http://127.0.0.1:8000/v1/chat/completions
示例模型:Qwen/Qwen3-8B
安全提示:开发环境先绑定 127.0.0.1。生产环境不要将未鉴权服务直接暴露到公网,应先配置 TLS、认证、限流与访问审计。
一、部署前先确认这几件事
先明确使用目标:个人离线问答、桌面演示、内网 API,还是高并发生产服务。框架选择要同时考虑硬件、模型格式、并发需求与运维能力。
重要边界:本文给出部署流程,不代表当前机器已经安装或运行了模型。部署当天仍需重新核对框架版本、GPU 兼容性和模型许可证。
二、安装与启动
Windows 11 路径
Ubuntu/Linux + NVIDIA GPU 路径
版本提示:GPU 推理框架会受到 Python、PyTorch、CUDA、NVIDIA 驱动和模型架构的共同影响。升级前应在隔离环境验证,并保留可回滚版本。
启动服务
vllm serve Qwen/Qwen3-8B --host 127.0.0.1 --port 8000 --dtype auto --gpu-memory-utilization 0.90
出现监听地址或模型加载完成日志后,还要继续执行下一节的模型列表检查和对话请求,不能只看进程是否启动。
三、接口验证与 Python 调用
请求流程:业务程序发起 HTTP 请求 -> 推理服务排队与调度 -> 模型加载权重并推理 -> 服务返回 JSON 或流式响应。生产环境应把公网入口、TLS、认证和限流交给网关,模型服务本身仅监听私网或回环地址。
先做健康检查或模型发现
curl http://127.0.0.1:8000/v1/models
预期结果是能列出已加载模型,或收到与框架文档一致的健康响应。若此步骤失败,先排查端口、服务进程、监听地址和防火墙。
最小 Python 客户端
下面仅使用 Python 标准库。启动服务后,将 `model` 字段替换为服务实际暴露的模型标识;业务代码还需要补充超时、重试边界、请求日志和敏感信息处理。
from __future__ import annotationsimport jsonfrom urllib.request import Request, urlopenurl = "http://127.0.0.1:8000/v1/chat/completions"payload = { "model": "Qwen/Qwen3-8B", "messages": [{"role": "user", "content": "请用一句话说明本地部署的意义。"}], "temperature": 0.2}request = Request( url, data=json.dumps(payload).encode("utf-8"), headers={"Content-Type": "application/json"}, method="POST",)with urlopen(request, timeout=60) as response: result = json.loads(response.read().decode("utf-8"))print(result["choices"][0]["message"]["content"])
四、生产化部署建议
可用性:使用进程托管和健康检查,观察存活、就绪、重启次数与模型加载时长。
性能:设置连接/读取超时、请求大小上限和并发边界,监控首 token 延迟、tokens/s、P50/P95 与队列长度。
资源:限制 CPU、内存、显存和磁盘;持续观察 GPU 利用率、显存、KV Cache 与磁盘余量。
安全:模型服务仅私网监听或置于网关保护之后;审计认证失败、限流命中和异常请求。
Linux systemd 服务模板
[Unit]Description=vLLM local LLM serviceAfter=network-online.target[Service]User=llmWorkingDirectory=/opt/llmEnvironment=HOME=/var/lib/llmExecStart=/bin/bash -lc 'vllm serve Qwen/Qwen3-8B --host 127.0.0.1 --port 8000 --dtype auto --gpu-memory-utilization 0.90'Restart=on-failureRestartSec=5[Install]WantedBy=multi-user.target
模板说明:这是结构示例,不应原样直接用于生产。必须替换实际的虚拟环境或二进制绝对路径、模型目录、用户权限、日志路径、环境变量和网关策略。
五、常见问题排查
常见原因:服务只监听回环地址、进程未启动,或防火墙阻断
建议动作:先在服务主机执行健康检查;确认监听地址、入站规则和反向代理配置。
常见原因:模型首次加载、CUDA 内核编译或磁盘缓存尚未就绪
建议动作:预热一条短请求;把模型放在 SSD;观察显存和磁盘占用。
常见原因:模型、KV Cache、上下文长度和并发总量超过显存
建议动作:换小模型或量化版本;降低上下文/并发;调整 GPU 内存参数。
常见原因:网关或服务启用了鉴权,但客户端未提供正确密钥
建议动作:检查反向代理与服务端鉴权策略;从环境变量读取密钥,不要写入代码。
常见原因:网络、代理、磁盘空间或模型仓库权限问题
建议动作:核对网络与代理;预留足够磁盘;先用浏览器或 CLI 验证模型仓库访问。
常见原因:模型模板、编码或客户端请求体不一致
建议动作:使用 UTF-8 JSON;选择明确支持中文的 instruct/chat 模型;检查 chat template。
常见原因:驱动、CUDA、PyTorch wheel 或 GPU 架构不匹配
建议动作:按 vLLM 官方兼容矩阵重建环境;不要混用系统 PyTorch 和旧虚拟环境。
六、官方资料
部署当天请再次核对官方发布版本、安装方式、兼容矩阵和模型许可。不要把本文示例中的版本或模型名视为永久不变。