致谢:感谢贾扬清,他耐心地回答了我的数百个问题,使这篇文章成为可能。
(一)躲躲藏藏的宽阔
在人工智能(AI)的江湖,常听人言:得框架者,得天下。
谁主宰AI模型的生产自动化,谁最有可能主宰AI工业化。所以,深度学习框架是科技巨头兵家必争之地。
深度学习框架属于AI框架,是AI底层技术,而AI技术创新早已深入底层。没有什么道路可以通往底层技术创新,底层技术创新本身就是道路。
这条路,是隐秘的,深度学习框架作为AI系统软件,走近前去,才不断惊叹它那种躲躲藏藏的宽阔;走进前去,才不断惊叹战壕密布,战马喧腾。
低垂的果实已摘光,那些只消小打小闹(对人工智能模型做一些小调整,扩大人工智能模型的规模)就能刷论文、刷面子、刷一切的日子,一去不复返了。
从历史中得到的唯一教训,就是从未从历史中得到教训。而人工智能算法不同,偏偏擅长从历史中“得(学)到(习)”。
回顾从前,多款深度学习框架,待时而出,常听人言:为什么,这个深度学习框架受人追捧,那个深度学习框架遭人嫌弃?
贾扬清认为:“这背后是AI需求和设计逻辑的变化。”
像深度学习框架这样的计算机系统软件,大型项目经验被极客们追奉为信仰,而贾扬清是开源软件深度学习框架Caffe,Caffe2的作者,是谷歌深度学习框架TensorFlow的核心作者之一,亲手写了ONNX第一版代码。
一位技术大神可以是一个深度学习框架的作者,很难是全球流行深度学习框架的作者,极难成为多款全球大流行的深度学习框架的作者。
伸手一数,这个年龄段,这个履历表,放眼全球,除了贾扬清,很难找到第二人。
(二)一时,性能是第一需求
车轮破开积水。
开场白,在雨中。撑着伞,边走边聊,贾扬清说:
“对于技术来说,有一句话很重要,Thereisnostupidpeople,onlymisalignedpriority(没有蠢人蠢事,只有搞错了的优先级)。”
深度学习框架的发展是螺旋式,谈论深度学习框架,绕不过它所解决的核心问题。某一段时间内,性能是第一需求;过一段时间,灵活又会变成第一需求。敲黑板,请记住“第一需求”。
搞人工智能,首先气质这块要跟上,手推公式,一面墙写满密密麻麻的公式,顿时身高一米八,气场八米一。
搞人工智能,其次能力这块要跟上,机房里动不动就是计算集群,一台计算机解决不了,一百台计算机合力上。一顿操作猛如虎,效率还在原地杵,那可是饶君掬尽湘江水,难洗今朝满面羞。
搞人工智能,光会数学不够,还要懂计算机,动不动赤手空拳面对一群计算机。虽然不是打群架,但也难敌成千上万张显卡,性能、资源、带宽、访存、大规模分布式系统,一个都不能少,都要搞定。
搞人工智能,不容易。假设一个工程师这样开始一天的工作:在计算机上每实现一个AI算法,都要用机器指令控制庞大的计算机系统,全盘考虑计算机底层资源是如何运转,如何分配的。这还不够乱,后面还有一千台计算机在排长队,看不到队尾那种。
于是,下班给老板写了一封辞职信,来男厕所第二个隔间处领取。
眼瞅着这种困难和复杂至极的情况,真是闻者伤心,听者落泪。往严重里说,运算AI算法和计算机的效率上不去,会拖住全球人工智能产业落地的后腿。
对此,搞深度学习框架那帮人旗帜鲜明地支持AI算法工程师,全神贯注于算法设计和实现,让深度学习框架解决这个痛点。而那些最先解决痛点的,往往是最先遇到痛点的。
年,谷歌公司率先建了一个框架,名叫DistBelief。
谷歌公司擅长计算机系统级软件,它不会放过任何机会。历史反复证明,在计算机系统软件的战场上,谷歌没有输给过任何公司。跑高铁,铺铁轨,跑算法,就要建框架。于是,谷歌建了。
如今谈起DistBelief,仿佛陈年往事。这个谷歌公司的闭源框架,从分步式系统设计的角度看,建得非常好。也有人把DistBelief视为TensorFlow的前身。
虽然最开始设计的时候不是专门为卷积网络设计的,但是,DistBelief给当时非卷积的网络架构提供了很好的设计基础。它的设计原理像大脑,厉害之处在于,那个时候,就能做超大规模的训练,搞定十亿参数。
谷歌浑涵光芒,雄视千*,做大型计算机系统软件,尤为擅长分布式,“大”从来不是问题,就怕不够“大”。
那时候,中国的新浪微博才刚开始走红,不像今天“微博舆论”已是大数据。那些AI训练所使用的数据,像夏汛的河水不断刷新水位线纪录。而那时候的深度学习框架,没有“张量(tensor)”的概念。
曾几何时,张量是物理学家喜欢的概念,但是数学家会说,我不满意物理学家对张量的看法。AI算法开发者说:“只使用,不争论。”
所有的光芒,都需要时间才能被看到。
年,深度学习在语音领域实现了突破,其中没有用到卷积网络。转眼一年后,年12月29日,一篇论文激起千层浪,一个炫酷黑科技大火了,计算机居然会自动找出猫咪图片。
这个AI技术,是谷歌的。让计算机来回答一张图片上的动物是不是猫,答案只有两个,是猫,不是猫。爱猫人士,一片欢腾,人工智能也爱撸猫,看来普通人和高科技的距离,只有一只猫。
猫火了,论文也火了,谷歌也火了一把,只有深度学习框架没有火。
那篇响当当的论文是在DistBelief深度学习框架上做的。那时候,谷歌公司就能自信地漫步在深度学习框架上,用成千上万的CPU核,训练数十亿参数,游刃有余地管理底层技术细节。
喵星人是网红体质,AI也是。
年,AlexNet模型一问世就成了网红,掀起了深度学习在图像识别上的高潮。这个模型有多重要?此后的大约十年内,有无数双渴(想)望(发)真(论)理(文)的眼睛都不停放电,不放过任何一点微小细节,哪怕论文里有些思路已不再适用。
AlexNet模型的背后是图灵奖获得者,杰弗里·辛顿(GeoffreyHinton),论文的两位作者(AlexKrizhevsky和IlyaSutskever)同出一个师门。那一年的国际竞赛上,他们的团队是唯一使用神经网络的团队。
日后从创业到被谷歌收购,一路火花带闪电。
Alex是常见英文名,有战士之意,这个名字的常见程度,类似于中国的“建*”。为了训练模型更顺畅,建*博士AlexKrizhevsky手写了一套深度学习框架,名叫Cuda-Convnet,完全是为了搞科研,顺手而做。
起初,建*博士AlexKrizhevsky搭建了支持快速科研迭代的一套代码,在GPU上快速跑神经网络。随后,用比较简单直接的C/C++代码和手工定义模型格式,不加入太多大工程的抽象和设计,一切按从简于易的思路设计。
草率批评的人会说,很难体系化。建*博士AlexKrizhevsky可能会儒雅地回怼:“奇技淫巧,吾不以为意也。”
深度学习框架Cuda-Convnet的整套代码,是典型的科研代码,大牛才能写出来,缺憾是不重(理)视(睬)工程设计,没有太