Skip to content

AI-Infer-Acc-v0.1.0

Latest

Choose a tag to compare

@libingwei libingwei released this 08 Aug 16:05
· 22 commits to main since this release

实现基础功能

引擎转换

使用 onnx_to_trt 程序将 ONNX 模型转换为不同精度的 TensorRT 引擎。

# 用法: ./bin/onnx_to_trt <输入ONNX路径> <输出文件名前缀> <精度>

# 生成 FP32 引擎 (models/resnet18.trt)
./bin/onnx_to_trt models/resnet18.onnx models/resnet18 fp32

# 生成 FP16 引擎 (models/resnet18_fp16.trt)
./bin/onnx_to_trt models/resnet18.onnx models/resnet18 fp16

推理与基准测试

使用 trt_inference 程序加载引擎进行推理,并进行性能测试。

# 用法: ./bin/trt_inference <引擎路径> [批处理大小]

# 测试 FP32 引擎, batch size = 32
./bin/trt_inference models/resnet18.trt 32

# 测试 FP16 引擎, batch size = 32
./bin/trt_inference models/resnet18_fp16.trt 32

性能基准测试 (Performance Benchmark)

我们在 Google Colab 的 NVIDIA T4 GPU (15GB 显存) 上对 ResNet18 模型进行了基准测试。所有延迟数据均为 100 次推理运行的平均值。

精度模式 Batch Size 平均延迟 (ms) 吞吐量 (FPS) 性能提升 (vs FP32)
FP32 1 2.26 ms 441 FPS -
FP16 1 1.01 ms 994 FPS 2.25x
FP32 32 25.76 ms 1,242 FPS -
FP16 32 8.02 ms 3,987 FPS 3.21x

结论

  1. FP16 加速效果显著: 在 T4 GPU 上,使用 FP16 精度可带来 2-3 倍 的性能提升。在批处理大小为 32 时,加速效果尤为明显,吞吐量提升超过 3.2 倍。
  2. 批处理 (Batching) 是提升吞吐量的关键: 对于 FP16 模型,将批处理大小从 1 增加到 32,总吞吐量(FPS)提升了 4 倍。这证明了在推理时应尽可能使用更大的批处理大小,以充分利用 GPU 的并行计算能力。