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的使用效果!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐