广告位 · header_banner

用 vLLM 自托管一个生产级推理服务的完整流程

为什么选 vLLM

自托管 LLM 的推理框架不止一个,但到了 2026 年,vLLM 已经成为生产环境的默认选择。本篇带你从零搭起一个支持 OpenAI 兼容 API、能跑 7B-70B 模型的生产级推理服务。

硬件与系统前置

  • GPU:A100 40/80GB 单卡即可跑 7B/13B;70B 建议 H100 80GB 或同代 2-4 卡。
  • 驱动:CUDA 12.x + NVIDIA Driver 555+。
  • 系统:Ubuntu 22.04 LTS(社区资源最齐)。
  • 硬盘:NVMe SSD,建议模型权重单盘 ≥ 模型大小 × 1.5。

第一步:装 Docker + NVIDIA Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
  sudo sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

第二步:拉 vLLM 官方镜像 + 跑一个最小服务

docker run --runtime nvidia --gpus all \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -p 8000:8000 \
  --ipc=host \
  vllm/vllm-openai:latest \
  --model Qwen/Qwen2.5-7B-Instruct \
  --served-model-name qwen2.5-7b \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.92

首次启动会拉权重(约 15GB),准备好后访问 http://localhost:8000/v1/models 应该能看到模型。

第三步:性能调优关键参数

  • --tensor-parallel-size N:多卡并行(70B 模型通常要 2 卡 H100)。
  • --gpu-memory-utilization:0.85-0.95 之间,看其他进程怎么用显存。
  • --max-num-seqs:并发请求上限,越高吞吐越大但单请求延迟略涨。
  • --enable-prefix-caching:prompt cache 开起来,重复 prefix 直接复用 KV。
  • --dtype bfloat16:默认即可,省显存。

第四步:把它当成 OpenAI 后端

vLLM 自带 OpenAI 兼容 API。任何使用 OpenAI SDK 的客户端只要把 base_url 改成 http://your-host:8000/v1,api_key 随便填,就能用。用 LangChain、LlamaIndex、CrewAI 的项目几行代码就能切到自托管。

第五步:生产化(监控 / 自动扩缩 / 灰度)

  • 监控:接 Prometheus + Grafana,看 vllm:gpu_cache_usage_percvllm:request_success_totalvllm:e2e_request_latency_seconds_bucket 三个关键指标。
  • 灰度:vLLM 支持一份服务多个 model,把”生产模型”和”新版模型”挂在同端口不同 model name 上,客户端按比例分流。
  • 扩缩:用 K8s 自定义指标 vllm:num_requests_waiting 自动扩 pod;非 K8s 场景可以前置 LiteLLM 做路由。
  • 日志:所有请求带 trace_id,方便问”为什么这条回复慢”。

第六步:避开常见坑

  • 多租户混跑要小心:同一张卡跑 2 个 vLLM 实例会争 KV cache,建议用 MIG 或多卡拆分。
  • 长上下文 ≠ 内存无限:128K 窗口模型在 80GB 卡上只能跑并发 1,要看清。
  • 重启慢不是 bug:权重从磁盘加载需要 2-5 分钟,配合 --load-format dummy 测试启动链路。

vLLM 不是最花哨的框架,但它是 2026 年平衡工程友好度和性能的最优解之一。搭一遍之后,你对”AI 系统部署”这门手艺的理解会上一个台阶。

广告位 · footer_banner
广告位 · sidebar_rect