中国人工智能AI框架自主研发

中国人工智能AI框架自主研发

中国AI界争相构建AI开源框架的背后,技术和业务层面的考量因素当然重要,但也不应忽视国家层面的政策支持。对于AI基础设施的建设,中国政府在《新一代人工智能发展规划》等关于AI顶层规划的政策中都着重提及,除了加大应用层技术落地,更希望业界和学界深入AI底层技术研发。近两年,基础技术的“卡脖子”话题成为近两年中国科技界探讨的热点,担心中国AI的发展会像芯片发展那样遭遇空中楼阁的困境。AI专家也在四处布道“做人工智能必须要做开源,中国要想发展好新一代的人工智能,必须要有高效和风险可控的开源开放平台”的观点。近期,由于疫情冲击经济,在政府高层推动下,市场更是掀起一股“新基建”的热潮,其中以5G、大数据中心、人工智能和工业互联网组成的数字化基础设施备受关注。对有雄心发展AI的企业或者国家来说,通过自主研发来掌握AI底层技术无疑是一项重大战略。

中国目前深度学习研究和应用主要依赖于国外平台,的确面临着卡脖子的风险,所以一些国内的IT企业也推出了自己的平台。中国应该在人工智能生态的全产业链上占有一席之地。除了计算框架仍然存在着大量亟需优化解决的问题,华为做MindSpore的另一大缘由是技术战背景。必须要有自主可控的全场景的计算框架。计图、天元、MindSpore的接连开源或许会给中国开发者做硬核开源项目打一剂强心针。中国开发者对开源框架的敬畏之心一直太强,不认为中国团队能做一套开源框架,但现在对这些开源框架有足够认识后,再造一个类似Pytorch技术路线的框架难度也不会很大。今年应该是国内开源AI框架比较热闹的一年,一流科技的OneFlow框架也将在不久后开源,对国内技术框架的竞争力充满信心,中国AI框架的发展也代表国内从应用驱动向更内核的技术研究进发了。无论如何,计图、天元、MindSpore点燃了2020年国产AI框架开源的星星之火,至于未来的影响力是否燎原,是否能真正与TensorFlow、PyTorch一较高低,投票权在每一位开发者的手中。

PyTorch本质上是Numpy的替代者,而且支持GPU、带有高级功能,可以用来搭建和训练深度神经网络。如果你熟悉Numpy、Python以及常见的深度学习概念(卷积层、循环层、SGD等),会非常容易上手PyTorch。 而TensorFlow可以看成是一个嵌入Python的编程.。

AI框架领域,本来TensorFlow看上去已经一统天下了,然后PyTorch突然来一个动态图好像就翻身了,其AI框架还有没有机会?后续最重要的技术创新可能是什么?

 模型上还是有很多可以突破的地方,自己做结构化数据,觉得这个方向很新颖,这带来从上往下走,从模型开始到底下都有很多的变化,所以还是前瞻性比较多。如果说看得很近,觉得结构性的东西会有突破,以前的很多step可能都不见得更加泛化。

 举个例子,假如bert里面大家知道结构是什么样,所有的Token都连在一起,是个全连接的图,是图计算的一个特例。还有把这一个有结构的和没有结构的这个stack融合在一起。

 如果让看有什么重要问题,觉得不在平台,原动力还是在模型、在数学上面,这也是诟病现在所有深度学习框架的一个通病,以为学习了Python、学习了某一种框架就懂了深度学习,这其实是非常差的,最后的动力在数学。也正是因为这个原因,在做另外一个框架,现在还不能说。

这个领域是由数学模型和算法驱动的,下面这些软件应该去支持这些新的模型和算法的东西。

侧重于方法和模型上更重要,这个观点也是对的。但是框架问题,想说为什么框架重要,怎么能在框架上有所超越,这是今天讨论的要点。

 为什么做框架?深度学习做科学工程冲击太大了,包括现在图形学,MIT有个博士论文获得了最佳博士论文奖,就是做可微图形学,在加强学习框架思路下,传统学科都被重新定义、重新思考,这是一个激动人心的时代,一切都在变革。这种时候框架的重要性是毫无疑问的,如果不用框架,从头什么都自己写,这是不现实的。

 认为过几年之后,这些企业的工程师都得重新学习,因为现在这些学生编程的东西跟10年前完全不一样了,变化是非常大的。所以框架的重要性是非常值得关注的,这是一个。

 第二个,如果没有自己的框架,这显然是有很大问题的,包括EDA软件的问题等等,这是不可思议的。为什么中国这么多企业想做框架?华为不做不行,美国说不能用了,那就不行了。旷视科技做得这么好,如果没有自己的天元,说不让用TensorFlow了,那大楼的底柱就塌了,所以这个是必须要做的。但怎样超越是很难的。

 觉得要超越,技术上要创新,如果重复(造轮子)的话可以解决“卡脖子”问题,但是无法超越,要想超越,必须进行技术创新。

 框架最本质是计算图的问题,因为是数据结构,能够把定义好。计算图这个事情,利用算子融合把计算图整合起来是个机会,不是唯一的机会,各位嘉宾谈的很多观点都非常好,咱现在中国国内是百家争鸣,希望有些尝试和努力能够成功、能够超越。中国的科技创新机会的窗口期很小,PyTorch已经联系聊过很多技术细节,下一代框架就会用统一计算图,因为都是开源的,也能看得见,所以机会很小。

 共同努力把框架这个事情推进一步,不让成为中国人工智能发展的短板。

 主要新技术是计算图相关的优化技术。有一种说法是大学要不要做这种复杂的系统软件?因为维护不了。但经常反对这种观点,就经常举伯克利的例子,做了好几个系统软件都非常成功。大学里面有非常多天才程序员,而系统软件有个特点是少数天才可以超过很多中等水平的人,所以大学做一些技术上的探索是完全有可能的。当然,后续真正的产业化和长期维护是另外一个问题,但是大学做这种基础性软件的探索是非常好的。

 虽然一直在讨论框架技术,但是觉得生态反而是应该更加要关注的一点。所有的框架都在进步,而且投入比加起来还要大,这样的话就给能够做的比较好的概率就很低了。

 比如刚才查了一下最近框架的下载量,最近7天TensorFlow的下载量是250万次,然后还查了一下其框架,在开这个会议的这段时间,TensorFlow的下载量已经远超过这么多框架历史以来的下载量,所以差距在这儿。

 应该更多探讨一下生态该怎么建设,可以看到TensorFlow和PyTorch虽然看起来是两个公司,但其实后面的合作是挺多的,比如PyTorch的可视化也用了TensorFlow的。今天有这么多企业、大学在一起,但是很少见到国内两个不同的企业或者不同的学校之间会有一些合作的例子。

 在编程框架的接下来可以创新或者值得突破的地方,个人觉得会有两点。第一点是从第一代的caffee,到TensorFlow、PyTorch,更靠近真正的编程语言,正好这个编程语言选中了Python,但是在表达上越来越靠近图灵完备的编程语言。从前年开始,Keras开始更流行起来,也有去讨论比如PyTorch跟Keras、TensorFlow之间的区别,Keras的很大的优势是提供一模一样的API,只是底下实现到TPU或者GPU,在表达能力上是一个更纯粹的Python的表达能力。

 现在深度学习研究里的一个问题是模型学习能力比较低效,大量数据进去,出来的学习能力近几年遇到一些瓶颈,模型在逐渐变大。如果接下来想在这个方向有更大突破,在框架上不能支持更灵活表达能力的话,会阻碍AI在这个领域的发展。

 比如像TensorFlow之前有一个工作是swift,尝试用swift做成一个完全defensible的语言,PyTorch现在还是有些局限,可以求导的只是在tensor上的操作,更原始的一些Python没有表达能力。框架在接下来几年如果能够把这个做好,是一个更能吸引用户的点。

 第二,觉得从research到production的过渡,框架如何在这上帮助用户更好的过渡,也是非常重要的。从生态上来说,从研究到落地,一个商业模式向盈利,然后反哺商业上去推动研究,这个过程是很重要的。

 接下来框架上比较重要的两个点,一个是表达能力更趋向于完完整整可导的语言,第二个是从研究到落地怎么能更快速。

 第一个点从技术上是比较清楚的,第二个点不是特别理解,更多是流水线的问题?还是框架内部问题?

 这是比较复杂的问题,一个是从框架层面如何做到跟现有的生产系统更好的整合,这是第一点。第二点,光从框架本身来说,比如像PyTorch有做这样的工作,直接解析Python代码,然后到一个图表示,这是其中一小步,可以看出来这个东西目前还没有完全做到用户无痛的转换,有很大的发展空间,可以被不断完善。

 另外一点,在设计上,无论是框架还是系统,落地对不同公司不同案例是完全不一样的。比如之前在Facebook,工作负载是非常大的,可能只要优化1%,也能省很多台机器。但是对于更小规模的用量或者用户来说,所谓的部署是有一个模型,现在已经训练好了要上线,用量大部分可能达不到Facebook、谷歌或者阿里那么大,对来说想更快上线,而不是花一个月时间再优化这个pipeline。所以今天先上线,但是假设一个月内有没有机会朝性能更加高的方向去过渡,这个体验也是很重要的。

 一个新框架,要想脱颖而出的话是一定要有创新,框架研发里面人才非常非常关键,做过研究,知道创新通常不是堆钱、堆人就能必然发生的,有的时候是有偶然性的,还有一些是可能发生在少数人身上。

 所以对于国内框架来说,很多人参与、很多厂家参与是一个好事,从多个角度来做,成功率就会提高。

 具体到技术上有什么可做的,认为在效率上有很多可做的点。一个是在宏观层面,怎么解决网络墙的问题。还有一个是在微观层面,现在有很多学者、公司在研究自动代码生成,用数学的逻辑描述这个运算是什么,然后能自动生成GPU或CPU上最快的,这个很活跃,觉得这是一个非常挑战的问题。

 在这方面肯定不是专家。先从产品角度来说,产品吸引用户的话往往要有些亮点,一个框架一定程度上是个产品,那用户或者客户是谁呢?

 最大用户是开发者,开发者追求的是易用,尤其在训练方面,易用框架的生态会建立得非常快。如果做到易用,需要做到哪些东西?对前沿算法的新结构支持得比较好,比如图神经网络或者新的骨干结构刚出来,框架就有人去做了。性能反而在前期对开发者来说不是那么在乎,因为大家在训练上更关注开发的效率,更少关注的是硬件成本或者其。

 但对推理部署来说,在实际的生产业务系统里,大家追求的是性能。因为推理业务尤其对一个大企业来说,部署量非常大的,假如能够把性能做好,做5个百分点能节省5%的硬件成本,这其实是非常大的收益。

 大家对于训练和推理这两个维度的关注是不一样的,未来训练和推理会慢慢的分开,比如训练侧重于通用,推理眼前类似融合到TensorRP或者其东西里面。并且从技术上来说,训练往往是逐层的,推理往往要做各种层融合优化,所以觉得训练和推理可能会有两个框架,只要对于做产品来说,把某一方面做得很好,就会有人用。

 但这里有一个问题,生态的起源往往是起源于训练,所以怎么把训练好的模型在推理框架上更好的执行,可能中间会有一些新的挑战。

 另外,觉得在终端现在有不一样的需求,大家从创业角度,在终端做个专门的框架或者引擎会有价值,因为终端的产品和形态差异化特别大,导致现在终端的人在开发AI应用是苦不堪言。

 理解无论是训练、推理还是终端,会有分出来的需求,这些需求导致往下发展的话会有分支,分支完了以后对开发者是一个很友好的事,不知道未来会不会“天下合久必分,分久必合”,反正对做芯片的人来说,是希望这些框架都合在一起,不需要支持那么多框架。

 想法是最终回归到价值上来。因为旷视有自己的技术信仰、价值务实,最终还要回到做框架,做技术创新,这是个功能,还是真正给用户带来什么?

 用户有两类,一类是研究者,一类是研发者,在旷视公司能够知道深度学习从产品到落地有多少环节、多少困难,做这个框架是为了自己更好,希望经验帮助更多人,也是出于这样的观点。

 如果从现状来看,深度学习框架在价值维度上有三点:

 第一点,希望更快,性能肯定是大家非常关注的一点,性能意味着成本,意味着更好更大的模型,意味着更多、更好的商业机会。

 第二点是灵活与易用,希望支持更多模型,支持更多范式,把更新技术尝试引进,而不是一个僵化的体系。

 第三点,更规范。现在看到深度学习硬件设施雨后春笋般的蹦出来,包括寒武纪等等都在做一些事情,这里面蕴涵着大量的机会,在超越摩尔定律的状况下做事情,为什么不更广泛的使用,使得技术在各种芯片上跑起来,让大家都有机会成长起来。

 从现状来看,这三点是衡量当前价值的点。觉得在这方面,不管是大框架、小框架,是大公司还是小公司,谁能提供value,谁就能够有机会,而不是一个垄断的行业。

 对于未来的看法,充满不确定性,现在回过头来看产业基础,并不是那么扎实。比如深度网络,会对框架有怎样的需求和冲击,这是不知道的,现在的框架并没有很好的利用这样的变化。

 要关心大的生态环境,是坚定的人类命运共同体的拥护者,坚决反对自己造原则。大家要从大局去考虑,然后选择好的点去往前推。假设都做开源的话,到最后是没有差异的。虽然是开源,但还是可以服务用户的,所以保护生态系统,保持开放性、前瞻性和活力是最要紧的。从小的点来看,作为动力去打磨、去造轮子,因为自己走过这个路,不觉得是非常好的路线。

 Keras看法是怎样?本身挺有威胁的,但作为真正能用的框架还是差很多。

 非常同意Keras是一个innovation,个人也非常赞赏创新。提到框架现在是在互相学习、互相进步的过程。有些用户为什么喜欢Keras,比如有人提到一点是能自动bach,Keras是现存框架做得最完善的。PyTorch也会加入这个功能,最早PyTorch有尝试过,只不过没有意识到这个功能对用户很重要,对Pytorch也是很好的。

 提到Keras作为真正能用的框架还是差很多。跟Keras团队也有交流,想法是PyTorch在dataload这块已经做得很好,Pytorch也有很好的交互,没必要再做这个事情。到Keras官网去看,会教如何用PyTorch的dataload,然后用Keras定义,训练完怎么交互,框架间这种融合能够工作迸发出新的创新。

 对深度学习编译器如TVM、XLA的看法,以及与框架的区别和联系?

 现在这些深度学习编译器,TVM确实做得非常不错,让更多框架能够运用到更多硬件上,华为的框架也有相当大部分代码是基于TVM开发的,TVM作为深度学习编译器是非常不错的,XLA是用于TensorFlow的编译器,PyTorch好像也在对XLA进行移植和支持,这两个深度编译器都挺不错的,就看应用的硬件是什么,现在回传的芯片都可以跑在TVM上,如果运行Google的TUP的话可能在XLA上性能比较好一点。

 编译器与框架面向的对象也是有区别的,比如深度学习编译器更多用户是开发框架的,对硬件有一定的了解,但用TensorFlow的更多是深度学习的用户,从使用者角度是判断编译器和深度学习框架的最大区别。

 早期编译器都是藏在框架项目的,但现在编译器本身的工作越来越完整了,就是基于编译器,也做了自动求导、子图优化,也都有Python接口,所以现在编译器和框架之间界限越来越模糊了,比如TVM,几乎就是一个新的框架了,所以现在严格区分框架和编译器好像比较困难,几乎是一回事了。

以前比较有名的框架慢慢被大公司收购,要么消失了,是不是小公司不适合搞开源框架?

感觉在开源社区里能成长起来,开源社区是非常公正公平的,是英雄不问出处。看到大公司做事情也不一定成功,同时小团队做事也有可能成功。对这点,持不同看法,只要创新性够,产品竞争力够,被开发者认可还是有机会的。

 

posted @ 2020-07-03 15:50  吴建明wujianming  阅读(1033)  评论(0编辑  收藏  举报