作者:木羊同学

来源:华章计算机(hzbook_jsj)

现在深度学习框架不但内卷严重,而且头部效应明显。一提起深度学习框架,首先想到的肯定是Google家的TensorFlow,和Facebook家的PyTorch。究竟排名谁先谁后,还要看你是工业界还是学术界。不过,深度学习框架远不止这两家,只不过,有一些前浪已经镶在墙上,而有一些后浪,同样出自名门,但还在为一个奔涌的机会而不断努力,今天的主角飞桨PaddlePaddle(以下简称“飞桨”)就是其中之一。

01

为什么要使用深度学习框架

飞桨是度娘家推出的深度学习框架,在介绍飞桨之前,我们先来聊聊为什么实现深度学习模型,业界通常都会选择使用现成的深度学习框架。

在深度学习刚刚兴起来的时候,大家对深度学习的热情很高,学习的方法也是五花八门,其中有一种特别提倡动手能力,大概是叫“从零开始实现深度学习模型”。这些方法说起来也不复杂,就是使用大家都很熟悉的Python科学运算库Numpy来实现深度学习所需要的各种部件,譬如说后向传播机制。

说实话,我发现我们这种直男式的程序员,好像天生就有一种怀疑精神,非常不信任第三方代码,非常不情愿使用第三方代码,只要调用了第三方的代码,一旦出了问题,就会产生一种“总有刁民要害朕”的气愤。所以,这种“从零开始实现XXX”的教学一直很受欢迎,大家就像鲁迅先生那篇《孔乙己》里面买黄酒的客人一样,非要看着代码一字字的被敲出来才放心。

但是,在深度学习这里,自己敲的代码用来学习还可以,用在生产环境上可能就有点力不从心了。首先就是质量,深度学习大量使用微分运算,譬如所有模型都必须使用的误差后向传播,这种机制实现代码比较复杂,而且出了问题不容易发现,用在生产环境中很可能会会埋了雷。

其次是效率。深度学习是2012年前后热起来的,也就10年不到的时间,但是,这门技术并非只有10年,历史非常悠久。我们知道,深度学习的前身是名叫“神经网络”的机器学习模型,神经网络的身世相当坎坷,两次攀到巅峰然后跌落低谷,每次都要被雪藏个好几十年,人称“神经网络的寒冬”,上一次还是在上个世纪90年代,被另一款机器学习模型支持向量机打得鼻青脸肿。

那神经网络这几年是因为什么才能王者归来,连名字都换成了霸气侧漏的“深度学习”呢?就是因为硬件能力的提升。现在硬件白菜价了,连跳广场舞的大妈都知道了,只要多买GPU,算力就能蹭蹭蹭地往上冒。当然,如果只是硬件便宜了,改变不了什么。你想想,算力提高是大家一起提高,凭什么就得让你深度学习一家独大呢?不好意思,深度学习模型还真有个和在座各位“不太一样”的地方,这就是模型性能和算力能够呈正相关,简单来说,就是只要算力保持“蹭蹭蹭”,模型性能也能跟着“蹭蹭蹭”。

所以,深度学习模型放在GPU上跑已经成了常规操作,但这就涉及了GPU编程,主要是CUDA,这就又要额外学习相关知识。而且,编写来的代码能用是一回事,把性能优化到极致又是另一回事,优化自身就是一个大坑。

最后是便捷。相信看完上面两个原因,大家的“懒癌”也差不多要发作了,徒手搭建一款完整能用于生产环境的深度学习模型,代价实在是太高了,可谓是费事费力难度大。就算你历尽千辛万苦,真的搭建好一个模型,麻烦又来了——深度学习模型长在处于爆发期,推陈出新特别快,更新又该怎办呢?现在业界常见的做法是构建计算图(Computation Graph),通过计算图能够比较精确地描述深度学习模型所需的各种操作,但是实现起来相当麻烦。

02

常见深度学习框架介绍

怎么办呢?简单,直接用成熟的深度学习框架就好了,不但代码质量有保证,不会因为手残导致奇奇怪怪的错误,而且性能(包括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等等,不过这些基本属于前深度学习时代的深度学习框架,要么是个人要么是小团体开发,有着手撸代码的种种不足,过去主要是研究人员使用,现在已经逐渐退出了历史舞台。

03

百度深度学习框架飞桨PaddlePaddle介绍

度娘家出的飞桨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版本,融合大量实践案例,让你从“零基础”到“全精通”,深入掌握深度学习的知识

更多精彩回顾

书讯 | 1月书讯:Hello 2021! (上)

书讯 | 1月书讯:Hello 2021! (下)

资讯 | TIOBE 1 月编程语言:Python 摘得 2020 年度编程语言!

书单 | 适合的才是最好的,小众数据库黑马不可小觑

干货 | 刚刚拿下「中国AI最高奖」的语音技术,能给我们带来什么?

收藏 | “绿宝书”好在哪?前端大佬们都在推荐

上新 | ECharts开山之作,官方推荐!精心规划适合初学者的ECharts学习路径!

赠书 | 【第39期】打破“打工人”魔咒,RPA 来狙击!

点击阅读全文了解更多AI好书

百度官方文档Plus版,PaddlePaddle深度学习框架介绍相关推荐

  1. 国产首款——飞桨PaddlePaddle深度学习框架介绍

    现在深度学习框架不但内卷严重,而且头部效应明显.一提起深度学习框架,首先想到的肯定是Google家的TensorFlow,和Facebook家的PyTorch.究竟排名谁先谁后,还要看你是工业界还是学 ...

  2. 快讯!Apache ShardingSphere 官方文档 pdf 版已上线

    Apache ShardingSphere 的官方文档 pdf 版已上线,实时更新,与官网保持同步,欢迎大家留存.大家需要注意 pdf 首页的生成时间,以保证获取的 pdf 文档没有过期. 地址如下: ...

  3. Unity3D 官方文档 UGUI总览 可互动组件的介绍

    版本:unity 5.6  语言:C# 总起: 可互动组件包括按钮.复选框.滑块.滚动条等,本身它们是不可见的,但它们内部有可视化组件. 做UI的时候,如果不需要什么特效本身使用onClick.Add ...

  4. 8种主流深度学习框架介绍

    导读:近几年随着深度学习算法的发展,出现了许多深度学习框架.这些框架各有所长,各具特色.常用的开源框架有TensorFlow.Keras.Caffe.PyTorch.Theano.CNTK.MXNet ...

  5. Caffe 深度学习框架介绍

    转自:http://suanfazu.com/t/caffe/281 Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清,目前在Google工作. Caffe是 ...

  6. 人工智能:PyTorch深度学习框架介绍

    目录 1.PyTorch 2.PyTorch常用的工具包 3.PyTorch特点 4.PyTorch不足之处 今天给大家讲解一下PyTorch深度学习框架的一些基础知识,希望对大家理解PyTorch有 ...

  7. OneFlow深度学习框架介绍

    为什么是OneFlow: 分布式训练全新体验,多机多卡如单机单卡一样简单 完美契合一站式平台(k8s + docker) 原生支持超大模型 近零运行时开销.线性加速比 灵活支持多种深度学习编译器 自动 ...

  8. 华为的深度学习框架介绍一下

    华为的深度学习框架是华为公司推出的MindSpore.与其他主流深度学习框架(如TensorFlow和PyTorch)相比,MindSpore具有以下几个特点: 易于使用:MindSpore的API设 ...

  9. pandas官方文档_电影数据轻松学习 Pandas

    还记得刚开始接触 Pandas 的时候,没有找到比较系统的教程,印象最深的是看过别人翻译的官方教程< 10 Minutes to Pandas >,遇到不懂的地方就去官网查查 API,后来 ...

最新文章

  1. Linux避免重复添加,重新封装一个iptables防止规则重复
  2. swift_033(Swift 必备和常用第三方库以及pod使用)
  3. 一般地,我们将计算机指令的集合称为,简述公共关系人员培养的原则。
  4. Oracle SQL语句执行过程
  5. 打印水仙花数oracle,javaScript实现回文数、水仙花数判断和输出斐波那契数列
  6. javascript好文---深入理解定位父级offsetParent及偏移大小
  7. ffmpy3与ffmpeg的简单使用
  8. 单链表(不带头结点)
  9. 华为机试——字符串反转
  10. DelayQueue1.8源码
  11. 哈弗f7带自动泊车吗_中国品牌的全球车型再升级——试驾2020款哈弗F7
  12. vue2 自定义事件 v-model .sync
  13. [收藏]Mysql日期和时间函数
  14. nod32防火墙配置与系统防黑手册
  15. [BJDCTF2020]Mark loves cat
  16. 怎么用Python测网速?
  17. 在delphi 获取特殊目录 SHGetSpecialFolderLocation SHGetPathFromIDList
  18. 网线连接网络有黄色感叹号
  19. 阿里云吴翰清:从技术人转型做产品经理是一种什么样的体验
  20. Python生成excel表格并设置样式

热门文章

  1. cilium插件测试_通过CNI Chaining 为k8s 插上Cilium翅膀
  2. 如何使用Facebook Messenger进行视频通话
  3. QCY T8无线蓝牙耳机连接电脑时无限断连解决办法
  4. 二十. 在ROS系统上实现基于PyTorch YOLO v5的实时物体检测
  5. 纬线和纬度、经线和经度
  6. Java图片操作-裁剪图片
  7. 如何让table表格中td的内容自动换行
  8. 火山引擎入选国内首个《边缘计算产业全景图》
  9. 今日头条、凤凰网封禁咪蒙等帐号:不得转世
  10. V-Suite CORE 2021 - Macro API Documentation 中文