MindSpore

其他

​MindSpore自定义算子:思考,挑战与实践

点击蓝字MindSpore关注我们引言陈天奇在《新一代深度学习编译技术变革和展望》一文中曾经提到,当前阻碍深度学习的全栈解决方案发展的主要是两个隔阂,包括:竖向隔阂,也就是手工优化的方案和自动编译优化的方案的隔阂。当前的大部分深度学习框架面临以手工算子优化为主的算子库和以自动优化为主的编译方案二选一的困境,如何让手工优化,机器学习优化专家的知识和自动优化做有机整合,是目前行业面临一个大的问题。横向隔阂,也就是图算软件分层引起的跨层隔阂。当前的大部分深度学习框架对不同层次的抽象分开设计导致,例如图层和算子层的分离,但是深度学习编译和优化本身不是一个一个层级可以全部完成优化的问题。解决相关问题需要各个层级抽象之间的联动。在网络开发实践中,我们也深深的感受到了这两种隔阂对计算表达的严重限制。一方面,我们注意到竖向隔阂不仅仅存在于手工优化的方案和自动编译优化的方案之间,同样存在于不同的手工优化的方案之间。深度学习框架在整合这些优化方案加速网络时面临比较大的阻碍:有的手工优化的算子以第三方算子库的形式呈现,全部加入框架会使框架过于厚重;有的手动优化方案只能针对某些特定场景有效,无法作为一个普遍的优化应用在全部场景。特别是在AI-HPC融合场景中,HPC的应用中的算子很多是针对特殊硬件做的专门优化,如何有机的整合这类算子,是深度学习框架面对AI-HPC融合场景的一个重要挑战。另一方面,在业界的大部分深度学习框架中,算子的表达与注册独立于模型(也就是图层),图层视算子为黑盒。当用户在框架之外独立添加算子时,图层无法了解算子内部的具体计算逻辑,因此无法进行例如算子融合和算子拆分等图层上的优化。如何在图层上直接定义算子,让图层感知算子的具体逻辑,是打破图层和算子层的横向隔阂,实现各个层级抽象之间的联动的重要议题。总的来说,一个深度学习的全栈解决方案总是会遇到不同算子优化方案的竖向隔阂和图算抽象分离的横向隔阂。为了解决如上隔阂引入的表达问题,MindSpore给出了自己的解决方案,即统一自定义算子表达。1新接口:MindSpore自定义算子统一接口Custom随着MindSpone在科学计算等新型网络场景的大量使用,对算子的灵活性表达提出更高的要求,针对传统深度学习网络设计的算子库越来越无法满足需求。因此,MindSpore自1.6起推出自定义算子统一接口Custom,并在1.8版本迎来全新升级,有机的结合了手动优化和自动编译算子,并让图层感知算子的定义,助力用户方便高效的添加自定义算子,可以满足包括快速验证,实时编译和第三方算子接入等不同场景下的用户需求。当前自定义算子支持的算子开发方式包括:ms_kernel、tbe、aicpu、aot、pyfunc、julia。不同的算子开发方式支持不同的场景和不同的平台。自定义算子模式和平台支持在设计自定义算子的多种模式时,我们充分考虑到了阻碍深度学习的全栈解决方案发展的两个隔阂,并用统一的接口去实现框架对算子的多种需求。1.1手工优化算子的一键接入在前面的讨论中我们曾经提到,深度学习全栈解决方案发展的纵向隔阂是手工优化的方案和自动编译优化的方案的隔阂。为了方便用户快捷的接入手工优化的算子,MindSpore自定义算子统一接口Custom提供aot模式,灵活封装手工算子。用户可以手工优化算子实现,并把算子以动态库的形式接入MindSpore加速网络。特别的,当第三方库提供CPP或者CUDA函数的API时,我们可以自定义算子中调用第三方库的API,然后通过编译链接将第三方库接入MindSpore加速网络,从而实现手工优化算子的一键接入。以PyTorch的Aten库为例进行介绍,我们在网络迁移的时候会遇到基于PyTorch的网络中的部分算子尚未被MindSpore支持的情况。为了快速支持网络,我们可以利用Custom算子的
2022年8月26日
其他

【自动微分原理】自动微分的原理介绍

函数套函数,把几个简单的函数复合为一个较为复杂的函数。链式法则是微积分中的求导法则,用于求一个复合函数的导数,是在微积分的求导运算中一种常用的方法。复合函数的导数将是构成复合这有限个函数在相应点的
2022年5月30日
其他

MindSpore首发:诺亚NeurIPS 2020多篇轻量化技术端侧模型

我们通过优化张量A来获取W的量化取值,而A的梯度是可以精确计算的,因此,整个优化过程是可导的,从而避免了近似梯度引入的误差。虽然连续松弛策略可以解决训练过程中近似梯度所引入的误差问题,但
2020年12月15日
其他

MindCon极客周,12个城市接力启动,快来报名赢大礼!

每年的12月,最令人心心念念的一件事就是跨年,对于这个特别的2020,要如何更有仪式感地与它道别,迎接虽充满不确定性但却值得期待的新一年呢?或许是参加这场将于12月14日至25日由华为MindSpore与量子位联合发起的「MindCon极客周」——点亮城市·模型大赛。「MindCon极客周」是一场为期12天将分别在12个城市举办的极客狂欢活动。大家每天聚集在一个城市,修复社区bug,分享学习心得,还可以参加「昇腾模型王者挑战赛」,让您参与感受科技盛宴的同时,在年底为自己持续充电,以饱满的精气神迎接新的一年!邀您点亮城市「MindCon极客周」不是一场‘嗨过就好’的无意义狂欢,而是每半年都会如期举办的、有计划的,以深层次引领大家走入AI探索世界为目标的,多城市接力进行的大型活动。今年,各地MSG组织者已做好充足准备,期待您的参与!先来听听MSG组织者们热情洋溢的家乡话吧~报名参加「MindCon极客周」的我们拥有同样的兴趣与热爱,带着不同的人生经历,将各自拥有的知识在互动中碰撞出灵感的火花,会收获更多的心得体会,当然还有惊喜好礼等您领取,快来开启2020年底的一场奇妙旅行,点亮城市收获不一样的惊喜!活动主题&内容活动主题点亮城市计划:通过点亮城市的积分评比方式,从12个城市中评选出积分最高的城市,积分最高的城市将获得神秘大礼并作为明年(2021年)MindCon极客周的主办城市。活动内容分为三部分:1.
2020年12月7日