4 月 26 日,机器之心联合华为昇腾学院开设的线上公开课《轻松上手开源框架 MindSpore》第二课完成,GraphEngine 高级工程师王俊为大家带来了主题分享《MindSpore 中 GraphEngine 浅析》,第二课回顾视频如下:
第二课精选问答
在第二课的 QA 环节中,有一些问题被大家广泛提到,王俊讲师再次做了精选与编辑,供大家参考。
Q1:循环下沉是什么?
循环下沉是在on-device执行的基础上更进一步的一个技巧,意图进一步建校host侧和device侧之间的交互次数。一般情况下,我们习惯于每个step都返回一个结果,循环下沉是控制每隔多少个step返回一次结果,缺省的配置是一个epoch返回一次结果,这样每个epoch里,host侧和device侧只需要进行一次数据交互即可。
Q2:FusionOP是定义在device上么?
FusionOP对应的具体算子是有其算子实现的,存储在算子信息库中,融合出fusionOP的过程是在host侧的CPU上完成,运行此FusionOP是在device上。
Q3:profiling只能在昇腾上用吗?
只能在升腾上使用。
Q4:profiling有op的开始时间吗?
profiling是记录下op开始和结束的时间,以此计算算子耗时。
Q5:数据dump是能dump出来什么数据呀
通过配置可以dump出任何存在在网络中的数据,每一个算子的输入输出,每一个parameter的值和梯度都可以被dump下来。
Q6: 910支持推理吗?支持多少op呢
910支持训练及推理,310只支持推理。目前我们的算子信息库已经相对完善,常用的op基本都已支持,如果有自定义算子的需求,我们提供了TBE工具来支持用户自定义算子的开发。
Q7:算子在不同的加速器上的调度策略什么?
在图准备阶段会根据代价函数进行算子引擎分配,在流分配阶段也会充分考虑不同算子之间的并行计算可能,具体指定每个算子的执行引擎。
Q8: GE是mindspore中和硬件交互的
是的,GE专门负责和Ascend芯片交互。
Q9:310不能做训练么?
310只能做推理,MindSpore训练好后的模型,将其固化为pb格式后,可以部署到310芯片上进行推理。
Q10:如何自定义升腾芯片支持的op呢?
提供了Tensor Boost Engine这个工具来支持自定义op。Ascend芯片的算子需要用一种cce格式的代码编写,需要显式指定内存搬运操作,极为复杂,使用tbe工具,只需调用其python接口完成算子逻辑定义,即可生成可运行在Ascend上的自定义算子。
大家后续如有更多问题,欢迎关注 MindSpore 的gitee和github,随时提 issue,官方人员将及时为大家解答:
- Gitee:https://gitee.com/mindspore
- GitHub:https://github.com/mindspore-ai
第二课PPT如下: