深科普:认识飞桨

胡说成理 2021-05-05 22:45:13

文/当下君

图片/来源网络

无论是最近在上海车展引发轰动的百度Apollo自动驾驶技术,还是荣获2020世界人工智能大会最高荣誉SAIL奖、在全球GLUE新排名中以90.9的分数再登榜首的百度文心ERNIE、抑或是你每天都在使用的小度助手,其实身后都有一个坚实的支撑,那就是飞桨。

更准确的说,是飞桨深度学习框架支撑下的深度学习。

当然,即使如此描述,对于大多人来说,“深度学习框架”仍然是一个太技术化的表达,它因何出生、为何存在、能做什么,其实就是这篇小文想传达的信息。

当然,也有很多人对“飞桨”这个词感到好奇,认为指的是“飞机的螺旋桨”,其实,对于“最像文科生的理科生”的百度来说,公司名称固然来自宋词里的“众里寻他千百度”,深度学习框架的名称其实也来自于宋代文人朱熹的“闻说双飞桨,翩然下广津”,“飞桨”直意其实是“很快的快船”,表达了人们希望借助飞桨助推AI走得更快更远的梦想。

这样一说,你是否对飞桨开始有了兴趣呢?

01为中国智能产业革命而生

A何为深度学习

要了解何为“深度学习框架”,就必须要解释何为“深度学习”。

这本身是一个巨大的挑战,比如,在李开复博士的《人工智能》一书中,尽管使用了大量的譬喻和图表,也用了足足6页共12面纸的篇幅,来试图让普通读者了解何为“深度学习”,可见这是一个多么难以阐释的概念。

还是举个例子吧,如果我们要在街头寻找流浪猫——通常有两个办法:

方法之一,是设定“何为流浪猫”的具体条件,而且越细越好,比如“体型瘦弱”、”毛发凌乱”“身上带伤”等,为了精准识别,可能还要设定“毛发长度超过多少mm就算凌乱”等颗粒度越来越细的规则,直到规则可以覆盖大多数识别条件。

用这个方法训练出的算法,最大的瓶颈在于要人为设定足够多的规则和标注足够多的数据,才能尽量让结果精准。

方法之二,是不设定“何为流浪猫”的具体条件,让计算机自己去识别,系统只会告诉计算机“识别对了”或“错了”,那么在无数次的试错后,系统就会通过算法自己沉淀一套经验,即“选择什么样的特征是对的”,从而让机器自己去学习和创造“流浪猫的特征是什么”的规则。

△何为流浪猫

随着数据的不断累加,识别率会越来越精准;更重要的是,这个过程不是人为设定规则来进行的,是机器“自己在学”,这就是“深度学习”,更符合我们人类的学习习惯。

这个譬喻,对专业人士绝对谈不上准确,但是大致可以让人们对深度学习有个相对明确的感知。

在人工智能的发展历史上,深度学习的起源可以追溯到好几十年前,比如深度学习的核心计算模型——人工神经网络概念的诞生(1943年),甚至比通用计算机的出现(1946年)更早……经过无数天才的完善,2006年深度学习大师杰弗里.辛顿用一篇名为《一种深度置信网络的快速学习算法》宣告了深度学习浪潮的掀起,2010年后,随着算法、算力以及广泛的实践,深度学习被认为是目前实现人工智能的最主要的路径之一。

让机器具备智能的道路有千万条,深度学习绝不是唯一的一条,但却是目前走的人最多、趟的最远的一条路。也可以说,在被新的革命性范式替代之前,深度学习,是我们目前大规模建设智能社会的必由之路。

B百度为什么要做深度学习框架?

大家都知道,计算机编程的产品是“程序”,深度学习工作的产品是“模型”,其实“模型”就是一种程序,创造AI能力的过程就是一种编程。

比如,绝大多数人都知道,人类最早的编程语言是“机器语言”,就是用带有小孔的纸带来编写程序,让计算机开始工作的。

但这样带来的一个问题就是,使用机器语言的门槛高、难度大。

笔者曾经采访过物理学家杨振宁教授,他回忆过一个很有趣的细节,上世纪50年代他有机会使用IBM的大型计算机进行理论物理研究,但随即发现使用机器语言来编程实在是太难了,为此他不得不发明一种专门给自己的语言。

△物理学家·杨振宁教授

换句话说,一种生产工具是否能够流行,主要取决于它是否能提高工作效率。

在深度学习的早期,使用者大都是真正的高级研究人员,他们可以自己直接编写深度学习模型。然而,尽管如此,这些聪明人仍然发现,每个深度学习模型的编写,都需要做大量的重复性工作,写无数重复的代码。

因此,这些研究者为了提高工作效率,就把编写深度学习模型的几个必要过程,逐个提炼出来,然后把前人的研究成果不断的沉淀在其中,使得后来人可以直接调用某些成果,从而大幅度的降低了编写深度学习模型的门槛。

这些模块的组合过程中,渐渐产生了一个相对稳定、通用程度相对高的“最优组合”,这就是我们所说的“深度学习框架”。

而随着历史的演进,网上就出现了不同的框架。随着时间的推移,最为好用的几个框架被大量的人使用,从而流行了起来,全世界最为流行的深度学习框架有PaddlePaddle(飞桨)、Tensorflow、PyTorch、Caffe、Theano、MXNet、Torch等,前三者号称三大主流框架。

于是这里面就涉及一个问题,为什么全世界最主流的三个框架——PaddlePaddle(来自百度)、Tensorflow(来自谷歌)、PyTorch(来自Facebook)都是来自于巨头企业,而不是科研院所或小公司呢?

简单说,开发一个深度学习框架并不难,但要开发一个能让世界范围内开发者广泛使用的产业级深度学习框架,需要投入的人力和资源是极其巨大的,而且还需要海量的数据和强大的算力基础,后者更是大公司优势非常集中的领域。

接下来说一点关于飞桨的问题,大家可能注意到,飞桨对外开源的时间是2016年。

这一年发生了什么呢?对AI行业来说,最重要的就是阿尔法Go战胜李世石,掀起了全球对于人工智能的第三波浪潮,而且,和上世纪60年代和90年代的两波浪潮相比,这一波浪潮有了算力、基础设施和应用场景的支持,是最接近于走入工业界,彻底改变数字世界运行规则的一次。

△阿尔法Go大战李世石

而深度学习框架被认为在AI领域的重要性,就相当于PC时代的操作系统。

从微观角度来看,对于百度这样量级的企业,通过开源框架牢牢吸引开发者,在自身平台上不断产生生态效应,孕育未来的AI时代现象级产品与应用,是建立AI生态型企业的必由之路。

而从宏观角度来看,在飞桨出现之前,中国的AI界在深度学习框架方面应用的基本都是舶来品。

而就在飞桨开源后不到1年的时间,国务院印发了《新一代人工智能发展框架》,明确提出在2030年中国要成为世界主要人工智能创新中心。

对于这一目标,飞桨就是基石和土壤,而且,绝不是一块贫瘠的土壤。

在深度学习模型开发、训练、预测和部署等方面,飞桨已可比肩TensorFlow、PyTorch等国际主流框架,并在多项技术上有优于后者的表现,而且,在中国市场范围来看,PaddlePaddle有三个突出优势。

第一,飞桨拥有唯一提供适用中文文档与数据集的开发全栈服务;

第二,飞桨的后发优势,使得其模型库、开发套件、工具集甚至包括低代码开发工具都是最全的,这个对降低开发难度的价值极大;

第三,也是我们后面还要着重讲到的是,飞桨是基于在中国的千行百业中的产业实践而诞生的,它从基因上和中国的智能化浪潮是同源的,也能够更直接的适配中国的AI产业实践。

今天的飞桨,已经深深扎根于产业环境和开发生态当中,并且和产业形成了良性互动,开发者面对的问题,就是飞桨立刻会去解决的问题。

因此,中国需要有自己的AI创新基础,有庞大的中国AI产业与开发集群,这些产业和开发者都需要适用于本土的框架体系,也自然会被飞桨的社区氛围吸引。

这些年,中国的建设以前所未见的速度进行,这也是中国之所以被称作“基建狂魔”的原因。

而在AI时代,中国同样也是“基建狂魔”,只不过这里的“基建”,已经成了“新基建”,中国已经错过了历史上三次工业革命,显然,“新基建”将帮助我们在第四次工业革命开始的时候,成为赛道里的头部选手。

在过去30年里,中国制造解决了中国经济总量进入世界前列的问题,但在今天,传统制造业的“动能”已经开始减退,我们迫切需要改造千行百业,不但升级制造业,也通过通讯、AI与计算底层设施等的建造,更新整个社会的技术底座。

以深度学习为代表的第三代AI技术,是中国引领第四次工业革命的重要推力,而飞桨则是这一切的基石之一,未来的产业智能应用,需要高度可用的“操作系统”作为底层算力、算法与行业应用的协同枢纽——因此,无论是今天还是未来,飞桨的战略价值都与中国的发展期待紧密相连。

02深度学习平台的全景图

A深度学习平台里有什么?

在2012年,百度将深度学习技术应用于语音识别、OCR等领域,因为应用了AI技术,百度“在语音识别准确率方面,2012年一年的提升就比过去15年提升的总和还要多,也成为语音产品厚积薄发的最好机会。同样,图像识别技术应用于全网搜索以后,以图搜图的准确率一下子从20%提升到80%”,这两个数字让百度大为振奋。

深度学习的框架说复杂也复杂,说简单也简单,用一张图就可以看明白,但弄懂就需要做些解释。

简单的说,一切深度学习框架的共性,都是降低了开发的门槛,不需要开发者从复杂的神经网络开始编代码,可以根据需要选择模型库已有的模型,再通过训练得到模型参数,当然,开发者也可以在已有模型的基础上增加自己的优化。

平台最底层是被称为“核心框架”的三大件,分别是开发、训练和推理部署,所有的深度学习模型也都包含这三块。

开发最容易理解,其实就是编程。但是又不这么简单,这里涉及两个小概念——动态图和静态图。

不论是动态图还是静态图,它们都属于计算图,本质都是在描述运算流程,过于技术化的差别在这里就不展开了,但可以记住一点,飞桨对于两种模式都支持,还支持一键互转,这对于开发者来说很友好。

开发完成的模型只是一个“半成品”,需要在数据上进行学习,这个过程就叫“训练”,这既是对开发结果的检验,也是机器开始产生“智能”的过程,因为训练的过程,既要关注如何搜索和求解模型参数,又要发现训练数据中的规律,再反向优化模型。

就好像一个设计师设计好了一套衣服,先手工缝纫,打出一些样品,然后找些身形不同的模特来试穿,找到一些共性的问题,然后不断修正样板,使之越来越“合身”。

这个过程是充满挑战的,因为伴随着大量的参数调整,而“调参”被认为是能要开发者半条命的难事儿。

但掌握了调参,更难的等在后面,那就是“模型部署”。

还是延续上面的例子,衣服“打样”是手工的,主要是考虑是否合身、美观,但要是上了生产线,那就是另一个问题——这个模型到底适不适合大规模部署呢?

比如你给衣服设计了铜纽扣,但这个纽扣要安装到服装上特别耗时,还容易脱落,那么它可能就不适合制衣厂的大规模流水线生产,需要临时修改设计,改成塑料扣子。

人工智能模型也是,训练时你使用的是一套专有的硬件环境,但部署时可能是完全不一样的另一套,那这里就有一个问题——如何快速的、正确的把你辛辛苦苦训练得到的模型,部署到实际应用环境中去。

我们在谈到飞桨的时候,有一个词其实很容易被忽略,那就是“产业级”深度学习平台。

深度学习框架本身并不难,一个大学的实验室就可以搞出来一个,但对于真正的产业级部署来说,要求的条件往往非常繁多而且苛刻,比如要适应不同的硬件组合,所以真正的产业级,都有一个硬标准——源于产业实践。

换句话说,只有你参与过千行百业的AI模型部署的实践,见过无数种千奇百怪的硬件组合,最后把和各种情况都能搭配的方案汇集起来,产生一种类似于USB插口“即插即用”的特征,使得让模型上线工作事半功倍,才能叫“产业级”。

飞桨在部署方面,就充分考虑到了这个问题。比如,如果你的模型用于本地的服务器部署,那么Paddle Inference作为飞桨深度学习框架原生的高性能推理库,就可以做到即训即用。

有时候,模型并不部署在本地,而是在云端,飞桨就提供了Paddle Serving部署方案,允许把推理模块放在云服务器上,客户端发出请求,服务端返回推理结果。

还有的情况下,模型是部署在有一定计算能力的硬件如智能手机、智能摄像头上,那飞桨就提供Paddle Lite部署方案,满足高性能、轻量化的部署需求。

前面我们说到了部署,其实这个问题很复杂。如果你用过早期的电脑,你会发现一个问题——每装一个硬件,就要重新装一遍驱动程序。最后,微软的Windows解决了这个问题……怎么解决的呢,其实是用最笨的办法,把市面上所有的主流硬件的驱动程序都搜集起来,装在一个库里,这样你往电脑里添加任何主流硬件,都可以自动安装驱动程序了。

AI模型的开发也有这个问题,因为围绕着提供AI算力这个问题,有各种各样的解决方案,有用CPU的、有GPU的、用专用AI加速芯片的、用手机上集成的超小型AI加速模块的……而一个足够专业的学习框架,就是要重复前面说到的微软干过的事情,把每种主流硬件都找来,一款款的适配,最终可以使得硬件可以高效运行框架上的“算子”。

所谓算子(operator), 简单说来就是进行某种“操作“,比如做一次加法;与之对应的,就是被操作的对象,称之为操作数(operand),两者的结合就是“算法”,算法则是“模型”的核心。

按照最新数据,到2020年,飞桨共携手20多家硬件厂商,适配芯片与IP型号29款。这个数字听起来不高,但是要考虑到每种硬件都要与基础模型库里的数百个模型适配,其实是极大的工作量。

为什么这么说呢?因为适配不是只有一块CPU或GPU就可以,它需要芯片厂商提供专业的团队和工具,而这些团队和工具总是优先提供给开发者多的框架的。所以,飞桨近年来适配硬件的直线上升,是这个框架越来越主流的一种外在表现。

值得一提的还有,在2020年里主动提出要和飞桨适配的,有不少来自国产芯片企业,原因也很简单,他们很担心被迫与某些国际主流的框架脱钩……而在这一刻,飞桨“自主可控”的深层次价值,显露无疑。

总之,开发、训练和部署,飞桨都一以贯之一个宗旨——从服务于实践出发,尽量的适合产业级开发者真正的实战级开发,有效、有用。

B藏满尖端武器的弹药库

深度学习框架存在的终极意义是什么呢?其实就是降低开发的门槛,而要降低这个门槛,有两个办法——第一个是提供各种成熟的模型,让你拿来改改就能用;另一个—-咱们稍后再说。

所以,对于绝大多数不需要关注框架底层的开发者来说,最关心的其实不是我们上面说到的那些,而是关心一个深度学习框架究竟提供多少种模型。

而且,在底层框架上,飞桨提供了基础模型库、端到端开发套件、工具组件以及飞桨企业版AI开发双平台,它们都是围绕开发而提供的“利器”,而且一个比一个具体和聚焦。

这里面的相互关系是怎么样的呢?

基础模型库提供的是最基础的模型,比如面对某个大领域,如NLP(自然语言处理),CV(图像识别),这里面提供的就是最基础、最必要的模型。打个比方说,如果你要开个火锅店,首先你要先去“基础模型库”,选择一个基本模型,这个模型就叫《川菜大全》。

基础模型库上,是飞桨针对AI的某些热门应用门类,在基础模型库之上,更具体、指向性更强的某类模型和开发工具。如果你需要进阶的、更专门的模型,就可以去端到端开发套件里去找,比如,这里面可能可以找到《川菜火锅配料大全》。

而工具组件针对是某些开放式的领域,开发者需要的不是固定的模型,而是某些研发的工具集的组合。这时候,要开火锅店的你,就可以去“工具组件”里转一转,看能不能找到《火锅店经营技巧》、《海底捞服务十四条》之类的参考书。

当然,这个比喻又不免不太严密,但这里可以讲一个数据,基础模型库里有多少模型呢?真的不多,大概是270多种。

是的,飞桨官方支持超过270个的主流算法模型,涵盖计算机视觉、自然语言处理、语音、推荐等多个领域,并且在动态图的训练效率和部署效率方面都有所提升。

也许你会说,太少了吧,不是某某平台都说自己有几十万个模型么?

这里面需要注意的是,飞桨提出的是“基础模型”,也就是最底层、覆盖某一细分领域的“总纲”,而且这些模型都是经过产业实践长期打磨、非常成熟、通用性非常强的;而有些平台说的十几万、几十万个模型,指的是开发者基于这些基础模型之上累计开发过的具体模型。

因此,如果从更广域的角度去看,2020年,飞桨带来了全平台的升级更新,已凝聚265万开发者,基于飞桨平台创建了超过34万个模型;服务企业超10万家,覆盖金融、交通、物流等数十个行业。

△截图自飞桨官网的部分服务行业

这一切都是中国在2030年成为世界级AI创新中心的基础。

03深度学习如何为人所用?

A中国AI人才之困

蓬勃发展的AI产业到底有多少人才缺口,简直是个玄学问题。

由于笔者拿到的各种统计数据口径过于不一致,所以无法给出一个精确数字。但总体来说,在顶级AI人才上,如果美国的单位是“千”,那中国就是“百”;在高级AI人才上,如果美国的单位是“万”,那中国就是“数千”;而在大量基层的AI人才缺口上,中国至少缺少500万人。

无独有偶,4月19日,在博鳌亚洲论坛2021年年会分论坛上,百度CTO王海峰也分享了一个重要观点:“当前人工智能已经开始影响各行各业,我们不可能要求每个行业都有足够多的精通深度学习底层算法的专家,比如飞桨深度学习平台目前已经有260多万名开发者,这些开发者不需要每个人都从第一行人工智能的算法代码开始写起,而是直接调用这些框架”。

△百度CTO王海峰

“应用门槛大幅降低,也会推进人工智能更快地应用,更快地推进产业智能化。”王海峰说。

最后,王海峰还提到,随着人工智能用的越来越广,一方面需要降低门槛,让大家用得更方便,另一方面,百度也制定了AI人才的培养计划,将在5年之内培养500万人使用AI,这个数字与官媒的报道大体一致。

显然,中国AI领域面临的人才缺口,不是一时一地可以解决的,但是,解决方法也是多种多样的。

第一是院校培养。

中国科学院大学在我国高校中率先成立人工智能技术学院,随后,2018年,教育部印发了《高等学校人工智能创新行动计划》,上海交大、南京大学、清华大学、哈尔滨工业大学、南京航空航天大学、南京理工大学、南京邮电大学等相继成立人工智能研究院或学院。

第二是师资培训。

4月24日,来自全国百余所高校的近百名教师齐聚百度,以学生的身份参加2021年首期也是总第十四期全国高校深度学习师资培训班,开启为期四天的 AI 学习旅程。

全国高校深度学习师资培训班由教育部和工业和信息化部指导,百度与国内各大高校联合发起,迄今已培训近2000位教师,共计覆盖500余所高校。

第三是人才实训。

如百度建设了AI Studio学习与实训社区,面向教育和学习场景、集开放数据、开源算法、免费算力于一体,为开发者提供高效易用的学习开发环境、丰富的体系化课程、海量开源实践项目、以及高价值的AI竞赛。目前, AI Studio平台上已累计了70万多开发者、80多万的样例工程和数据集、5000多精品课程内容、70余场AI竞赛,并提供海量免费GPU算力资源。

笔者曾经采访过一些参与师资培训的各大院校的人工智能系的负责人,他们大都表示,AI Studio是他们最感兴趣的,因为其上提供的内容和工具,已经完全可以用来作为一个高校开辟人工智能本科、研究生教学的基础平台,而免费的算力更可以用“慷慨”来形容,他们中的很多人已经在用AI Studio构建教学平台。

△截图自官网·AI Studio

其实,除了师资培训,百度飞桨学院旗舰项目AICA(首席AI架构师培养计划)、飞桨快车道等还面向产业技术人群,提供专项培训,加快培养既懂AI技术又懂业务场景的复合型AI人才。

B飞桨如何降低中国人使用AI的门槛

人才不够,加速培养,是典型的正向思维,但有时候在人才缺口这个问题上,我们也需要“逆向思维”。

打一个比方,早期用计算机处理图片的难度是很高的,需要调整无数的参数。所以,人们发明了Photoshop这样的工具,把所有的绘图功能都集成在一个软件里,而且自带大量的模板,从而使得用计算机绘图变成了一个标准化、容易学习的工作。

然而,Photoshop使用仍然有一定专业门槛……所以更多的人愿意使用“美图秀秀”,后者不用你学习任何专业知识,只需要选择滤镜和照片风格,然后自动生成图片就行。

飞桨深度学习平台,其实也有Photoshop模式和美图秀秀模式可供选择。

对高阶开发来说,Photoshop模式还是主流,因为要涉及的方方面面太多,需要有较强的可调整余地。

但是,Photoshop模式显然更针对于专业场景,而在我们的生产和生活中,其实有大量的场景,可以使用通用化的解决方案,这种情况下是否有可能由完全零算法基础的用户简单几步轻松创建AI模型呢?

飞桨从2017年推出的EasyDL零门槛AI开发平台就是基于这样的思路。

EasyDL通过先进的技术把AI开发这件事情变得像使用家电一样简单,你不必了解家电的内部构造和电路原理,也能享受家电带来的便捷。

由此,飞桨上最年轻的开发者只有6、7岁,这是属于AI时代特有的奇迹。

EasyDL虽然目标是“简单”,但为了达到“简单”,实则需要复杂的技术支持,在“零算法基础”的前提下,无经验或仅仅受过短期培训的开发者,可以运用图像分类、物体检测、图像分割、文字识别、音视频分类、语音识别自训练、表格数据预测、文本分类、情感倾向分析等十余种模型类型完成开发。

除了EasyDL,飞桨企业版里还有BML全功能AI开发平台(Baidu Machine Learning,简称BML),它专为各种不同习惯的开发者匹配了多种模型开发方式与开发环境,开发者可以选择尽可能屏蔽不必要的复杂的底层API,也能够依靠自己的代码能力打造AI模型,同时,在部署问题上最大化减轻开发者的压力。

在文章的最后部分,笔者附上一张飞桨的全景图。

其实,您可不要认为所有的深度学习框架都是如此,可以说,除了底层架构外,丰富的模型库、端到端开发套件、工具组件和EasyDL、BML等开发平台,都是飞桨的特色。

总体上说,飞桨起步的确不是最早的,但正因为如此,也少走了一些弯路;而飞桨最大的区别之处,就在于结合中国的国情,结合中国需要大量、快速开发海量AI模型而人才缺口很大的现实痛点,尽可能的在提供工具、降低门槛上下了很多的功夫,而这是另外的深度学习框架与之有一定差距甚至是极大差距的原因,也是飞桨市场份额迅速上升的根本要素。

其实,对于飞桨这个话题,笔者的兴趣由来已久,本想写一篇3000、4000字的科普小文,但没有想到拉拉杂杂已经写了近万字,还没有介绍完。

其实,这的确是一个硬核科普的硬话题,我之所以愿意啃这块硬骨头,是因为我自己也从来没有找到一篇对深度学习平台做到透彻、深入、又通俗易懂的文章,所以我打算自己来写一篇,就有了这篇作品。

但我发现,这篇文章只是最基本的做到了解释何为飞桨,对于飞桨产生过程中最重要的因素——人,却介绍的很少;对于飞桨普及中惠及的人群、产业,也几乎没有提及;对于飞桨对于中国在AI创新中的地位和价值,也浅尝辄止。

因此我有一个大胆的计划,在近期推出一组把以上问题都说透的系列报道,大概包含5-6篇文章,每篇文章说一个方面,大概5000字为限。我感觉到,如果我的文章能够让多一些的人了解飞桨,多一些的行业、应用场景中的需求者、开发者读到这些文章,从而为中国AI产业能起到添砖加瓦的作用的话,那就实现了我创作的初衷,正所谓——书生报国无它物,唯有手中笔如刀。

0 阅读:1

胡说成理

简介:关于智能时代和智能时代的生意逻辑的小天地。