TensorRT-LLM性能基准测试指南

TensorRT-LLM性能基准测试指南

TensorRT-LLM TensorRT-LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and build TensorRT engines that contain state-of-the-art optimizations to perform inference efficiently on NVIDIA GPUs. TensorRT-LLM also contains components to create Python and C++ runtimes that execute those TensorRT engines. TensorRT-LLM 项目地址: https://gitcode.com/gh_mirrors/te/TensorRT-LLM

前言

TensorRT-LLM作为NVIDIA推出的高性能推理框架,为大型语言模型(LLM)提供了优化的推理解决方案。本文将详细介绍如何使用TensorRT-LLM内置的trtllm-bench工具进行性能基准测试,帮助开发者评估模型在不同硬件配置下的表现。

基准测试前的准备工作

在进行性能测试前,必须确保GPU处于最佳工作状态,以获得稳定可靠的测试结果。

GPU配置优化

  1. 启用持久化模式

    sudo nvidia-smi -pm 1
    

    该命令确保GPU驱动在无负载时仍保持运行状态,避免频繁初始化带来的性能波动。

  2. 电源管理设置

    • 首先查询最大功率限制:
      nvidia-smi -q -d POWER
      
    • 然后设置为最大功率限制:
      sudo nvidia-smi -pl <max_power_limit>
      
  3. 时钟频率管理

    sudo nvidia-smi -rgc
    

    让GPU根据工作负载自动调整时钟频率,避免手动锁定频率导致的热节流问题。

  4. Boost设置(可选)

    • 查询支持的boost级别:
      sudo nvidia-smi boost-slider -l
      
    • 启用最高boost级别:
      sudo nvidia-smi boost-slider --vboost <max_boost_slider>
      

基准测试工作流程

TensorRT-LLM的基准测试分为三个主要步骤:

  1. 准备测试数据集
  2. 构建优化引擎
  3. 执行性能测试

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数量,反映整体处理能力
  • 请求吞吐量:系统每秒能完成的请求数量,反映并发处理能力
  • 总延迟:处理所有请求的总时间

注意事项

  1. 已验证模型:目前官方已验证包括Llama-2、Falcon、GPT-J等系列模型
  2. 量化支持:当前基准测试工具支持FP8和NVFP4量化模式
  3. 性能波动:建议多次测试取平均值,确保结果稳定性
  4. 硬件限制:不同GPU型号的性能表现可能有显著差异

通过本指南,开发者可以全面了解TensorRT-LLM的性能基准测试方法,为模型部署和优化提供可靠的数据支持。

TensorRT-LLM TensorRT-LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and build TensorRT engines that contain state-of-the-art optimizations to perform inference efficiently on NVIDIA GPUs. TensorRT-LLM also contains components to create Python and C++ runtimes that execute those TensorRT engines. TensorRT-LLM 项目地址: https://gitcode.com/gh_mirrors/te/TensorRT-LLM

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚翔林Shannon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值