百度官方文档Plus版,PaddlePaddle深度学习框架介绍
↑↑↑点击上方蓝字,回复资料,10个G的惊喜
作者:木羊同学 来源:华章计算机(hzbook_jsj)
现在深度学习框架不但内卷严重,而且头部效应明显。一提起深度学习框架,首先想到的肯定是Google家的TensorFlow,和Facebook家的PyTorch。究竟排名谁先谁后,还要看你是工业界还是学术界。不过,深度学习框架远不止这两家,只不过,有一些前浪已经镶在墙上,而有一些后浪,同样出自名门,但还在为一个奔涌的机会而不断努力,今天的主角飞桨PaddlePaddle(以下简称“飞桨”)就是其中之一。
飞桨是度娘家推出的深度学习框架,在介绍飞桨之前,我们先来聊聊为什么实现深度学习模型,业界通常都会选择使用现成的深度学习框架。
在深度学习刚刚兴起来的时候,大家对深度学习的热情很高,学习的方法也是五花八门,其中有一种特别提倡动手能力,大概是叫“从零开始实现深度学习模型”。这些方法说起来也不复杂,就是使用大家都很熟悉的Python科学运算库Numpy来实现深度学习所需要的各种部件,譬如说后向传播机制。
说实话,我发现我们这种直男式的程序员,好像天生就有一种怀疑精神,非常不信任第三方代码,非常不情愿使用第三方代码,只要调用了第三方的代码,一旦出了问题,就会产生一种“总有刁民要害朕”的气愤。所以,这种“从零开始实现XXX”的教学一直很受欢迎,大家就像鲁迅先生那篇《孔乙己》里面买黄酒的客人一样,非要看着代码一字字的被敲出来才放心。
但是,在深度学习这里,自己敲的代码用来学习还可以,用在生产环境上可能就有点力不从心了。首先就是质量,深度学习大量使用微分运算,譬如所有模型都必须使用的误差后向传播,这种机制实现代码比较复杂,而且出了问题不容易发现,用在生产环境中很可能会会埋了雷。
其次是效率。深度学习是2012年前后热起来的,也就10年不到的时间,但是,这门技术并非只有10年,历史非常悠久。我们知道,深度学习的前身是名叫“神经网络”的机器学习模型,神经网络的身世相当坎坷,两次攀到巅峰然后跌落低谷,每次都要被雪藏个好几十年,人称“神经网络的寒冬”,上一次还是在上个世纪90年代,被另一款机器学习模型支持向量机打得鼻青脸肿。
那神经网络这几年是因为什么才能王者归来,连名字都换成了霸气侧漏的“深度学习”呢?就是因为硬件能力的提升。现在硬件白菜价了,连跳广场舞的大妈都知道了,只要多买GPU,算力就能蹭蹭蹭地往上冒。当然,如果只是硬件便宜了,改变不了什么。你想想,算力提高是大家一起提高,凭什么就得让你深度学习一家独大呢?不好意思,深度学习模型还真有个和在座各位“不太一样”的地方,这就是模型性能和算力能够呈正相关,简单来说,就是只要算力保持“蹭蹭蹭”,模型性能也能跟着“蹭蹭蹭”。
所以,深度学习模型放在GPU上跑已经成了常规操作,但这就涉及了GPU编程,主要是CUDA,这就又要额外学习相关知识。而且,编写来的代码能用是一回事,把性能优化到极致又是另一回事,优化自身就是一个大坑。
最后是便捷。相信看完上面两个原因,大家的“懒癌”也差不多要发作了,徒手搭建一款完整能用于生产环境的深度学习模型,代价实在是太高了,可谓是费事费力难度大。就算你历尽千辛万苦,真的搭建好一个模型,麻烦又来了——深度学习模型长在处于爆发期,推陈出新特别快,更新又该怎办呢?现在业界常见的做法是构建计算图(Computation Graph),通过计算图能够比较精确地描述深度学习模型所需的各种操作,但是实现起来相当麻烦。
怎么办呢?简单,直接用成熟的深度学习框架就好了,不但代码质量有保证,不会因为手残导致奇奇怪怪的错误,而且性能(包括GPU运行和分布并行等的性能)可靠。更重要的是,你使用成熟的深度学习框架,你的精力主要是放在模型搭建上,注意力能够更为集中,而不用耗费在底层编码上面。
目前市面常见的深度学习框架一共有5款,都是由国内外知名互联网公司推出,Google的TensorFlow、Facebook的PyTorch、亚马逊的MXNet、微软的CNTK,以及百度的PaddlePaddle。前面的两款,TensorFlow和PyTorch,是现在深度学习行业的扛把子,就份额来看,目前还是出得最早、工程能力最强的TensorFlow占有优势,不过,从口碑来看的话,一般认为PyTorch从文档到到API设计都要更优雅一些,所以,一般有工业界偏好TensorFlow,而学术界偏好PyTorch的说法。
接下来说说后浪MXNet和CNTK。MXNet给我感觉是款走网红路线的深度学习框架,为什么这么说呢?略有了解的人应该都有这种感觉,别看前面TensorFlow和PyTorch名气很大,一般人想得出来一两个开发者的名字吗?不能,但是一提到MXNet,首先想到的可能不是这款框架能干什么,而是框架的开发者李沐博士。李沐博士水平很高,自带大神光环,不过有意思的是,李沐博士写了一本深度学习的书,教学代码当然用的是自家的MXNet来写,大神写的书肯定很多人找来看,然后Github上就有人放出了Pytorch实现的版本,结果一下成了高星项目。
当然,MXNet也确实很优秀也很努力,只是IT行业很多就是这样,一旦市场被人占了先机,后来者就很难再挤出一席之地。深度学习框架也一样,MXNet知道市场的基本盘已经被TensorFlow和PyTorch分完了,正在尝试另辟蹊径,走模型封装的道路。
至于CNTK,我总感觉巨人微软自从网络时代慢了一步之后,真有点一步慢、步步慢的感觉,我个人是很推崇微软的工程能力的,但是微软推出来的几个蹭热度产品,还真的只是蹭热度,蹭蹭就没有然后了。这次在深度学习时代推出来的CNTK好像也延续了这一风格,发布前后热度挺高,不过据说微软内部对CNTK的态度也是“十动然拒”,给我留下的唯一印象就是支持C#,还有就是可以作为Keras的后端,这几年就再没听过CNTK的消息 。写这篇文章的时候我还专门查了一下,CNTK应该还没停更,不过最新的一次发布已经是2019年了。
当然了,深度学习框架远不止这些,譬如知名度很高的还有Theano、Caffe、Torch等等,不过这些基本属于前深度学习时代的深度学习框架,要么是个人要么是小团体开发,有着手撸代码的种种不足,过去主要是研究人员使用,现在已经逐渐退出了历史舞台。
度娘家出的飞桨PaddlePaddle是首款国产深度学习通用型框架,既然是通用性框架,可以对于张量(Tensor)进行各种操作是最起码的要求,而作为深度学习框架,搭建神经网络所需的卷积、池化等各类单元层、各类激活函数、损失函数等等基本套件,PaddlePaddle也肯定都得有,至于神经网络离不了的后续传播机制已经成了业界标配,PaddlePaddle也必须得支持。总之一句话,如果你了解其它深度学习框架,你就会发现PaddlePaddle在使用层面也是大同小异。
不过,PaddlePaddle想要和TensorFlow、PyTorch相提并论,就一定会面临前面MXNet一样的困境:既然各家功能差不多,写法也区别不大,那为什么我要选择PaddlePaddle,而不直接用霸榜的那两款呢?
我想这个问题同样也深深困扰着PaddlePaddle团队,所以,他们选择做了两样事情。第一样是主打“国产”。现在技术都很强调国产,特别是未来准备大力发展的关键技术,不怕一万就怕万一。当然了,这只是其一,其二是据百度技术学院参与编写的《飞桨PaddlePaddle深度学习实战》介绍,PaddlePaddle对国产的硬件支持良好,超过了TensorFlow和PyTorch。
主打国产是一条新路子,当然,这还远远不够,所以PaddlePaddle同时还选择了做另一件事,这就是前面介绍MXNet也说过的,主打预训练模型。
什么意思呢?深度学习模型现在性能越来越强大,这当然是好事,但是有人喜有人忧。
前面我们说,深度学习框架可以很方便搭建模型,但是,现在深度学习模型性能越来越强大,同时也意味着模型越来越复杂,哪怕是用了深度学习框架,要准确、快速地完成一款模型的搭建也绝非易事。对于一般的用户,最常见的选择就是等大神搭完了丢出来再用,这就比较看运气了。PaddlePaddle就是看到了这点,官方团队就实现了一些经典的和先进的模型,而且已经训练好了参数,你想使用,只是拿出来就可以用了,非常方便。
譬如说目标检测模型YOLOv3,对于一般人来说,光是看懂原理就不太容易了,但是使用了PaddlePaddle以后,事情就要简单很多。PaddlePaddle有一个组件,叫PaddleHub,是飞桨生态下的预训练模型管理工具。通过PaddleHub获取模型非常简单,只要先找到模型的名称,然后安装模型就可以使用了。在PaddleHub中,采用COCO2017数据集训练的YOLOv3模型称为yolov3_coco2017,想要安装这款模型,只需要执行一条命令:
hub install yolov3_coco2017
模型安装完成之后,无需额外操作即可以直接使用,譬如说进行图片预测。对于想要快速了解模型性能,特别是想通过新模型提升产品性能的同学,这套工具还是非常方便的。
想要进一步了解PaddlePaddle以及周边工具使用的同学,推荐阅读《飞桨PaddlePaddle深度学习实战》,这本书是由百度团队和高校专家共同撰写,既有很强的官方背景,又有很高的学术水平。在内容方面,本书是以深度学习的知识点为主线讲述,可以作为深度学习的教材,而在代码实现时则同时给出了两套方案,一套是通过Numpy的手工实现,一套则是通过PaddlePaddle实现,内容一样,所以对比性很强,更容易理解,而且更为系统。我感觉这本书比PaddlePaddle官方入门文档的编排更为合理,阅读体验更为顺畅,而且既然也是百度官方出品,完全可以视作官方入门文档的Plus版来阅读。
作者简介:
莫凡,娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。
作者:刘祥龙 杨晴虹 胡晓光 于佃海 白浩杰
深度学习技术及应用国家工程实验室
百度技术学院 组编
书号:978-7-111-66236-5
卖点:
(1)本书由百度官方出品,PaddlePaddle总架构师共同创作。
(2)百度公司CTO王海峰博士作序,张钹院士、李未院士、百度集团副总裁吴甜联袂推荐
(3)“内容全面、由浅入深、注重实践”,结合新近PaddlePaddle技术版本,详细讲解了PaddlePaddle的技术和原理,以及如何从零开始快速掌握深度学习。
推荐语:百度官方出品,百度公司CTO王海峰博士作序,张钹院士、李未院士、百度集团副总裁吴甜联袂推荐!结合新近PaddlePaddle版本,融合大量实践案例,让你从“零基础”到“全精通”,深入掌握深度学习的知识
也可以加一下老胡的微信 围观朋友圈~~~
推荐阅读
(点击标题可跳转阅读)
老铁,三连支持一下,好吗?↓↓↓