生产服务
把 快速上手 的单进程演示收成可给多人用的服务:绑端口、切显存、多卡并行、认清鉴权边界。参数名以 vllm serve --help 为准。
推荐启动骨架
生产环境用 systemd / k8s 管进程,不要依赖一个 SSH 终端。容器见 Docker。
张量并行:--tensor-parallel-size
单卡放不下时,把一层里的矩阵切到多张 GPU(Megatron 风格张量并行)。常见写法:
-tp 是同一标志的短形式(若当前 CLI 仍提供)。约定:
- 单机多卡:
tp常等于本机 GPU 数(或你愿意划给该副本的卡数)。 - 卡必须同构、NVLink / PCIe 拓扑要能跑 NCCL。 用
CUDA_VISIBLE_DEVICES=0,1选出卡。 - 还有 流水线并行
--pipeline-parallel-size、数据并行等。多机常用 Ray 或文档中的--distributed-executor-backend。本课先掌握tp。
小模型(0.5B)不必 tp=2,那是为了演示语法。70B 满精度才需要按显存算卡数。
前缀缓存与吞吐旋钮
长系统提示重复出现时,可打开前缀缓存(标志多为 --enable-prefix-caching,以当前文档为准),避免重复计算相同前缀的 KV。
观测:
- 日志里的 KV 使用率、running / waiting 队列
nvidia-smi的利用率与显存- 客户端 P50/P99 延迟与 tokens/s
连续批处理会让「单请求延迟」和「系统吞吐」不完全同向:队列越长,GPU 越满,队头等待也可能变长。用 --max-num-seqs 做限流。
鉴权:--api-key 不够当防火墙
--api-key / VLLM_API_KEY 只覆盖文档列出的路径前缀(通常包括 /v1)。同一 HTTP 服务器上可能仍有未鉴权或鉴权范围不同的端点。 官方明确警告:不要只靠这一项保护 vLLM。
建议:
- 默认绑内网或 localhost;公网前加 反向代理(TLS、IP 允许列表、独立鉴权)。
- 不要把 Hub Token、
--api-key写进镜像层或 Git。 --host 0.0.0.0只表示听所有网卡,不等于「已经安全」。
健康检查与客户端
负载均衡可打 GET /v1/models 或文档中的 health 路径(名称以当前版本为准)。应用侧用 OpenAI SDK,超时要覆盖 首 token 时间(排队 + 预填充),不要只按云厂商 30s 抄。
多副本时:每个进程一块(或一组 tp)GPU;前面用 nginx / 云 LB。不要多个无协调的进程抢同一张卡。