TensorRT

TensorRT 优化策略

1.低精度优化

2.kernel自动调优

3.算子融合

4.多流运行

5.显存优化

TensorRT 基本使用流程

TRT转换优化引擎(离线)→engine

        1.创建 Builder

        2.创建 Network

        3.使用 API 或 Parser 构建 Network

        4.优化网络

5.序列化和反序列化模型

TRT执行引擎(线上)

        6.传输计算数据(H2D)

        7.执行计算

        8.传输计算结果(D2H)

代码
问题

[W] [TRT] Using an engine plan file across different models of devices is not recommended and is likely to affect performance or even cause errors.

这个警告信息表示你在不同型号的设备上使用了同一个 engine plan 文件,这可能会影响性能甚至导致错误。

TensorRT engine plan 文件是针对特定的 GPU 型号优化生成的,包含了针对该 GPU 优化的网络执行代码。如果在不同型号的 GPU 上复用该文件,可能无法发挥各自 GPU 的优势,甚至可能导致执行报错。

建议的解决方案:

1. 为不同型号的 GPU 分别生成优化的 engine plan 文件。

2. 在生成 engine plan 时,指定通用的优化模式,生成可以跨设备复用的 plan 文件。例如:

python
builder.max_batch_size = 1
builder.max_workspace_size = common.GiB(1)
builder.fp16_mode = True
builder.int8_mode = True

3. 如果确实需要复用,可以在加载 plan 时设置自动校准参数,使运行时代码针对当前 GPU 进行再优化。例如:

python 
runtime.set_calibration_profile(profile)

        在C++中生成TensorRT引擎计划文件时,为了避免跨设备复用导致的性能问题,可以采取以下方法:

1. 根据当前系统的GPU型号,生成不同的引擎计划文件:

c++
if (device_type == kGPU) {
  if (device_id == kGPU_TitanV) {
    // 生成TitanV优化的计划 
  } else if (device_id == kGPU_Tesla_P100){
   // 生成Tesla P100优化的计划
  }
} 

2. 在创建引擎生成器时,指定通用优化模式:

c++
builder->setMaxBatchSize(1);
builder->setMaxWorkspaceSize(1 << 30);
builder->setFp16Mode(true);
builder->setInt8Mode(true);

3. 在运行时为特定GPU设置校准表来微调:

c++
runtime->setCalibrationProfile(profile);

4. 也可以在加载引擎计划时,为特定GPU类型设置优化配置:

c++
if (device_type == kGPU_Tesla_P100) {
  cudaGraphExecUpdateParams params = {0};
  params.optimization_profile = kSpeed;
  context->setCudaGraphExecUpdateParams(params);
}

总之,最佳实践是为特定型号的 GPU 专门生成优化的 plan,而不是直接跨设备复用,从而发挥各型号 GPU 的性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值