摘要

本博文将最后的讲解和学习有关于的Paddle的核心框架的分享。并且有关于的Paddle的学习就暂时告一段落。后期本人将更多的在与深度学习的原理和利用Paddle开发自己的深度学习模型作为分享。飞桨开源框架(PaddlePaddle)是一个易用、高效、灵活、可扩展的深度学习框架。你可参考飞桨框架的 Github 了解详情,也可阅读 版本说明 了解2.0版本的特性。使用教程分为如下的模块:

一、模型开发

当完成了快速上手的任务后,下面这些模块会阐述如何用飞桨框架2.0,实现深度学习过程中的每一步。具体包括:

  • 数据集定义与加载 : 飞桨框架数据加载的方式,主要为paddle.io.Dataset + paddle.io.DataLoader,以及飞桨内置数据集的介绍。
  • 数据预处理 : 飞桨框架数据预处理的方法,主要是paddle.vision.transform.*
  • 模型组网 : 飞桨框架组网API的介绍,主要是paddle.nn.*,然后是飞桨框架组网方式的介绍,即 Sequential 的组网与 SubClass 的组网。
  • 训练与预测 : 飞桨框架训练与预测的方法,有两种方式,一种是使用高层APIpaddle.Model封装模型,然后调用model.fit()、model.evaluate()、model.predict()完成模型的训练与预测;另一种是用基础API完成模型的训练与预测,也就是对高层API的拆解。
  • 资源配置 : 飞桨框架在单机单卡、单机多卡的场景下完成模型的训练与预测。
  • 自定义指标 : 飞桨框架自定义指标的方法,主要包含自定义Loss、自定义Metric与自定义Callback。
  • 模型的加载与保存 : 飞桨框架模型的加载与保存体系介绍。
  • 模型转ONNX协议 : 飞桨框架模型转换为ONNX格式介绍。

二、VisualDL 工具

三、动态图转静态图

动态图有诸多优点,包括易用的接口,Python风格的编程体验,友好的debug交互机制等。在动态图模式下,代码是按照我们编写的顺序依次执行。这种机制更符合Python程序员的习 惯,可以很方便地将大脑中的想法快速地转化为实际代码,也更容易调试。但在性能方面, Python执行开销较大,与C++有一定差距。因此在工业界的许多部署场景中(如大型推荐系统、移动端)都倾向于直接使用C++来提速。

相比动态图,静态图在部署方面更具有性能的优势。静态图程序在编译执行时,先搭建模型 的神经网络结构,然后再对神经网络执行计算操作。预先搭建好的神经网络可以脱离Python依赖,在C++端被重新解析执行,而且拥有整体网络结构也能进行一些网络结构的优化。

动态图代码更易编写和debug,但在部署性能上,静态图更具优势。因此我们新增了动态图转静态图的功能,支持用户依然使用动态图编写组网代码。PaddlePaddle会对用户代码进行 分析,自动转换为静态图网络结构,兼顾了动态图易用性和静态图部署性能两方面优势。

我们在以下链接介绍PaddlePaddle动态图转静态图的各个部分:

四、推理部署

作为飞桨生态重要的一部分,飞桨提供了多个推理产品,完整承接深度学习模型应用的最后一公里。整体上分,推理产品主要包括如下子产品

名称

英文表示

适用场景

飞桨原生推理库

Paddle Inference

高性能服务器端、云端推理

飞桨服务化推理框架

Paddle Serving

自动服务、模型管理等高阶功能

飞桨轻量化推理引擎

Paddle Lite

移动端、物联网等

飞桨前端推理引擎

Paddle.js

浏览器中推理、小程序等

各产品在推理生态中的关系如下

深度学习平台——Paddle核心框架介绍_组网

用户使用飞桨推理产品的工作流 如下

  1. 获取一个飞桨的推理模型,其中有两种方法
  1. 利用飞桨训练得到一个推理模型
  2. 用 X2Paddle 工具从第三方框架(比如 TensorFlow 或者 Caffe 等)产出的模型转化
  1. (可选)对模型进行进一步优化, PaddleSlim 工具可以对模型进行压缩,量化,裁剪等工作,显著提升模型执行的速度性能,降低资源消耗
  2. 将模型部署到具体的推理产品上

五、分布式训练

您可以通过以下内容,了解飞桨分布式训练的特性和使用指南:

六、昆仑XPU芯片运行飞桨

百度昆仑AI计算处理器(Baidu KUNLUN AI Computing Processor)是百度集十年AI产业技术实践于2019年推出的全功能AI芯片。基于自主研发的先进XPU架构,为云端和边缘端的人工智能业务而设计。 百度昆仑与飞桨及其他国产软硬件强强组合,打造一个全面领先的国产化AI技术生态,部署和应用于诸多 “人工智能+“的行业领域,包括智能云和高性能计算,智慧制造、智慧城市和安防等。更多昆仑XPU芯片详情及技术指标请 点击这里 。 参考以下内容可快速了解和体验昆仑XPU芯片上运行飞桨:

七、自定义算子

本部分将指导您如何在飞桨中新增算子(Operator,简称Op),也包括一些必要的注意事项

八、参与开发

其他说明

您可以通过以下内容,了解更多飞桨框架的说明:

博文参考