×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

《计图团队完成了在寒武纪芯片MLU270上的移植》 亲自说话2021-05-20 08:51:21 回复 4 查看
《计图团队完成了在寒武纪芯片MLU270上的移植》
分享到:

最近,计图团队完成了在寒武纪芯片MLU270上的移植。

这一次跟寒武纪的合作,使Jittor在backbone网络模型中的动态图推理速度较PyTorch平均提升了276.69倍

从团队公布的实验结果可以看到,在寒武纪芯片上分别用计图(Jittor)和PyTorch进行推理。

计图(Jittor)在16种backbone网络模型中的推理速度都较PyTorch大幅提升,其中包括alexnet、vgg系列、resnet系列。

其中最快的是alexnet,提升速度达到了464.43倍,最慢的resnet50也达到了153倍。

平均提升速度达276.69倍。

还是「元算子」的功劳

性能得到如此大的提升,是怎么实现的呢?

要知道,在TensorFlow,PyTorch框架底层,有上千个算子;想要移植新的硬件,就必须将大量的算子复写,这样一来不仅工作量剧增、而且难度也会加大。

Jittor这次还是依靠他们的核心武器——元算子

根据Jittor官方文档定义,元算子是指神经网络所需的基本算子。

早在设计Jittor的时候,研发团队就定下了一个目标,即用户只需要数行代码,就可定义新的算子和模型。在保证易用的同时,不丧失任何可定制性。

所以在Jittor中,多个元算子之间,可以相互融合成更加复杂的算子,这些复杂算子构成了神经网络计算的多个模块,如卷积层,归一化层等等。

清华「计图」现在支持国产芯片了!动态图推理比PyTorch快了270倍

△使用元算子实现卷积层

这一次将Jittor移植到寒武纪上,也是同样的原理。

研究团队把神经网络所需的基本算子,定义为三类共18个元算子。

让元算子相互融合形成常用算子,这样就能通过优化非常少的元算子,实现对常用算子性能的提升。

清华「计图」现在支持国产芯片了!动态图推理比PyTorch快了270倍

并且,元算子还是反向传播闭包,所有元算子反向传播后依旧是元算子。

所以在完成三类元算子的移植后,Jittor天然就能支持大部分常用元子的推理和简单训练。

从Jittor元算子到BANG

为了能让用户更为简单地操作,Jittor内置了元算子编译器,可以将用户的Python代码动态编译成寒武纪BANG语言

BANG语言是专门针对寒武纪产品架构的一种代码语言,它能极大优化寒武纪芯片的通用编程能力,提升用户编程的自由度。

并且它还有全套编译工具链来提高性能。包括CNCC(Cambricon Neuware Compiler Collection )、CNAS(Cambricon Neuware Assembler)、CN ER(Cambricon Neuware  er)。

Jittor内置的元算子编译器可以把元算子自动转化为BANG算子。

采用动态编译的方式,能在运行时获取更多的信息,比如计算图上下文、形状信息等,这些信息都可以进一步提升算子的性能。

并且,Jittor还内置了可以根据硬件设备自动对BANG语言进行优化的优化编译遍(complier pass),从而生成对硬件设备更为适合的底层算子。

用这种方法,仅仅一行Python代码,就能表示BatchNorm算子的核心思想。

清华「计图」现在支持国产芯片了!动态图推理比PyTorch快了270倍

元算子编译器再把这行代码自动优化成BANG语言代码。

由于BANG语言的设计更加成熟,提供了类似于CUDA语言的线程调度模式,使得上手和调试都更加简单;也能更好地释放寒武纪芯片的算力。

清华「计图」现在支持国产芯片了!动态图推理比PyTorch快了270倍


版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭