本博文将最后的讲解和学习有关于的Paddle的核心框架的分享。并且有关于的Paddle的学习就暂时告一段落。后期本人将更多的在与深度学习的原理和利用Paddle开发自己的深度学习模型作为分享。飞桨开源框架(PaddlePaddle)是一个易用、高效、灵活、可扩展的深度学习框架。你可参考飞桨框架的 Github 了解详情,也可阅读 版本说明 了解2.0版本的特性。使用教程分为如下的模块:
-
整体介绍 : 飞桨框架2.0新特性的介绍与飞桨框架2.0升级指南的说明。
-
模型开发 : 飞桨框架2.0模型开发全流程说明。
-
模型可视化 : 介绍如何用VisualDL实现飞桨框架模型的可视化。
-
动态图转静态图 : 介绍飞桨框架动态图转静态图的方法。
-
预测部署 : 介绍如何使用训练好的模型进行预测。
-
分布式训练 : 介绍如何使用分布式进行训练。
-
昆仑XPU芯片运行飞桨 : 介绍如何在昆仑XPU芯片环境上安装和使用飞桨。
-
自定义算子 : 介绍飞桨框架自定义算子的方法。
-
参与开发 : 介绍如何参与飞桨框架的开发。
-
其他说明 : 飞桨框架的其他说明文档。
当完成了快速上手的任务后,下面这些模块会阐述如何用飞桨框架2.0,实现深度学习过程中的每一步。具体包括:
-
数据集定义与加载 : 飞桨框架数据加载的方式,主要为
paddle.io.Dataset + paddle.io.DataLoader
,以及飞桨内置数据集的介绍。 -
数据预处理 : 飞桨框架数据预处理的方法,主要是
paddle.vision.transform.*
。 -
模型组网 : 飞桨框架组网API的介绍,主要是
paddle.nn.*
,然后是飞桨框架组网方式的介绍,即 Sequential 的组网与 SubClass 的组网。 -
训练与预测 : 飞桨框架训练与预测的方法,有两种方式,一种是使用高层API
paddle.Model
封装模型,然后调用model.fit()、model.evaluate()、model.predict()
完成模型的训练与预测;另一种是用基础API完成模型的训练与预测,也就是对高层API的拆解。 -
资源配置 : 飞桨框架在单机单卡、单机多卡的场景下完成模型的训练与预测。
-
自定义指标 : 飞桨框架自定义指标的方法,主要包含自定义Loss、自定义Metric与自定义Callback。
-
模型的加载与保存 : 飞桨框架模型的加载与保存体系介绍。
-
模型转ONNX协议 : 飞桨框架模型转换为ONNX格式介绍。
- VisualDL 工具简介
- VisualDL 使用指南
动态图有诸多优点,包括易用的接口,Python风格的编程体验,友好的debug交互机制等。在动态图模式下,代码是按照我们编写的顺序依次执行。这种机制更符合Python程序员的习 惯,可以很方便地将大脑中的想法快速地转化为实际代码,也更容易调试。但在性能方面, Python执行开销较大,与C++有一定差距。因此在工业界的许多部署场景中(如大型推荐系统、移动端)都倾向于直接使用C++来提速。
相比动态图,静态图在部署方面更具有性能的优势。静态图程序在编译执行时,先搭建模型 的神经网络结构,然后再对神经网络执行计算操作。预先搭建好的神经网络可以脱离Python依赖,在C++端被重新解析执行,而且拥有整体网络结构也能进行一些网络结构的优化。
动态图代码更易编写和debug,但在部署性能上,静态图更具优势。因此我们新增了动态图转静态图的功能,支持用户依然使用动态图编写组网代码。PaddlePaddle会对用户代码进行 分析,自动转换为静态图网络结构,兼顾了动态图易用性和静态图部署性能两方面优势。
我们在以下链接介绍PaddlePaddle动态图转静态图的各个部分:
-
基本用法 : 介绍了动态图转静态图的基本使用方法
-
内部架构原理 :介绍了动态图转静态图的架构原理
-
支持语法列表 :介绍了动态图转静态图支持的语法以及罗列不支持的语法写法
-
InputSpec功能介绍 :介绍了动态图转静态图指定输入InputSpec的功能和用法
-
报错信息处理 :介绍了动态图转静态图的报错信息处理方法
-
调试方法 :介绍了动态图转静态图支持的调试方法
作为飞桨生态重要的一部分,飞桨提供了多个推理产品,完整承接深度学习模型应用的最后一公里。整体上分,推理产品主要包括如下子产品
名称
英文表示
适用场景
飞桨原生推理库
Paddle Inference
高性能服务器端、云端推理
飞桨服务化推理框架
Paddle Serving
自动服务、模型管理等高阶功能
飞桨轻量化推理引擎
Paddle Lite
移动端、物联网等
飞桨前端推理引擎
Paddle.js
浏览器中推理、小程序等
各产品在推理生态中的关系如下
用户使用飞桨推理产品的工作流 如下
-
获取一个飞桨的推理模型,其中有两种方法
-
利用飞桨训练得到一个推理模型
-
用 X2Paddle 工具从第三方框架(比如 TensorFlow 或者 Caffe 等)产出的模型转化
-
-
(可选)对模型进行进一步优化, PaddleSlim 工具可以对模型进行压缩,量化,裁剪等工作,显著提升模型执行的速度性能,降低资源消耗
-
将模型部署到具体的推理产品上
您可以通过以下内容,了解飞桨分布式训练的特性和使用指南:
-
分布式训练快速开始 : 使用飞桨框架快速开始分布式训练。
-
使用FleetAPI进行分布式训练 : 使用飞桨框架FleetAPI完成分布式训练。
百度昆仑AI计算处理器(Baidu KUNLUN AI Computing Processor)是百度集十年AI产业技术实践于2019年推出的全功能AI芯片。基于自主研发的先进XPU架构,为云端和边缘端的人工智能业务而设计。 百度昆仑与飞桨及其他国产软硬件强强组合,打造一个全面领先的国产化AI技术生态,部署和应用于诸多 “人工智能+“的行业领域,包括智能云和高性能计算,智慧制造、智慧城市和安防等。更多昆仑XPU芯片详情及技术指标请 点击这里 。 参考以下内容可快速了解和体验昆仑XPU芯片上运行飞桨:
-
飞桨对昆仑XPU芯片的支持 : 飞桨支持昆仑XPU芯片运行
-
飞桨框架昆仑xpu版安装说明 : 飞桨框架昆仑xpu版安装说明
-
飞桨框架昆仑XPU版训练示例 : 飞桨框架昆仑XPU版训练示例
本部分将指导您如何在飞桨中新增算子(Operator,简称Op),也包括一些必要的注意事项
-
自定义原生算子
-
原生算子开发注意事项
-
自定义Python算子(静态图)
-
自定义外部算子(新)
-
自定义外部算子(旧)
- 本地开发指南
- 提交PR注意事项
- FAQ
您可以通过以下内容,了解更多飞桨框架的说明:
-
飞桨硬件支持 : 说明飞桨产品支持的硬件。
-
飞桨框架API映射表 : 说明飞桨框架1.X版本与飞桨框架2.0版本API对应关系。