从手机中常被调戏的语音助手,到家里自动播报天气的智能音箱,到仓库内高效搬运货物的机器人,人工智能事实上已经“活跃”在生活和工作的方方面面。
在大众语境中,人工智能是“灵丹妙药”,原本笨拙的计算机软件程序加上它,似乎就变得智能起来。但事实上,“人工智能”只是一个笼统的概念,真正起作用的,其实是人工智能领域的一个具体技术方法——深度学习。
站在如今的时间节点回溯这场生产力变革,深度学习以及深度学习框架的重要性,再怎么强调也不为过。
深度学习是什么?深度学习框架又有什么用?
回顾人工智能的发展,每一次方法论的迭代都是为解决先前方法的问题。
20 世纪 80、90 年代,人工智能的实现方法是“模式识别”。这种方法需要专家为每一个问题编写出一个专门的程序,效率并不高。
(模式识别中,一个字符 “3” 的图像被划分为 16 个子块)
90 年代初,科学家们开始意识到一种更有效地构建模式识别算法的方法,那就是用数据去替换专家。收集大量的数据,然后人工提取数据特征,接着“喂”给计算机,计算机学习数据中的规律,形成一个算法——这种人工智能方法叫做“机器学习”。
在解决简单任务时,机器学习简单有效,但如果涉及数据量大的复杂任务,主要依靠人工提取特征的机器学习就难以胜任了。
为了弥补机器学习的短板,科学家们参考人类大脑的神经网络,在机器学习的基础上,打造了深度学习方法。
深度学习的特征提取并不依靠人工,而是交给了机器,相比机器学习极大提升了效率,人工智能行业这才有了蓬勃发展。
如果以从属关系来看,机器学习是人工智能的一种具体实现方法,而深度学习则是机器学习的一个技术分支。
虽然人工神经网络和生物神经网络只是在结构上相似,在工作机制上没有太多相同之处,但深度学习很多算法中依然包含“神经网络”这个词,比如经典的卷积神经网络(CNN)和循环神经网络(RNN)。
卷积神经网络被普遍应用在图片识别领域,如你手机相册里的人脸分类。循环神经网络则是机器翻译准确率大大提升的功臣。
从深奥的神经网络,到手机相册人脸分类这样实际生产应用,深度学习技术的落地过程涉及到多个不同的步骤和工具。
如果从头开始设计一个神经网络模型,需要开发人员对底层技术非常了解。这相当于把很多对深度学习感兴趣的开发者和公司拒之门外。
即使开发者对深度学习底层技术了如指掌,从零开始设计神经网络结构的耗时通常按周和月计,容易让人失去耐心。
因此,有的公司和科研机构就底层语言和重要的神经网络模型进行了封装,“打包”给开发者使用。开发者不必太过操心底层的技术,只需要通过调用顶层的 API 就可以应用深度学习神经网络。
这种封装了底层语言和重要模型的工具,被称之为“深度学习框架”。好比你要炒一盘菜,不会从研究怎么制造锅或铲开始,而是直接拿现成的用。对于打造一个深度学习应用,数据相当于食材,算法相当于菜谱,而深度学习框架就类似于锅和铲了。
有业内人士如此形容深度学习框架的重要性:在人工智能时代,深度学习框架就是人工智能时代的“操作系统”,起到了承上启下的作用,上承各种业务模型、行业应用,下接芯片、大型计算机系统。
简而言之,深度学习是一把利刃,但没有辅助工具,很少人会用。借助深度学习框架这个工具,采用这把利刃的门槛大大降低,用的人多了,才有了如今的人工智能浪潮。
缺失国产深度学习框架,和缺少芯片一样是 “卡脖子” 问题
深度学习框架的竞争,已经成为人工智能竞赛的制高点。世界范围内,市场主流的开源深度学习框架大多数是国外厂商或机构主导,比如 Google 的 TensorFlow 和 Facebook 的 PyTorch 占据了大部分市场份额。
在中国,开发者也高度依赖国外的开源框架。2019 年 7 月,长江商学院经济学教授许成钢在一堂课上给出了一个数据,几乎 93% 的中国研究者使用的人工智能开源软件包,是美国的机构开发提供的。
这无疑是一个不好的信号,高度依赖国外的开源深度学习框架相当于被“卡住了脖子”。
近几年,中国人工智能应用领域发展非常迅猛,但这更多得益于庞大用户量产生的数据红利。深度学习框架好比人工智能产业的地基,纵使盖出了再高的楼,没有自己的地基,也有非常大的崩塌风险。
类似的情况已经在芯片领域发生。2015 年,国防科技大学主导的超级计算机 “天河二号”,因英特尔至强处理器断供,打断了原定升级计划。被 “卡住脖子” 的天河二号,在 2018 年借助中国自研的 Matrix-2000 加速卡才完成升级。
2019 年,华为海思总裁一份致员工信广为传播:多年前,公司做出了极限生存的假设,预计有一天,所有美国的先进芯片和技术将不可获得。为了这个以为永远不会发生的假设,数千海思儿女为公司的生存打造 “备胎”。今天,曾经打造的备胎,一夜之间全部转 “正”!
在深度学习框架领域,也有必要做出类似华为海思这样的极限生存假设:如果有一天 TensorFlow 这些国外的深度学习框架不再开源,中国的人工智能开发者有什么替代方案?
“卡脖子” 问题的新答案:旷视将开源深度学习框架 MegEngine
事实上,不少中国企业都意识到了这个问题,也交出了解决方案。比如百度的 Paddle Paddle 和华为的 MindSpore。
有业内人士透露,很快人工智能开发者又有多一个选择:旷视将于 3 月底开源其人工智能算法平台 Brain++ 的核心深度学习框架——MegEngine,主要面向高校师生、传统产业和中小企业的 AI 开发者。
相比大部分深度学习框架,MegEngine 特别针对计算机视觉进行深度优化,不仅支持大规模分布式训练,且兼容 Pytorch、学习成本低。在旷视内部,MegEngine 主要就是用于计算机视觉领域的开发。据旷视研发同学称,即便是新同学不到 1 个月就可以快速上手。
在架构上,MegEngine 共分为“计算引擎”、“运行时管理”、“编译和优化”、以及“编程和表示”四个层级。
计算引擎以 MegDNN 为核心,发挥计算作用。MegDNN 是一个基于异构架构,有着统一交互方法的内核,可以根据设备本身启发式地选择最优内核,也可以让用户自己选择最适合的内核进行计算。
运行时管理层包括两个模块,分别是内核调度和内存管理和优化两大模块。在内存管理和优化模块中,MegEngine 采用了动态、静态内存分配并存的方式,因此可同时支持动态图和静态图模式。
而在编译层和优化层,MegEngine 使用了基于计算图的编译和优化方法。
事实上,2013 年推出的 Caffe 采用了配置文件方式表达网络结构,在当时已经难以满足开发一些大型神经网络的需要。后来,TensorFlow 2015 年发布时,采用了计算图的方式,很好适应了大型神经网络开发的发展。而值得一提的是,MegEngine 在 2014 年开发之初,也采用了计算图的方式。
(TensorFlow 的计算图)
MegEngine 最顶层的编程和表示层,支持高级编程语言(如 Python),方便用户交互,一方面更容易上手,另一方面使新算法移植更便捷。
随着旷视业务的发展,旷视 MegEngine 也在不断进化,比如引进 AutoML 技术。AutoML 全称是 Automated Machine Learning(自动机器学习),核心理念是让算法来训练算法,最大程度减少人力。
在旷视的规划中,研究院最想做的事情是构建一个三位一体的人工智能算法平台,能够为开发者们提供端到端的解决方案和高效的开发体验。从 2014 年写下 MegEngine 的第一行代码开始,这项意义非凡的工作就开始了。
旷视首席科学家和研究院院长孙剑在一次公开演讲中表示:“我们做深度学习框架的时候还没有 TensorFlow,而我们自己的第一版出来之后 TensorFlow 才发布。当时 TensorFlow 不算很成熟,所以一直用自己的开发工具和平台。”
随着研发的拓展,MegEngine 经历了 8 版迭代。同时旷视在核心的深度学习框架上发展出了自有的技术生态,MegEngine 演进成了 Brain++——一个涵盖了深度学习算法开发的所有环节的人工智能算法平台,针对数据管理,算力调度和深度学习训练框架,分别构建了三个组成部分:MegData(数据管理平台)、MegCompute(深度学习云计算平台 )和即将开源的 MegEngine(深度学习框架)。
对于旷视来说,Brain++ 对底层研发的支持就是解决了企业核心生产力的问题,这个端到端的开发工具让旷视能够规模化实现算法创新。也正是借助 Brain++ 这个自研的人工智能算法平台,成立十年的旷视取得了领先业界的成绩。
学术领域,Brain++ 帮助旷视获得了 27 个世界级的人工智能竞赛冠军,其中包括 2017 年至 2019 年拿下 COCO 三连冠。COCO 是人工智能领域最具影响力的通用物体检测挑战赛,在计算机视觉领域享有很高声誉。
产业方面,旷视依靠 Brain++ 布局了个人物联网、城市物联网和供应链物联网三个领域。每个领域,旷视都扎得足够深入。
比如,在个人物联网领域,Face++ 已经是人脸识别领域的行业标杆。在供应链物联网领域,旷视的客户心怡科技,借助 Brain++,实现双 11 当天拆零出仓八万多箱货物,刷新了单仓机器人集群作业的行业记录。
在学术和产业端都证明了自身价值后,Brain++ 也获得了国家的认可。2019 年 8 月,科技部宣布依托旷视建设 “图像感知国家新一代人工智能开放创新平台”,而这一开放创新平台的核心,正是 Brain++。同年 10 月,Brain++ 在世界互联网大会上被授予 “世界互联网领先科技成果”。
回到 MegEngine,一个已经在学术界和产业界都证明了自己实力的深度学习框架,在 3 月底开源给业界使用,无疑是重大利好。面对“如果国外深度学习框架不再开源”这个假设,中国的人工智能开发者已经无需担心。