技术公开课实录飞桨编程指南和特性解读飞

丙酸倍氯米松粉雾剂能不能治白癜风 https://yyk.familydoctor.com.cn/2831/

导读:飞桨(PaddlePaddle)致力于让深度学习技术的创新与应用更简单。为了让更多的开发者了解飞桨的最近技术进展,特别组织了系列技术稿件,视频来源于WaveSummit秋季深度学习开发者峰会上的技术公开课。

本期是由百度飞桨主任架构师为大家带来飞桨编程指南和特性解读,敬请观看。

Thisisamodalwindow.

Themediacouldnotbeloaded,eitherbecausetheserverornetworkfailedorbecausetheformatisnotsupported.

视频关键知识点Notes:

01编程指南

飞桨核心框架整体分为五个部分:模型组网、模型表达与优化、模型训练、以及服务器和移动端的预测部署。飞桨1.6版本,在服务器端增加了C语言的API,同时加强了与模型压缩PaddleSlim、端侧推理引擎PaddleLite的配合。

1.1编程接口API

飞桨在Python层能够调用的API超过一千个。主要分为两类。一类是框架类API,另一类是组网类API。框架类API用来定义执行过程,包括执行器、模型的存取、分布式计算这些整体训练流程的控制API。而组网类的API里面包含重要的基础数据结构、算子、网络层等。

1.2网络结构Program

在飞桨的整个开发过程当中,用Program表示整个网络结构,一个Program里面会包含很多的Block,代表了写程序时的控制流程。Block内部有两类重要的东西,一类就是数据,另一类就是计算。通常所谓的Tensor数据,飞桨统一用Variable来表示,包括各种数据类型。而在Layer里则是各种计算。

02新特性与升级

2.1基础API升级

飞桨在1.6版本升级了很多类型和序列的检查,在一些常用的OP上增加了Tensor输入。在过去飞桨的版本里面,很多OP需要输入一个定义好的数据,这样在组某些网络结构会不够灵活。通过支持Python的输入,现在可以实时计算拿到Python的维度。

2.2面向对象式API

在原生飞桨的API里更多采用了函数制的API,缺点是在定义一层复杂网络后,想要访问变得非常困难。针对这样的问题,飞桨1.6进一步升级了面向对象式的API,Layer可以通过面向对象的方式实现。先做成员的定义,再做成员函数调用,更容易控制中间成员的变量。

2.3动态执行模式

动态执行模式和静态执行模式的组网过程完全相同。区别是需要做整个数据变量的定义,可以实时的拿到数据,有极高的可调试性。

2.4数据异步读取API

飞桨1.6版本之前,数据读取主要采用异步读取PyReader,把计算和数据的IO折叠起来,充分的利用性能。虽然效率比较高,但会调用整个Program,对整个网络结构产生变化。飞桨1.6中增加了DataLoader接口,数据的异步读取而不会改变网络结构,既高效又保证了易用性。

2.5Seq2SeqAPI

在旧版本的飞桨里面,使用标准结构如LSTM、GRU是非常简单的,调用API就可以了。但若想要自定义非标准的结构就会有点困难。在新版本里面,飞桨做了RNNCell的封装,定义了单步计算的过程,可以参考其写出自定义的网络结构,比如加上attention等其他的操作、变换。通过调用RNN循环,得到了整个循环网络的结构。

2.6自定义PythonAPI

飞桨1.6可以自定义的OP,加入到Program里面,作为正常的OP使用。

2.7自定义C++Operator

对于部署到其他的生态环境的场景,飞桨也有C语言自定义C++OP的方式。

2.8预测API

在一些生产环境里面,比如像Java或PHP,实际上调用C++会比较麻烦。飞桨1.6增加了一套C语言的API,可以很容易的将接口集成到Java里面,实现快速的部署。

进入网盘获取视频中的PPT,链接:




转载请注明:http://www.aierlanlan.com/grrz/3204.html