tensorRT 与 torchserve-GPU性能对比

实验对比

前端时间搭建了TensorRTTorchserve-GPU,最近抽时间将这两种方案做一个简单的实验对比。

实验数据

  • Cuda11.0Xeon® 6242 3.1*80RTX3090 24GResnet50
  • TensorRT 、Torchserve-GPU各自一张卡搭建10进程接口,感兴趣的可以查看我个人其他文章。
  • 30进程并发 、2000 张1200*720像素图像的总量数据
  • TensorRT 的部署使用了RTX3090 10进程
  • Torchserve-GPU的部署使用了RTX3090 10进程
  • Torchserve-CPU的部署使用了3台10核40线程的CPU服务器,每台10进程

实验一 TensorRT与Cuda加速对比

  • 输入普遍使用(1,224,224,3)的浮点张量
模型torch(cpu)torch(gpu)onnx(cpu)onnx(gpu)TensorRT
resnet180.0290.00240.004-0.0012
resnet500.080.00560.0080.00300.0018
resnet1010.160.0100.0180.00510.0032
resnet1520.230.0160.0210.00740.0045
  • 结论:不同模型针对tensorrt的提速均在4-5倍左右。

实验二 TorchRT与Torchserve-gpu加速对比

  • 使用同一模型,输入不同的尺寸,尽量减少因为传输导致的耗时,使用单个数据的输入,测试单个数据的请求响应
框架输入尺寸耗时(s)
TensorRT+Flask1200 7200.14
torchserve-gpu1200 7200.05
torchserve-cpu1200 7200.28
TensorRT+Flask224 2240.018
torchserve-gpu224 2240.025
torchserve-cpu224 2240.19
TensorRT+Flask10 100.009
torchserve-gpu10 100.023
torchserve-cpu10 100.16
* 结论:大尺寸图像的信息传输是导致tensorrt耗时较长的主要原因,torchserve-gpu底层为java要比我试验时用flask(python)效率要快。
当使用小尺寸图像,将耗时主要集中在模型推导时,tensorrt的优势就体现出来了。

实验三 多尺寸并发实验

  • 分配量两张RTX3090卡,一张卡部署tensorrt、一张卡部署torchserve-gpu
框架框架进程测试并发数数据量耗时(s)CPU
TensorRT+Flask4302000 1200*72029s-
TensorRT+Flask10302000 1200 72012.2s-
Torchserve-GPU4302000 1200*72023-
Torchserve-GPU10302000 1200*72011.73-
Torchserve-CPU30302000 1200*72019.3-
框架框架进程测试并发数数据量耗时(s)CPU
TensorRT+Flask10302000 224*2243.334%
Torchserve-GPU10302000 224*2246.8321%
Torchserve-CPU30302000 224*2241348%
* 实验使用 2000张1200X720像素的图像数据、224X224像素的图像数据分别进行实验。
同时使用30并发测试2000份数据,明显可以看出tensorrt在模型方面的优势。

实验四 GPU分布并发实验

框架框架进程测试并发数数据量耗时(s)CPU
Torchserve-GPU(单卡/四卡)4302000 1200*72023/19.9-
Torchserve-GPU(单卡/四卡)10302000 1200*72011.73/8.64-
Torchserve-GPU(单卡/四卡)20302000 1200*720未知/4.76-
Torchserve-GPU(单卡/四卡)4302000 224*2248.14/5.84-
Torchserve-GPU(单卡/四卡)10302000 224*2246.83/2.77-
Torchserve-GPU(单卡/四卡)10302000 224*224未知/2.15-
  • 结论:这里主要对比了torchserve-gpu,多进程分布在一张卡要比多进程分布多张卡要慢一些。
  • 推测原因:多进程分布在一张卡,相互之间可能存在资源抢占,建议分布在多卡。
  • 推测:Tensorrt可能存在同样的问题,如果分布在多张卡,速度可再提升。

总结

  • TensorRT适合复杂模型,传输方面不会耗费太多资源的算法,如复杂模型推荐。
    不太适合大功率http传输的的算法、如cv,要不然大部分资源都浪费在了传输上。
    tensorRT主要还是针对模型前向推导的优化。
  • Torchserve-GPU 在前向推导方面逊色于TensorRT,但是模型搭建便捷。
    数据传输方面Torchserve-GPU内部应该有优化,搭建的flask+TensorRT可能存在传输效率问题。
  • Torchserve-CPU,CPU机器紧缺的情况下可以通过多点普通机器、做高并发,弥补模型推导的缺陷。
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值