TensorRT-LLM性能基准测试指南
前言
TensorRT-LLM作为NVIDIA推出的高性能推理框架,为大型语言模型(LLM)提供了优化的推理解决方案。本文将详细介绍如何使用TensorRT-LLM内置的trtllm-bench
工具进行性能基准测试,帮助开发者评估模型在不同硬件配置下的表现。
基准测试前的准备工作
在进行性能测试前,必须确保GPU处于最佳工作状态,以获得稳定可靠的测试结果。
GPU配置优化
-
启用持久化模式:
sudo nvidia-smi -pm 1
该命令确保GPU驱动在无负载时仍保持运行状态,避免频繁初始化带来的性能波动。
-
电源管理设置:
- 首先查询最大功率限制:
nvidia-smi -q -d POWER
- 然后设置为最大功率限制:
sudo nvidia-smi -pl <max_power_limit>
- 首先查询最大功率限制:
-
时钟频率管理:
sudo nvidia-smi -rgc
让GPU根据工作负载自动调整时钟频率,避免手动锁定频率导致的热节流问题。
-
Boost设置(可选):
- 查询支持的boost级别:
sudo nvidia-smi boost-slider -l
- 启用最高boost级别:
sudo nvidia-smi boost-slider --vboost <max_boost_slider>
- 查询支持的boost级别:
基准测试工作流程
TensorRT-LLM的基准测试分为三个主要步骤:
- 准备测试数据集
- 构建优化引擎
- 执行性能测试
1. 准备测试数据集
测试数据集采用JSON格式,每行包含一个完整的请求信息。基本结构如下:
{
"task_id": "唯一请求ID",
"prompt": "输入文本(可选)",
"input_ids": [输入token ID列表],
"output_tokens": 输出token数量
}
TensorRT-LLM提供了便捷的数据集生成工具:
python benchmarks/cpp/prepare_dataset.py \
--stdout \
--tokenizer meta-llama/Llama-3.1-8B \
token-norm-dist \
--input-mean 128 \
--output-mean 128 \
--num-requests 1000 > dataset.txt
此命令生成1000个请求,输入和输出长度均为128个token的均匀分布数据集。
2. 构建优化引擎
使用trtllm-bench build
命令构建优化引擎:
trtllm-bench --model meta-llama/Llama-3.1-8B build \
--quantization FP8 \
--dataset dataset.txt
关键参数说明:
--quantization
: 指定量化模式(FP8/NVFP4)--dataset
: 提供数据集用于自动优化引擎参数--tp_size
/--pp_size
: 设置张量并行/流水线并行配置
3. 执行性能测试
吞吐量测试
trtllm-bench --model meta-llama/Llama-3.1-8B throughput \
--dataset dataset.txt \
--engine_dir /path/to/engine
测试结果将包含以下关键指标:
- Token吞吐量(tokens/sec)
- 请求吞吐量(req/sec)
- 总延迟(ms)
延迟测试
trtllm-bench --model meta-llama/Llama-3.1-8B latency \
--dataset dataset.txt \
--engine_dir /path/to/engine
高级配置选项
并行策略配置
TensorRT-LLM支持多种并行策略组合(TP x PP ≤ 8):
trtllm-bench --model meta-llama/Llama-3.1-8B build \
--quantization FP8 \
--tp_size 2 \
--pp_size 2
手动调优参数
对于高级用户,可以手动指定关键参数:
trtllm-bench --model meta-llama/Llama-3.1-8B build \
--quantization FP8 \
--max_seq_len 4096 \
--max_batch_size 1024 \
--max_num_tokens 2048
测试结果解读
典型的测试结果输出如下:
===========================================================
= PERFORMANCE OVERVIEW
===========================================================
Number of requests: 3000
Average Input Length (tokens): 128.0000
Average Output Length (tokens): 128.0000
Token Throughput (tokens/sec): 28390.4265
Request Throughput (req/sec): 221.8002
Total Latency (ms): 13525.6862
关键指标说明:
- Token吞吐量:系统每秒能处理的token数量,反映整体处理能力
- 请求吞吐量:系统每秒能完成的请求数量,反映并发处理能力
- 总延迟:处理所有请求的总时间
注意事项
- 已验证模型:目前官方已验证包括Llama-2、Falcon、GPT-J等系列模型
- 量化支持:当前基准测试工具支持FP8和NVFP4量化模式
- 性能波动:建议多次测试取平均值,确保结果稳定性
- 硬件限制:不同GPU型号的性能表现可能有显著差异
通过本指南,开发者可以全面了解TensorRT-LLM的性能基准测试方法,为模型部署和优化提供可靠的数据支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考