erwin模型怎么保存_PyTorch模型的加速及部署

模型部署的时候,一般会对latency、throughput有更高的要求,这导致直接用pytorch部署性能达不到要求。如果我们部署的目标硬件是nvidia的产品(如下图所示),我们可以直接使用nvidia的tensorrt进行优化与部署。

38de324c38d5d678885e9fec7a0407cd.png
nvidia硬件产品

pytorch转换tensorrt

nvidia有一个开源项目torch2trt,提供pytorch到tensorrt的转换,但是我们在使用的过程中发现了一些问题:

1、pytorch模型转换时对模型内部的具体实现限制较多,比如forward里如果有if语句就容易转换失败;

2、onnx模型转换时仅支持固定batch size;

3、benchmark功能不够灵活;

4、不支持tensorrt engine的保存和读取。

于是我们开发了volksdep解决上述问题,该项目有如下特点:

1、支持pytorch、onnx模型的自动转换,并且基本不需要改动原模型的代码实现;

2、提供benchmark接口,通过几行代码就可以自动生成benchmark,包含不同框架、精度下的throughput、latency、准确率等指标;

3、支持tensorrt engine的保存和读取,这样能保证python前端或者c++前端部署的一致性。

我们使用volksdep成功转换过分类模型、语意分割模型、目标检测模型。

部署

pytorch转换为tensorrt之后,就需要部署。部署有两个方案:1、纯c++;2、python前端,cuda/c++后端。

方案1的优点是性能会非常高,但是缺点是不够灵活(c++写起来没python容易)。

方案2的优点是灵活,python有良好的生态,而且写起来也容易,但是性能会稍微差一些,但是也不会太差,因为python接口的tensorrt效率与c++接口的tensorrt效率相当。

对于方案1,我们维护了cheetahinfer;对于方案2,我们维护了flexinfer,我们做了一些优化,把前处理中除了resize之外的操作全都放在gpu上运行,基本达到了高效和灵活的tradeoff。


以上的volksdep、cheetahinfer和flexinfer我们会持续维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值