本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。清华自主研发的深度学习框架Jittor在动态图推理速度上再次击败PyTorch。近日,极兔团队完成了在寒武纪芯片MLU270上的移植。此次与寒武纪的合作,使得Jittor在骨干网络模型中的动态图推理速度相比PyTorch平均提升了276.69倍。从团队公布的实验结果可以看出,在寒武纪芯片上使用了Jittor和PyTorch进行推理。Jittor在16个骨干网络模型中的推理速度相比PyTorch有很大的提升,包括alexnet、vgg系列、resnet系列。其中alexnet最快,提升速度为464.43次,最慢的resnet50也达到了153次。平均提升速度为276.69次。△表1:模型的具体取值同时,图的精度损失与PyTorch相比也大大降低。△表2:resnet18的mse误差对比团队以resnet18网络为例进行对比,baseline为CPU;结果表明,该图的精度损失比PyTorch低42.53%。或者“元运营商”的信用表现是如何获得如此大的提升的?要知道,TensorFlow和PyTorch框架底层有成千上万的算子;如果要移植新的硬件,就必须重写大量的算子,这样不仅工作量会急剧增加,而且难度也会增加。Jittor这次依然依赖于他们的核心武器——meta-operator。根据Jittor官方文档定义,元算子是指神经网络所需的基本算子。在设计Jittor时,研发团队设定了一个目标,即用户只需要几行代码就可以定义新的算子和模型。在保持易用性的同时,又不失任何可定制性。因此,在Jittor中,多个元算子可以相互融合,形成更复杂的算子。这些复杂的算子构成了神经网络计算的多个模块,如卷积层、归一化层等。△利用元算子实现卷积层这次将Jittor移植到寒武纪,也是同样的原理。研究团队将神经网络所需的基本算子定义为三类18个元算子。让元算子相互融合形成通用算子,从而通过优化极少数元算子来提高通用算子的性能。而且,元算子仍然是反向传播闭包,所有元算子在反向传播后仍然是元算子。因此,在完成三类元算子的移植后,Jittor自然可以支持大多数常用元算子的推理和简单训练。从Jittor元算子到BANG为了方便用户操作,Jittor内置了元算子编译器,可以将用户的Python代码动态编译成寒武纪BANG语言。BANG语言是专门针对寒武纪产品架构的代码语言。可以大大优化寒武纪芯片的通用编程能力,提高用户编程的自由度。而且它还有一整套编译工具链来提高性能。包括CNCC(CambriconNeuwareCompilerCollection)、CNAS(CambriconNeuwareAssembler)、CNLINKER(CambriconNeuwareLinker)。Jittor内置的元运算符编译器可以自动将元运算符转换为BANG运算符。通过采用动态编译的方式,可以在运行时获取更多的信息,比如计算图上下文、形状信息等,可以进一步提高算子的性能。而且Jittor还内置了complierpass,可以根据硬件设备自动优化BANG语言,从而生成更适合硬件设备的底层算子。这样,只需要一行Python代码就可以表达BatchNorm算子的核心思想。元运算符编译器然后自动将这行代码优化为BANG语言代码。由于BANG语言设计更为成熟,提供了类似于CUDA语言的线程调度模式,更易于上手和调试;也能更好的释放寒武纪芯片的算力。清华大学自主研发,中国高校深度学习第一个开源框架Jittor的开发团队全部来自清华大学计算机系图学实验室,负责人为石敏教授胡教授,清华大学计算机系。实验室的博士生主要负责开发:梁盾、杨国业、杨国伟、周文扬……Jittor与TensorFlow、Pytorch等主流深度学习框架最大的不同在于,它是一个深度学习框架完全基于动态编译(Just-in-time),使用元运算符和统一的计算图。它不像Pytorch那样依赖tracing机制,使得用户的操作更加简单,同时可以获得更好的学习和训练效果。对于此次取得的成果,开发者之一梁盾透露,未来可能会在峰会上发表,并开源给大家。此前,极兔开源的点云模型库在多种主流模型上的训练性能比Pytorch提高了一倍以上;并发布了第一个支持金属度和粗糙度的可微分渲染库。最近他们还开源了一款智能P图神器DeepFaceEditing,可以通过草图自由编辑人脸。感兴趣的同学可以试试~GitHub开源:https://github.com/IGLICT/DeepFaceEditing-Jittor
