关于TensorRT-LLM的部署和使用(Qwen3)
本文介绍了TensorRT-LLM的完整部署流程及性能测试。部署步骤包括:1)拉取项目并构建Docker镜像;2)运行容器并安装Qwen模型依赖;3)测试环境可用性;4)配置并启动Qwen3-30B-A3B服务。性能测试显示,TensorRT-LLM在速度上优于Vllm,特别是在处理大量token时表现突出。需要注意的是,请求时必须指定"max_tokens"参数以避免默认值过小的问题。整体而言,
·
1. 部署流程
1)拉取项目
sudo apt-get update && sudo apt-get -y install git git-lfs
git lfs install
git clone <https://github.com/NVIDIA/TensorRT-LLM.git>
2)构建Docker镜像(大约50G,请注意存储空间)
cd TensorRT-LLM
git submodule update --init --recursive
git lfs pull
make -C docker release_build
3)运行容器
make -C docker release_run
4)选择模型并安装依赖(这里我们使用Qwen)
cd /examples/models/core/qwen
python -m pip install --upgrade pip
pip install --upgrade -r requirements.txt
5)安装完成后,测试可用性
测试TensorRT-LLM
python -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
测试cuda是否可用
python -c "import torch; print(torch.cuda.is_available())"
6)Qwen3部署
下载Qwen3
pip install modelscope
modelscope download --model Qwen/Qwen3-30B-A3B --local_dir ./dir/Qwen3-30B-A3B/
添加配置文件
cat >./extra-llm-api-config.yml <<EOF
use_cuda_graph: true
cuda_graph_padding_enabled: true
cuda_graph_batch_sizes:
- 1
- 2
- 4
- 8
- 16
- 32
- 64
- 128
- 256
- 384
print_iter_log: true
enable_attention_dp: true
EOF
7)启动服务
trtllm-serve \\
./dir/Qwen3-30B-A3B/ \\
--host localhost \\
--port 8000 \\
--backend pytorch \\
--max_batch_size 161 \\
--max_num_tokens 1160 \\
--tp_size 1 \\
--ep_size 1 \\
--pp_size 1 \\
--kv_cache_free_gpu_memory_fraction 0.8 \\
--extra_llm_api_options ./extra-llm-api-config.yml
8)测试服务(请求时请务必带上"max_tokens",否则默认值很小)
研究了好久都没有解决这个默认值的问题,如果有大佬能够解决请踢我一脚
curl <http://localhost:8000/v1/completions> \\
-H "Content-Type: application/json" \\
-d '{
"model": "Qwen3-30B-A3B/",
"prompt": "Please describe what is Qwen.",
"max_tokens": 8192,
"temperature": 0
}'
2. Evalscope速度压测
1) vLLM压测结果
# vLLM压测结果
{
"Time taken for tests (s)": 184.743,
"Number of concurrency": 1,
"Total requests": 8,
"Succeed requests": 8,
"Failed requests": 0,
"Throughput(average tokens/s)": 88.685,
"Average QPS": 0.043,
"Average latency (s)": 23.092,
"Average time to first token (s)": 0.088,
"Average time per output token (s)": 0.011,
"Average input tokens per request": 12800.25,
"Average output tokens per request": 2048.0,
"Average package latency (s)": 0.011,
"Average package per request": 2047.0,
"Expected number of requests": 8,
}
2) TensorRT-LLM压测结果
# TensorRT-LLM压测结果
{
"Time taken for tests (s)": 160.598,
"Number of concurrency": 1,
"Total requests": 8,
"Succeed requests": 8,
"Failed requests": 0,
"Throughput(average tokens/s)": 102.019,
"Average QPS": 0.05,
"Average latency (s)": 20.074,
"Average time to first token (s)": 0.12,
"Average time per output token (s)": 0.01,
"Average input tokens per request": 12800.25,
"Average output tokens per request": 2048.0,
"Average package latency (s)": 0.01,
"Average package per request": 2047.0,
"Expected number of requests": 8
}
性能对比
Vllm 与 TensorRT-LLM 性能对比概览
| 指标 | vLLM | TensorRT-LLM |
| 测试总时长 (s) | 184.743 | 160.598 |
| 并发数 | 1 | 1 |
| 总请求数 | 8 | 8 |
| 成功请求数 | 8 | 8 |
| 失败请求数 | 0 | 0 |
| 平均吞吐量 (tokens/s) | 88.685 | 102.019 |
| 平均 QPS | 0.043 | 0.05 |
| 平均延迟 (s) | 23.092 | 20.074 |
| 平均首个 Token 生成时间 (s) | 0.088 | 0.12 |
| 平均每输出 Token 时间 (s) | 0.011 | 0.01 |
| 平均每个请求输入 Token 数 | 12800.25 | 12800.25 |
| 平均每个请求输出 Token 数 | 2048 | 2048 |
| 平均包延迟 (s) | 0.011 | 0.01 |
| 平均每个请求包数 | 2047 | 2047 |
| 预期请求数 | 8 | 8 |
Prompt Tokens 吞吐量对比 (tokens/s)
| Prompt Tokens | vLLM | TensorRT-LLM |
| 1 | 97.51 | 111.2 |
| 6144 | 84.37 | 105.19 |
| 14336 | 86.54 | 97.35 |
| 30720 | 78.29 | 86.07 |
结论
整体体验下来,综合来看,TensorRT-LLM 在整体性能上优于 Vllm,特别是在 吞吐量 和 总请求延迟 方面具有显著优势,这对于处理大量并发请求和追求高效率的场景非常有利。虽然 Vllm 在生成首个 token 的时间上略快,但 TensorRT-LLM 在处理后续 token 和整体请求完成时间上表现更优。接下来探索一下Dynamo,很期待结合Dynamo的使用效果!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)