PaddlePaddl 于洋 百度

2020-03-01 269浏览

  • 1.PaddlePaddle Towards  a  Deep  Learning  Compiler   于洋   Baidu 
  • 2.
  • 3.
  • 4.
  • 5.于洋   百度资深工程师   百度资深工程师,从事百度深度学习平台PaddlePaddle开发工作。2015年天津 大学硕士毕业。之后加入百度后一直从事深度学习系统的研发,主要负责深度学 习系统的性能优化和功能开发工作。是PaddlePaddle的主要开发人员之一,参与 开发了PaddlePaddle的Fluid模块。   
  • 6.PaddlePaddle历史   开源前   • • 百度内部项目   四年前由徐伟老师发起   • 50+百度内部产品使用   • 获得两次百度百万美元最高奖   开源后   • 2016年9月开源   • 开源后TechLeader  -----  王益   • 新的PythonAPI   • 支持浏览器编程,云端运行   • 深度整合Kubernetes   • 发布PaddlePaddle  Fluid 
  • 7.深度学习框架历史   基于层的深度学习 框架      用Sequence  Of   Layer表示神经网络   基于Op的深度学习框 架     用DAG表示神经网络   命令式编程的深度 学习框架     使用编程语句表示 神经网络   四年前! 两年前! ⺫⽬目前!
  • 8.深度学习框架历史   • • 四年时间,发展出三代深度学习系统   深度学习系统表达能力越来越强   • Sequence  of  Layer   • 适应CNN   • Symbolic  Programming  paradigm   • DAG   • 可以适应RNN,并减少框架核心的代码量   • Symbolic  Programming  paradigm   • Imperative  programming   • 不区分神经网络的配置和执行。   • 神经网络边配置边执行。 
  • 9.Symbolic  神经网络框架的问题   • 缺乏像编程语言般的灵活性   • 举例:   • RNN会按照展开成多份静态网络   • 每份静态的网络只能处理同样形状(Shape)的数据。 
  • 10.PyTorch的命令式编程范式   • 借用了其他编程语言的控制流   • • 好处:    框架本身不用关心If/Else,  While如何实现   问题:   • 无法序列化网络。不能很好的部署、集群并行。   • 性能优化空间小。 
  • 11.编译器的主要模块   Source   Code   Frontend! Common Optimizer! Backend! Machine   Code 
  • 12.PaddlePaddle-Fluid编译器设计思路   MultiGPU Backend! Python! Frontend! Cluster Backend! ProgramDesc! (Nested Block)! FPGA Backend! Other! Language! frontend! …!
  • 13.编译阶段与运行阶段分离   • • 编译阶段描述计算流程   • 编译结果是ProgramDesc   • 类似编程语言中的AST(抽象语法树)   • 设备无关优化在编译阶段完成   不同执行器后端根据设备特性对Program进行优化、运行 
  • 14.Block   • PaddlePaddle-Fluid将计算描述成嵌套的Block,而不是DAG。   编程语⾔言! For, while! If-Else, Switch! 顺序执⾏行! PaddlePaddle! WhileOp! IfElseOp! 指令(Op)序列!
  • 15.RNN  /  Loop 
  • 16.If-else  /  IfElseOp 
  • 17.更强的IfElse/While   • 与PyTorch/DyNet实现动态网络的机制不同,Fluid实现动态的IfElse/ While操作   • 『动态』:    每一个mini-batch中的每条数据的分支都可以不同   • 『高效』:    数据自动基于Batch运行,无补零 
  • 18.PaddlePaddle-Fluid  RNN执行流程   AvgLoss! Loss! Loss! Loss! Loss! Loss! Loss! Loss! Loss! Loss! Loss! FC! FC! FC! FC! FC! FC! FC! FC! FC! FC! RNN! RNN! RNN! RNN! RNN! RNN! RNN! RNN! RNN! RNN!
  • 19.执行器优化:  单设备à多设备   Data! Data! FC! FC! FC! FC! FC! FC! FC! FC! FC! FC! …! …! …! …! …! …! …!
  • 20.执行器优化:  Kernel  Fusion   Op! Op! Fusible! Op! Fused Op! Op! Op! Op!
  • 21.从单机到多机   • 本地训练程序编译出中间结果  `Program`   • 本地训练程序将中间结果上传给集群Master节点   • 集群Master节点将单机`Program`分解变换成集群每个节点需要执行的 程序 
  • 22.从单机到多机   Model Parallelism! Worker! Worker! Worker! Program   Data Parallelism! Local! Master! Program   Program   Laoptop! Worker! Worker! Role=PServer! Role=PServer   Worker! Role=PServer   Worker! Worker! Role=Trainer! Role=Trainer!
  • 23.项目信息   Main  Repo   • • github.com/PaddlePaddle/Paddle   Model  Bank   • • Book   • • Cloud   • github.com/PaddlePaddle/models   github.com/PaddlePaddle/book   • github.com/PaddlePaddle/cloud 
  • 24.