def sigmoid _ad_optimized(dout,x)
import te
#前向算子引用
out = sigmoid(x)
#手动调优
def custom_sigmoid_fdiff(out,inputs,grad):
return[out*(1.0–out)]
#利用后生成反向算子
dx]= te.differentiate(out,[x],dout,override={out:([x],custom_sigmoid_fdiff)})
return dx
这里把手动推导的导数公式放入函数custom_sigmoid_fdiff(out,inputs,grad)中,并在自动微分中重载求导过程 。那么在保持其他部分自动生成的情况下,自动微分使用custom_sigmoid_fdiff(out,inputs,grad)作为输出(out)对x的导数进行运算 。这样MindSpore保持了自动微分反向算子和手动调优反向算子在风格上的统一,方便了图层对算子的调用 。
总而言之,MindSpore在支持算子级自动微分的同时,对反向算子进行IR层面的优化,满足了算子开发者自动生成反向算子的需求 。同时,MindSpore兼顾了用户对手动调优反向的需求,将自动和手动有机结合,简化了开发流程,提高了代码的可读性和运行效率 。
3.3 自动调优现在AI开发的瓶颈之一是AI的黑盒化,特征提取随机化、调试过程不可视、推理结果无解释,这些问题大大限制了AI技术的可信和广泛应用 。
调试调优(mindinsight)的目标是打开AI的黑盒,通过可视化Debugger技术,帮助用户轻松地进行模型调试;利用模型训练过程可视化技术、模型溯源可视化技术、性能调优可视化技术,帮助用户轻松地进行性能和精度调优 。MindSpore可视化界面如图5所示 。

文章插图
图5 MindSpore可视化界面
调试调优提供了训练看板,开发者在训练看板中可以总览训练过程中的数据抽样情况、参数分布变化情况、损失(loss)变化情况,掌握从训练数据到模型参数再到loss变化的整个模型优化过程 。训练看板还集成了计算图可视化和数据图可视化功能 。计算图可视化功能有助于用户理解模型结构,判断模型结构是否符合预期 。数据图可视化功能有助于用户掌握训练数据的处理流程 。
调试调优还提供了模型溯源和数据溯源可视化功能 。在模型溯源页面,开发者可以方便地比较不同超参数、不同数据集等条件下的模型效果,选择模型效果更优的超参数 。在数据溯源页面,开发者可以同模型溯源联动,精细分析不同的数据处理操作对模型效果的影响,选择更合适的数据处理流程 。
而使用动静结合的开发调试模式时,开发者可以只开发一套代码,通过变更一行代码,从容切换动态图/静态图调试方式 。需要高频调试时,选择动态图模式,通过单算子/子图,方便灵活地开发调试;需要高效运行时,可以切换为静态图模式,对整张图进行编译,通过高效的图编译优化获得高性能 。样例代码如下 。
# 定义网络
net = Net()
x = Tensor(np.random.rand(1,1,4,1024).astype(np.float32))
# 默认使用动态图模式
out = net(x)
# 切换静态图模式
context.set_context(mode=context.GRAPH_MODE)
综合总体框架和技术优势,可以看出自动微分等特性对MindSpore目标的贡献,见表2 。

文章插图
4 MindSpore的性能测试4.1 性能卓越MindSpore通过AI Native执行新模式,最大化地发挥了“端-边-云”全场景异构算力 。它还协同华为昇腾芯片,通过On-Device执行、深度图优化、高性能数据处理流水线(pipeline)等多维度达到极致性能,帮助开发者缩短训练时间,提升推理性能 。MindSpore协同华为昇腾芯片示意图如图6所示 。

文章插图
图6 MindSpore协同华为昇腾芯片示意
● On-Device执行:整图下沉到device执行,减少host-device交互开销 。
● 深度图优化:包括整图的格式转换消除、类型转换消除、算子融合 。
● 高性能数据处理pipeline:支持数据增强、全局混洗(shuffle) 。
MindSpore协同华为昇腾芯片的实际训练性能数据见表3、表4,其中表3采用的是ResNet-50 v1.5网络,其网络类型为卷积神经网络,采用的数据集为ImageNet2012,MindSpore版本为0.2.0-alpha;表4中采用的是BERT Large网络,其网络类型为Attention,采用的数据集为zhwiki,MindSpore版本为0.2.0-alpha 。

文章插图

文章插图
4.2 端云协同MindSpore针对全场景提供一致的开发和部署能力以及按需协同能力,使开发者能够实现AI应用在云、边缘和手机上的快速部署,全场景互联互通,实现更好的资源利用和隐私保护,创造更加丰富的AI应用 。MindSpore端云协同框架如图7所示 。
推荐阅读
- 用 Java 训练深度学习模型,原来能这么简单
- 下一代视频编码技术的云视频应用探索
- 剑侠世界手游3 剑侠世界3内测
- Python的从入门到精通的完整学习路线图
- 如何正确卸载软件
- diy奶茶的做法大全,奶茶做法学习大全
- 深度解析SQL和oracle等数据库的历史,说点不一样的给你
- 中考考生需养成的11种学习习惯
- 绿茶奶茶的做法大全,奶茶做法学习大全
- 深度对比docker和kubernetes的区别和联系
