vLLM 与 TensorRT-LLM 部署选型指南
对比 vLLM 与 TensorRT-LLM 的环境依赖、服务接口和 NVIDIA 硬件范围:vLLM 文档要求 Linux 与 Python 3.10 至 3.13,并给出安装、启动和验证步骤。
选 vLLM 还是 TensorRT-LLM,先看系统与 GPU 是否满足基线、模型能否按当前执行后端加载,以及现有调用方需要哪种接口。不要根据引擎名称判断性能差异:先排除环境或模型路径不匹配的方案,再用相同任务比较启动、请求和资源占用。
选型时先按这个顺序筛
先做资格筛选,再进入安装和性能比较:
- 环境门槛:确认操作系统、Python 或容器运行环境,以及 NVIDIA GPU 是否符合所选引擎的当前文档。
- 模型门槛:确认检查点能由当前执行后端直接加载,不依赖已经移除的旧流程。
- 接口门槛:确认现有客户端需要的服务地址和请求路径,避免把启动命令与验证接口混为一谈。
- 验证门槛:固定模型、数据、输出限制和并发条件,再比较成功情况、延迟、吞吐与显存占用。
两条路径都通过这些检查后,才有可比较的基础;否则应先解决环境或模型兼容问题,而不是直接替换启动参数。
直接服务路径:vLLM 的准备、安装与启动
按 vLLM 的 快速入门,前置环境是 Linux 与 Python 3.10 至 3.13。文档使用 Python 3.12 新环境安装,--torch-backend=auto 会检查已安装的 CUDA driver 并选择对应的 PyTorch index;启动时在 vllm serve 后指定模型名。服务默认监听 http://localhost:8000,地址由 --host 和 --port 调整;当前一个服务进程托管一个模型,GET /v1/models 用于列出模型。
先创建并激活独立环境,再安装:
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=auto
使用文档示例模型启动:
vllm serve Qwen/Qwen2.5-1.5B-Instruct
服务启动后,在另一个终端验证模型列表:
curl http://localhost:8000/v1/models
安装前还应核对 GPU 安装说明:预编译包包含 C++ 和 CUDA 12.9 二进制文件,NVIDIA GPU 的 compute capability 要达到 7.5 或更高;B200、GB200 至少需要 CUDA 12.8。如果现有 CUDA 版本不同,或需要沿用已有 PyTorch 安装,则应从源码构建,并准备 GCC/G++ 11.3 或更高版本。
直接服务路径:TensorRT-LLM 的硬件、容器与启动
先对照 TensorRT-LLM 支持硬件文档:当前列出的设备包括 Blackwell 的 B200、GB200、B300、GB300、DGX Spark,Hopper 的 H100、H200、GH200,Ada Lovelace 的 L20、L40/L40S,以及 Ampere 的 A100。模型或目标硬件不在清单中时,应先查当前项目文档,不要直接套用安装参数。
现有流程也要按当前状态处理。后端迁移说明 明确指出,TensorRT engine backend 已被移除,PyTorch 现在是唯一执行后端;trtllm-build、trtllm-refit 和 trtllm-prune 也已移除,HuggingFace checkpoints 可直接加载,不再需要 engine-build 步骤。
预编译 release container 的运行方式见 官方安装指南。将 YOUR_VALUE 替换成该页面当前给出的 release tag,并按原命令暴露端口:
docker run --rm -it --ipc host --gpus all \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-p 8000:8000 \
nvcr.io/nvidia/tensorrt-llm/release:YOUR_VALUE
服务启动使用 trtllm-serve。按照 TensorRT-LLM 快速入门,它可启动 OpenAI-compatible server,启动后可访问 /v1/chat/completions;文档示例使用端口 8000:
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json"
具体模型启动参数应使用快速入门中与目标模型对应的完整命令,不要把上一条服务路径的模型名或参数直接复制过来。
常见出错点
- 把安装成功当成服务可用:环境或容器启动后,还要分别执行模型枚举或对话请求,确认所选路径的接口能够返回结果。
- 混用新旧流程:旧 runbook 若仍要求已被移除的 engine build,应按当前后端迁移说明更新。
- 保留占位符:代码中的
YOUR_VALUE不是实际镜像标签,直接执行前必须替换。 - 忽略端口占用:在同一主机并行验证两条路径时,先检查监听地址与端口,再决定是否调整服务配置。
- 跨版本复制参数:容器标签、Python 环境、CUDA 环境和启动参数应作为一组配置记录,避免只更新其中一部分。
用同一方法完成最后比较
先固定模型检查点、tokenizer、精度或量化方式、输入集合、输出长度限制、并发条件和 GPU 数量,再记录软件版本、驱动信息、容器标签与完整启动命令。随后分别检查启动是否成功、有效请求是否成功、是否出现 OOM、延迟分布、token 吞吐和峰值显存,而不是只比较启动时间。
这些官方文档没有提供可跨模型、跨硬件直接套用的统一性能结论,因此本文不宣布哪条路径更快。本文未执行这些命令,也不采集性能数据;以上步骤按文中链接的官方文档整理,使用前请对照当前版本复核。