nvidia的RTX-30系列GPU是去年十月初发布的,特别是其中的3090,有24G的显存,可以用来跑通目前几乎所有的深度学习模型。这个是深度学习爱好者,个人能够承担范围内的设备。
现阶段深度学习开发的几种框架:TensorFlow、Keras、PyTorch、MXnet、PaddlePaddle,都使用过。美国对中国技术制裁封锁后,开始对国产的百度PaddlePaddle(简称Paddle)框架技术,更加关注。还参加了一些百度的实战营项目,其中一个是直到2月10号晚上才结束的Paddle2.0高层API实战。
实战营期间,在群里问过paddle2.0是否支持3090,有人回答可以支持,所以昨晚打算了解一下详情,好决定是否购买3090。结果很失望,Paddle2.0官方还未正式支持3090。
目前只有个人发布针对python3.8的兼容版,其他需自己编译
去年12月16日,本人发了微头条《PyTorch 1.7.1与TensorFlow 2.4.0发布,正式支持RTX-30系列显卡,3080、3090显卡终于可以释放算力》。当时的国际上的主流框架已经正式支持RTX-30系列设备,可直到今日,作为国内人工智能框架领航者的Paddle还没有推出官方支持,这令人颇为无奈!
主要人工智能开发框架
人工智能开发框架有很多,上图只是列出了目前仍为主流框架的发展轨迹。框架目前可以分两大类:传统机器学习、深度学习。传统机器学习的框架代表是SciKit-learn,始于2007年Google Summer of Code的项目,最初由David Cournapeau开发,基本囊括了传统算法。2012年开始,深度学习爆发性发展,出现了很多框架,代表性的有:Google的TensorFlow、Facebook的PyTorch、微软的CNTK、百度的PaddlePaddle(简称Paddle)、亚马逊的MXNet。
TensorFlow(简称TF)发布于2015年11月,采用先定义,再运行的静态模型方式,基本是延续了Theano的特征,是2019年前的当之无愧的第一框架。2019年起,学术界的使用率被PyTorch超越,不过由于工业界的大量使用,仍然处于主流地位。
说起TensorFlow,不得不提起Theano和Keras。Theano可以说是最早的深度学习框架,擅长多维数组运算,于2008年推出。是由大名鼎鼎的Yoshua Bengio 和 Ian Goodfellow主导。不过2013年 Ian Goodfellow进入Google,TensorFlow在Google的强势崛起,Theano这个老旧的框架开始走下坡路,2017年Theano宣布停止更新。
至于Keras,可以说是Francois Chollet一个人开发的。发布于2015年3月,早于TensorFlow。其最初是作为Theano的高层封住,便于简单高效使用。Francois Chollet本身就是Google的研发人员,于是Keras v1.1.0开始,默认后端改为TensorFlow,TensorFlow因而插上了一对翅膀。2019 年 6 月发布 TensorFlow 2.0,宣布 Keras 现在是 TensorFlow 的官方高级 API。Keras 2.3.0 发布声明:
Keras 今后将与tf.keras(TensorFlow2.x中的一个包)同步;
今后不再支持除TensorFlow外的后端,这里指的是Theano,CNTK等;
keras新版,将只支持TensorFlow2.x版本。
2017年,Facebook开源了PyTorch框架,从此这个框架开始了飞速发展。2019年,在学术界使用率已经远超TensorFlow,工业界也在不断蚕食TensorFlow的底盘。
PyTorch起源于一个称为Torch的框架,这个框架采用动态模型,是用Lua语言开发。Torch适合卷积网络与循环网络,这些特定吸引着Facebook、Twitter等公司去研究、改进。PyTorch就是用Python语言开发的版本。
PyTorch的一部分,来源于Caffe框架(一个视觉处理库),是贾扬清做课题时开发的。此框架是2013年推出,正好赶上深度学习爆发,再加上不错的性能。曾一度位列深度开发框架第二位,仅次于TensorFlow。贾扬清进入facebook后,还开发了Caffe2,这些都集成进PyTorch中。
由于PyTorch采用python编码习惯方式运行,使用、调试简单,API规划清晰,再加上不错的性能,大量的可选模型,学术界很快上手。而处于研究爆发阶段的深度学习,学术界的选择自然是驱动工业界的选择。因而今天,PyTorch可以说是世界第一深度学习框架。
Google的TensorFlow2.0开始,也全面转向了动态模型,但由于糟糕的API规划与历史版本的兼容问题,使用还是比较麻烦。
PaddlePaddle (PArallel Distributed Deep LEarning)是百度研发的深度学习开发框架,简称Paddle,于2016年开源。基本是跟随Google的脚步,开始采用的也是静态模型。也就是直到2021年2月2.0版推出,主版本1.x一直以静态图为主模式。
通过最近参加百度实战营,Paddle2.0是全面以动态模型为主。过去常用的paddle.fluid包下的api将废弃,这些都是1.x静态图方式的核心api。另外,Paddle2.0也明确了paddle.vision、paddle.text,对位的是pytorch的torch.vision、torch.text包,将视觉、nlp相关的内容独立处理,这样也更有针对性。
另外,paddle的高层api,对标的是Keras的使用方式,用paddle.Model将模型进行封装,大大简化训练、预测等通用操作。
paddle2.0api部分api失效声明
微软是传统的人工智能研发巨头,其推出框架为CNTK。不过CNTK一直不温不火,现在能看到的最新更新时间是2019年4月26日。
github上的最新更新时间
相比TensorFlow与PyTorch的2-3个月就更新一版来看,基本处于停止状态了。
2020年中期,facebook已经将PyTorch Windows版本的维护更新移交给了微软。也就是微软加入了PyTorch阵营,起始维护版本为PyTorch1.6。而且,微软的WSL将加大对GPU计算的支持。
MXNet是由Github上名为DMLC的组织开发,多为大学与研究机构的学生,发起人有李沐、陈天奇等,是一个真正的“散修团体”。由于其特点,追求的是高效、创新,因而MXNet直接使用了动态模型等新特性。在MXNet刚刚完成的时候,听到TensorFlow开源的消息。而后,李沐、Alex、Dave(这两位都是李沐的老师)成立了个小公司,完善MXNet。不久,Dave被Google的Jeff Dean拉去做TF,Alex跑去亚马逊。后来李沐也加入了亚马逊,现成为首席科学家,MXNet现在是亚马逊的官方架构。
MXNet的开发团队,相比TF、PyTorch少得多,更新不是很频繁,推广力度不是很大,最主要的是文档更新等辅助资料不完善。对MXNet的接触,基本都是李沐等发的书《动手学深度学习》开始的。
MXNet采用比较轻的架构,分布、并行实现简单,特别是2017年MXNet 0.11版开始,动态图接口Gluon推出,基本与PyTorch相当。只是现在论文都是PyTorch的代码,还有必要学一个差不多的框架吗?所以也是无奈!
Paddle先是模仿TensorFlow,走的是静态模型的路,现在又模仿PyTorch,走动态模型的路。
MXNet是在PyTorch开源的同年,也就是2017年引入了动态模型。
2019年10月,TensorFlow2.0正式发布,全面转向动态模型。
大势所趋,但直到最近Paddle2.0才全面动态模型,比PyTorch发布整整滞后了3年。
至于RTX-30系列硬件的支持,已经落后了对手2个月,至于什么时候官方支持还不得而知。
如果一个新手买了最新硬件来学习深度学习,他会选择什么框架???只有PyTorch、TensorFlow可选。当然专业些的人员,可以自己下载Paddle源代码,自己编译,修改尝试兼容30系列。但新手能办到吗?况且非官方的编译,不久又会与官方版本出现差异,谁会选择这种学习方法???
百度实战营,讲师经常要讲到晚上11点或更晚,其中一位说到家已经凌晨1点多。百度的开发、运营人员在燃烧着青春,为Paddle的普及进行努力。
另一方面,上手深度学习的人,真正进入人工智能领域时,又会转向其他框架,因为Paddle没有跟上最新的变化。人工智能的竞争,比的就是速度。3年,在目前的人工智能竞争大潮中,已经是落后的太远了!只能说,百度的决策层反应有些慢了。
AlexNet是2012年ImageNet竞赛冠军,包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速。开始了本轮的深度学习热潮。
近年的人工智能兴起,大众了解的是从Google的AlphaGo战胜人类围棋冠军开始,把强化学习与深度学习结合。
Theano的开发者Ian Goodfellow,提出GAN模型,开创了人工智能模拟创新的领域。
2018年底,Google提出NLP领域的预训练模型BERT,提供性能到一个新的水平。百度随后开发了针对中文的预训练模型ERNIE。
2020年,百度推出PP-YOLO,FPS和mAP均超越YOLOv4,施展的是Trick大法。
2020年,DeepMind(Google)公司创建的人工智能系统AlphaFold2,基于图神经网络,是一项里程碑式的成就。该系统使得快速确定新冠病毒(SARS-CoV-2)的蛋白质结构成为可能,就在几个月前,我们还对这种病毒几乎一无所知。
可以看到,百度在AI浪潮里始终处于一个跟随者的状态。我们不能妄自菲薄,百度毕竟是国货。但也不能因为百度是国货,就盲目推崇。
在高新技术的赛道上,我们还是后来者,要用清醒的大脑去思考。技术、项目的定位,如何取舍,要客观一些。比如本月,华为创始人兼CEO任正非公开华为已经启动“南泥湾”计划,也就是指生产自救,包括在煤炭、钢铁、音乐、智慧屏、PC电脑、平板等各个领域的突破。任正非还特别强调,不依靠手机,华为也能存活。这实际是给这两年的5G下了一个判断,因为5G本身的高功耗,高投入,而且还没有适合的应用,传统无线传输的弱点都存在,性价比不高。当美国马斯克的star-link网络开始提供服务的时候,5G的优势将荡然无存,今后的通讯是空间通讯,而不是简单地面基站了。
从百度的网站上可以看到,百度现在大力发展在线教育,提供免费算力,培养Paddle用户。同时,提供大量应用层实例,很多都是学员发布,水平参差不齐。希望能从用户中发现应用案例,找到方向。这里要强调一点的是,目前的人工智能,更懂得发展方向的应该是专业人员,社会上提供的是应用案例。
高科技,只有定位于人类发展的未来目标,才能预先锁定方向。百度如果一味搞跟随战略,最终可能没有自己的核心强项,可能只有应用层的积累。