|EN

您的位置:主页 > 技术洞见 >

TensorFlow、PyTorch之后,“国产”AI框架还有没有机会?

技术洞见 / 2020-08-16 20:56


​出品 | AI科技大本营(ID:rgznai100)

 

众所周知,在机器学习框架领域,PyTorch、TensorFlow已分别成为目前学界和业界使用最广泛的两大实力玩家,而紧随其后的Keras、MXNet等框架也由于其自身的独特性受到开发者的喜爱。 

 

2020年上半年,数个“国产”AI框架渐次宣布开源,讨论的热度一直在持续。很多人想知道,在已有成熟的AI框架并拥有完整生态的情况下,中国企业和机构是否有必要再另造一套框架,自研AI框架的价值在哪里?底层技术创新和市场发展的空间有多大?

 

近日,在“2020北京智源大会”AI框架专题论坛上,以下来自学界和业界的专家在论坛上对AI框架的现状和发展情况做出了专业解读。

 

 

主持人:陈文光,清华大学教授,智源学者

 

嘉宾:

胡事民,清华大学教授(编者注:其团队推出深度学习框架“计图”)

张峥,亚马逊云服务(AWS)上海AI研究院,上海纽约大学教授(学术休假),曾同他人提出图神经网络框架DGL

白俊杰,阿里巴巴(PyTorch和Caffe2的核心开发者)

刘道福,寒武纪副总裁

田忠博,旷视研究院高级技术总监(天元开源框架项目负责人)

袁进辉,一流科技CEO(其公司研发OneFlow框架)

董豪,北京大学前沿计算中心(曾主导开源TensorLayer 

 

以下为对话内容,AI科技大本营(ID:rgznai100)整理,内容有删减:

 

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

 

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

 

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

 

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

 

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

 

张峥:对,现在缺失这一点。

 

胡事民:刚才张老师讲了他的观点,侧重于方法和模型上更重要,这个观点也是对的。但是今天讲框架问题,我们想说为什么框架重要,怎么能在框架上有所超越,这是今天讨论的要点。

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

白俊杰:在编程框架的接下来可以创新或者值得突破的地方,我个人觉得会有两点。第一点是从第一代的caffe,到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,谁就能够有机会,而不是一个垄断的行业。

 

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

 

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

 

文光老是举spark的例子,我觉得这点很重要,学校可以静下心来做,但是有几个前提,伯克利做系统的人都很强,都是好手,非常耐心,咱们中国这边是比较急功近利。

 

张峥:俊杰对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的TPU的话可能在XLA上性能比较好一点。

 

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

 

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

 

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

 

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

 

 

 

END



导航菜单
首页
产品
开发者
新闻事件
关于我们
联系我们