4 月 26 日,机器之心联合华为昇腾学院开设的线上公开课 《轻松上手开源框架 MindSpore》 第二课完成,GraphEngine 高级工程师王俊为大家带来了主题分享《MindSpore 中 GraphEngine 浅析》,第二课回顾视频: www.bilibili.com/video/BV1ve…
第二课精选问答
在第二课的 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: gitee.com/mindspore
- GitHub: github.com/mindspore-a…
PPT下载方式: 关注公众号「MindSpore」,回复关键词「GE」,即可下载。
第二课PPT如下: