【MindSpore Lite 1.6 新功能 异构并行】询问 1.6 版本中的 异构并行 细节

问题描述:

【功能模块】

MindSpore Lite 1.6 版本中的 Release Note 中重点讲到【6.1 通过异构并行技术,深度挖掘硬件算力提升推理性能】。个人对该特性比较感兴趣,现有如下问题想请教交流:

官方中提到:MindSpore Lite在当前版本实现了GPU与CPU的异构并行,使用Mobilenet-V1网络实测验证,有5%左右的性能提升。

请问这个如何复现?是否可以提供复现步骤,及如上测试是在哪个设备上运行的?

5%的性能提升,对应的baseline是?

该特性指出:将无依赖的分支分别在CPU和GPU上并行执行,然后汇集数据。这一过程需要CPU-GPU之间的交互调度和同步操作,如果这个开销较大,那加速效果也会受到影响吧。这时,为何不采用将整个模型都放在GPU上执行呢?

该特性对应的代码段是?可以提供下对应链接吗?我自学阅读下。

期待您的回复,谢谢!

有个困惑: 类似MobileNetV1这类轻量模型,为何要将该模型进行异构并行呢?模型全部在GPU上运行,速度会优于异构并行方式吧。反倒是一些大一些的模型,如果在算力偏弱的嵌入式设备上跑,这种模型异构并行的方式可能收益更大吧。

解答:

1. 复现步骤按照比例利用conveter进行模型切割即可1:2 1:1 1:3等均可尝试(cpu:gpu) 测试机器是华为p40  

./tools/converter/converter/converter_lite --help会有一个--configFile选项,在转换的时候要带config文件 指定GPU与cpu比例2:1  然后转一个切分好的模型

config内容示例

device0=cpu

device1=gpu

computeRate=device0:1;device1:1;

benchmark 时有一个enableParallel开启就可以了

2. 5%的性能提升就是切分之后与不切分之前cpu直接作对比即可,cpu 与gpu数据交互 通信同步确实有开销 这越是导致性能仅能提升5%的主要原因。就是因为GPU放不下分一部分放到CPU上

3. 代码在mindspore/lite/tools/optimizer/parallel/及 lite/src/sub_graph_split.cc

一样的,就是普通卷积和depthwise卷积分割在不同的设备上跑,也是支持的,操作也一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值