作业题目:MindSpore CPU 算子开发调试
作业内容:
普通档:从当前CPU算子支持列表中任选三个算子执行,并反馈算子执行结果
挑战档:开发新的CPU算子,完成该算子的调试操作,并反馈算子执行结果(可选)
作业奖励:作业完成优秀的同学将获得赠书《深度学习与MindSpore实践》。
更多作业详情与实践项目加入下方学习交流群即可获取。
注:若群人数达到限制,无法直接扫码加入,请识别上方海报二维码,添加机器之心小助手(syncedai6),备注「开源」,小助手将邀请进群。
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 上的自定义算子。
GitHub:https://github.com/mindspore-ai
PPT下载方式:关注公众号「MindSpore」,回复关键词「GE」,即可下载。