TechDay实录 | 认识PaddlePaddle:更低使用成本、更高开发效率的深度学习框架

导读:

在人工智能时代,各行各业都在尝试利用机器学习/深度学习等前沿技术来解决自身的业务需求,深度学习框架也应运而生。为了继续帮助AI开发者们在深度学习的道路上快速升级,百度PaddlePaddle于2019年重磅启动系列技术公开课“PaddlePaddle TechDay”。

2019年1月5日,第一期活动于北京中关村创业大街百度大脑创新体验中心展开,秉承着“技术为先,应用至上”的理念,百度邀请深度学习技术平台主任工程师胡晓光和高级算法工程师、百度认证布道师胡晓曼作为此次主讲嘉宾,分享PaddlePaddle框架设计原理、实现方式、完整实例等技术点,并结合百度自身AI实践的应用发展,详解PaddlePaddle针对深度学习模型的应用、训练与优化等具体细节。

以下为胡晓光讲师的演讲实录:

2012年,百度开始深度学习的应用,其深度学习框架内部版本可追溯到2013年,到2016年,为了满足开发者的使用需求,百度开源了深度学习平台PaddlePaddle,2018年底,百度又推出了PaddlePaddle Suit,力求框架使用成本越来越低。

如今,各大巨头公司都在进入深度学习领域,那深度学习框架为何如此重要?其实深度学习框架相当于传统的操作系统,起到连接底层硬件和上层应用场景的作用,以此支持各种AI相关的应用,使其与业务结合,实实在在解决业务场景中的问题。例如,通过该框架,可以将底层的CPU、GPU、FPGA、专用AI芯片、手机移动端上的芯片等各类硬件相关隔离并进行管理;在中间层将数据进行组网、训练,进一步得到模型进行预测;在应用层,还可以跟语音、NLP、视觉、推荐等实际场景中的业务进行结合。

可以看到,PaddlePaddle致力于通过输出领先的深度学习技术,赋能各行各业,全方位满足企业级深度学习的应用;同时,PaddlePaddle更加注重用户的开发成本,以最少的时间获得最满意的功能和效果。

支持不同层级开发者需求的PaddlePaddle全功能套件

如上图所示,PaddlePaddle的整体架构主要包含四个层面:核心框架、辅助工具、通用技术方案、服务平台。

核心框架包括:PaddlePaddle训练框架、PaddlePaddleServing(预测)、PaddlePaddle Mobile(移动端手机上可部署),在这个基础框架之上,可以做深度学习相关的工作。

再往上一层,针对深度学习应用的辅助工具包括:Visual DL可视化工具、Auto DL网络自动设计工具、PARL强化学习工具。

通用技术方案上,目前PaddlePaddle主要支持包括文本处理/NLP、CV 、智能推荐相关的三个方向,这三个方向里有大量的模型。

服务平台方面,面向用户实际业务场景,Easy DL无需用户写代码,便可低成本获取定制化服务;此外,还有学习深度学习的平台AI Studio、针对深度学习云服务的Infinity。

PaddlePaddle设计思想

具体到执行流程,通常前端程序是用Python来写的,但实际代码程序是在后端的C++语言环境下实现的,那二者是如何关联起来的呢?

在Python前端,有一个接口可做到前后端的调度,中间还有一个程序ProgramDecs,可进行网络结构的序列化。然后将Programdesc通过接口传给Transpiler,对原始Program做进一步优化,再传给一个新的Programdesc。而在C++后端有一个执行器,这里面对各种各样的Operator进行计算和调用,相当于在CPU上跑的各种指令在这里完成。之后,像梯度或参数等计算结果跑出来后,需要返回预测值,还是通过这个接口再传给Python前端。也就是说,输入数据和返回的结果都是可以在前端完成的。正因如此,整个框架后端是基于C++的,效率也十分高。

执行过程

编译期:定义Program

1.    编译时,用户编写一段python程序,通过调用 Fluid 提供的算子,向一段 Program 中添加变量(Tensor)以及对变量的操作(Operators 或者 Layers)。用户只需要描述核心的前向计算,不需要关心反向计算、分布式下以及异构设备下如何计算。

2.    原始的 Program在平台内部转换为中间描述语言: ProgramDesc。

3.    编译期最重要的一个功能模块是 Transpiler。Transpiler 接受一段 ProgramDesc ,输出一段变化后的 ProgramDesc ,作为后端 Executor 最终需要执行的 Fluid Program

4.    后端 Executor 接受 Transpiler 输出的这段 Program ,依次执行其中的 Operator(可以类比为程序语言中的指令),在执行过程中会为 Operator 创建所需的输入输出并进行管理。

执行期:1.执行Program

2.创建Executor

Fluid中使用fluid.Executor(place)创建Executor,place属性由用户定义,代表程序将在哪里执行。

下例代码表示创建一个Executor,其运行场所在CPU内:

3.运行Executor

Fluid使用Executor.run来运行程序。定义中通过Feed映射获取数据,通过fetch_list获取结果:

官方支持最多模型库——PaddlePaddle Fluid模型库

目前,基于PaddlePaddle框架基础上开发了大量的模型,可以支持像CV、NLP、推荐等各类非常前沿的技术应用。值得一提的是,模型应用有很多已经放在GitHub上开源出来,如果开发者想要进一步尝试PaddlePaddle,除了查看官方文档,也可以在GitHub上快速找到PaddlePaddle最新开源的模型。

目前来看,PaddlePaddle官方支持的模型数量超过其他主流框架,主要包括计算机视觉里的图像分类、目标检测、人脸检测、关键点、OCR识别、语义分割、视频分类,自然语言处理里的中文词法分析、语义匹配、机器翻译,个性化推荐模型,语音识别等。

1.图像分类

 目前网络模型主要朝着两个方向发展:一是越来越深;二是越来越复杂。如AlexNet、VGG、GoogleNet、ResNet、Inception-v4、MobileNet、Dual Path Network、SE-ResNeXt,2012年以来的经典图像识别网络都包含在PaddlePaddle的图像分类模型库里。

2.目标检测 SSD

Single Shot MultiBoxDetector (SSD) 是目标检测领域较新且效果较好的检测算法之一,具有检测速度快且检测精度高的特点。

对比 Faster R-CNN和SSD在GPU上的运行速度和准确率,可以得知,Faster R-CNN的准确率会很高,但跑得速度会慢些;而SSD会快很多,但准确率会低些。

3.人脸检测 PyramidBox

 在图像检测里,人脸检测是比较特殊的,包括人脸拍照、人脸识别解锁,其核心基础都是检测。2018年,百度最新推出的PyramidBox,可以说是迄今最好的人脸算法。除了传统算法之外,重点考虑人脸的上下文特征,可以很好地提升人脸检测的交互率和准确率。

4.语义分割DeepLab V3+、语义实时分割ICNet

目前,用于语义分割的DeepLab V3+模型基于PaddlePaddle得到了实现,并取得了非常好的效果。可以看到,它有一些操作并不是标准的卷积,这意味着有可以针对这些操作进行更深入底层优化的空间。

5.视频分类

 视频分类方法主要包含基于卷积神经网络、基于循环神经网络、或将这两者结合的方法,目前包含Temporal Segment Network(TSN)模型。 

6.中文词法分析(LAC

 中文词法分析(Lexical Analysis of Chinese)是一个联合的词法分析模型,包括中文分词、词性标注、专有名词识别任务。LAC基于一个堆叠的双向GRU结构,在长文本上准确复刻了百度AI开放平台上的词法分析算法。这三个任务可以做一个训练,其效果是非常显著的。 

7.语义匹配 DAM

 在最新发表的“Multi-Turn Response Selection for Chatbotswith Deep Attention Matching Network”论文中指出,主要使用了全局方法的网络结构,可判断全局信息,通过上下文表示句子语义结构,目前已在内部如聊天或对话系统中取得了非常好的效果。

8.机器翻译 Transformer

 从2017年起提出的Transformer现已成为业界机器翻译模型训练的标配。Transformer是一个基于自注意力机制的机器翻译模型,其中不再有RNN或CNN结构,而是完全利用Attention学习语言中的上下文依赖。 

9.个性化推荐模型

 PaddlePaddle对推荐算法的训练提供了完整的支持,并提供了多种模型配置供用户选择,包括:TagSpace、GRU4Rec、SequenceSemanticRetrieval、DeepCTR、Multiview-Simnet。

模型库:

https://github.com/PaddlePaddle/models

总结来讲,PaddlePaddle是一个功能全面而又特别注重实用性的框架,百度在生产环境的打磨使其具备了强大的工业级生产能力,同时从框架的内部设计和实现上注重接口的简洁性和稳定性,并规避了复杂概念和设计的引入,使其降低了PaddlePaddle的开发门槛,对开发者也更加友好。此外,开放出大量支持最新主流的模型库,从而全方位为企业开发者提供帮助,使其可以顺畅地进行上层开发。当前仍处于深度学习研究和应用的持续火热期,深度学习框架及平台在研究界和工业界的需求仍持续增长,百度PaddlePaddle也将随着深度学习在各行各业的广泛应用,持续迭代和更新,为中国开发者和企业提供更强、更贴近需求的服务,我们也欢迎广大开发者和企业加入到百度PaddlePaddle的大家庭当中来,共建深度学习生态,助力AI落地。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容