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

1

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

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

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

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

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

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

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

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

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

2

常见深度学习框架介绍

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

3

百度深度学习框架飞浆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版来阅读。

4

作者简介

莫凡,娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。

扫码关注作者

5

推荐阅读

《飞桨PaddlePaddle深度学习实战》

作者:刘祥龙、杨晴虹、胡晓光、于佃海、白浩杰

深度学习技术及应用国家工程实验室

百度技术学院 组编

书号:978-7-111-66236-5

卖点:

  • 本书由百度官方出品,PaddlePaddle总架构师共同创作。

  • 百度公司CTO王海峰博士作序,张钹院士、李未院士、百度集团副总裁吴甜联袂推荐

  • “内容全面、由浅入深、注重实践”,结合新近PaddlePaddle技术版本,详细讲解了PaddlePaddle的技术和原理,以及如何从零开始快速掌握深度学习。

推荐语:

百度官方出品,百度公司CTO王海峰博士作序,张钹院士、李未院士、百度集团副总裁吴甜联袂推荐!结合新近PaddlePaddle版本,融合大量实践案例,让你从“零基础”到“全精通”,深入掌握深度学习的知识

更多精彩回顾

书讯 | 12月书讯 | 年末上新,好书不断

资讯 | DB-Engines 12月数据库排名:PostgreSQL有望获得「2020年度数据库」荣誉?

书单 | 机器人时代已来!推荐几本机器人学硬核好书

干货 | Python循环语句代码逐行详解:while、for、break和continue

收藏 | 微信第 1 行代码曝光!

上新 | 复杂的密码学也可以人人可懂

赠书 | 【第34期】如何成为一个软件架构师?

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

国产首款——飞桨PaddlePaddle深度学习框架介绍相关推荐

  1. 飞桨PaddlePaddle深度学习实战

    作者:刘祥龙,杨晴虹,胡晓光,于佃海 著 出版社:机械工业出版社 品牌:机工出版 出版时间:2020-09-01 飞桨PaddlePaddle深度学习实战

  2. 百度官方文档Plus版,PaddlePaddle深度学习框架介绍

    作者:木羊同学 来源:华章计算机(hzbook_jsj) 现在深度学习框架不但内卷严重,而且头部效应明显.一提起深度学习框架,首先想到的肯定是Google家的TensorFlow,和Facebook家 ...

  3. 1.3 飞桨开源深度学习平台介绍

    介绍飞桨在行业内的应用情况.产品全景.技术优势,以及飞桨的安装方法和联系方式. 深度学习框架 近年来深度学习在很多机器学习领域都有着非常出色表现,在图像识别.语音识别.自然语言处理.机器人.网络广告投 ...

  4. 飞桨开源深度学习平台介绍

    深度学习框架 近年来深度学习在很多机器学习领域都有着非常出色的表现,在图像识别.语音识别.自然语言处理.机器人.网络广告投放.医学自动诊断和金融等领域有着广泛应用.面对繁多的应用场景,深度学习框架有助 ...

  5. 飞桨PaddlePaddle深度学习七日打卡营结营体会(小白菜只想混算力康康证书)

    我是真的纯纯小白菜了,没法像大佬们一样技术心得体会了... 这是我第一次接触飞桨,第一次报飞桨的打卡营 我就 搞个 纯纯的体验版心得体会?(毕竟我就想看看证书啥样再混个算力 咋上路的 被大佬给我丢了个 ...

  6. AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍

    AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...

  7. 统信 UOS 适配支持百度飞桨 AI 深度学习平台;阿里回应“马云遭印度法院传唤”;fastjson 1.2.73 发布 | 极客头条

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 一分钟 ...

  8. 百度飞桨七日深度学习手势识别

    百度飞桨七日深度学习手势识别,paddlepaddle免费GPU算力,以及很好的封装,对初学者灰常友好~~~~. 下面是其中的手势识别作业,采用LeNet网络,初步感受了调参的魅力(雾

  9. 基于“飞桨”的深度学习智能车

    本文作者:吴东昱,北京钢铁侠科技深度学习算法工程师 前言   我在观察历届智能车竞赛以及教学实验中发现,采用传统视觉算法的视觉智能车只能在特定赛道中行驶,一旦赛道环境改变,必须修改大量的代码才能运行. ...

最新文章

  1. Codeforces 460E Roland and Rose(暴力)
  2. 拒绝枯燥,趣味学python!python基础练习:趣味百题!
  3. 关于《重启人工智能》11条建议的思考
  4. 详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)
  5. linux下tty, ttyn, pts, pty, ttySn, console理解
  6. HDU - 1863-畅通工程(最小生成树)
  7. Matlab小波工具箱的使用2
  8. python运行需要联网吗_基于python分析你的上网行为 看看你平时上网都在干嘛
  9. SVN汉化包安装后,没有出现对应的语言选项问题解决(附SVN1.12.1汉化包下载地址)
  10. 证明指数函数的导数(a^x)`=a^xlna
  11. 华为快应用 阻止事件冒泡
  12. 数据库系统概论(第5版)王珊 详细知识清单 期末复习速成 考前冲刺 面试——(第一篇 基础篇)
  13. Oracle数据库之SQL函数
  14. 大脑的未来将走向何方?《大脑全书》告诉你答案
  15. 文件丢失怎么找回来?恢复文件的方法
  16. 图像处理知多少?准大厂算法工程师30+场秋招后总结的面经问题详解
  17. Excel计算将时间字符串转换为时间格式 年-月-日 时:分:秒 且计算时间差得到 时分秒 格式
  18. 递归算法求n个数字的全排列
  19. “超女民-主”?“画饼充饥”!
  20. 电商导购网站遭淘宝打压 推广成本高成隐患

热门文章

  1. 北京物联展完美收官,拾联诠释“视频+物联网”新时代
  2. echarts Map(地图) 不同区块显示
  3. Java 将字符串以GBK编码格式写入文件
  4. HDU 1166 敌兵布阵(线段树:点更新,区间求和)
  5. Linux桌面环境(桌面系统)比较优缺点
  6. 东莞产品设计、PROE软件自由造型
  7. c语言gps数据处理 6分,程序設計入門——C語言 第8周編程練習 2GPS數據處理(6分)...
  8. 计算机应用类如何投稿,计算机类投稿须知.doc
  9. 声网微信小程序一对一语音通话
  10. linux性能(一):cpu性能指标及工具