Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
bce2f8bb
M
models
项目概览
PaddlePaddle
/
models
1 年多 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
bce2f8bb
编写于
1月 13, 2022
作者:
littletomatodonkey
提交者:
GitHub
1月 13, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
polish folder (#5461)
* polish folder * fix pact
上级
f427a987
变更
32
展开全部
隐藏空白更改
内联
并排
Showing
32 changed file
with
2494 addition
and
2191 deletion
+2494
-2191
tutorials/article-implementation/ArticleReproduction_CV.md
tutorials/article-implementation/ArticleReproduction_CV.md
+1037
-0
tutorials/article-implementation/ArticleReproduction_NLP.md
tutorials/article-implementation/ArticleReproduction_NLP.md
+977
-0
tutorials/article-implementation/ArticleReproduction_REC.md
tutorials/article-implementation/ArticleReproduction_REC.md
+102
-0
tutorials/article-implementation/images/framework_reprodcv.png
...ials/article-implementation/images/framework_reprodcv.png
+0
-0
tutorials/tipc/README.md
tutorials/tipc/README.md
+10
-7
tutorials/tipc/images/inference_guide.png
tutorials/tipc/images/inference_guide.png
+0
-0
tutorials/tipc/images/lite_infer_arm_cpu_guide.png
tutorials/tipc/images/lite_infer_arm_cpu_guide.png
+0
-0
tutorials/tipc/images/paddle2onnx_guide.png
tutorials/tipc/images/paddle2onnx_guide.png
+0
-0
tutorials/tipc/images/post_infer_quant_guide.png
tutorials/tipc/images/post_infer_quant_guide.png
+0
-0
tutorials/tipc/images/serving_guide.png
tutorials/tipc/images/serving_guide.png
+0
-0
tutorials/tipc/linux_dcu_train_infer_python/README.md
tutorials/tipc/linux_dcu_train_infer_python/README.md
+1
-1
tutorials/tipc/linux_dcu_train_infer_python/linux_dcu_train_infer_python.md
...ux_dcu_train_infer_python/linux_dcu_train_infer_python.md
+0
-8
tutorials/tipc/linux_dcu_train_infer_python/test_linux_dcu_train_infer_python.md
...u_train_infer_python/test_linux_dcu_train_infer_python.md
+0
-9
tutorials/tipc/lite_infer_cpp_arm_cpu/README.md
tutorials/tipc/lite_infer_cpp_arm_cpu/README.md
+45
-0
tutorials/tipc/lite_infer_cpp_arm_cpu/lite_infer_cpp_arm_cpu.md
...als/tipc/lite_infer_cpp_arm_cpu/lite_infer_cpp_arm_cpu.md
+5
-5
tutorials/tipc/macos_train_infer_python/README.md
tutorials/tipc/macos_train_infer_python/README.md
+0
-1
tutorials/tipc/paddle2onnx/README.md
tutorials/tipc/paddle2onnx/README.md
+50
-2
tutorials/tipc/paddle2onnx/paddle2onnx.md
tutorials/tipc/paddle2onnx/paddle2onnx.md
+13
-3
tutorials/tipc/ptq_infer_python/README.md
tutorials/tipc/ptq_infer_python/README.md
+47
-0
tutorials/tipc/ptq_infer_python/ptq_infer_python.md
tutorials/tipc/ptq_infer_python/ptq_infer_python.md
+2
-2
tutorials/tipc/serving_python/README.md
tutorials/tipc/serving_python/README.md
+49
-0
tutorials/tipc/serving_python/serving_python.md
tutorials/tipc/serving_python/serving_python.md
+18
-15
tutorials/tipc/train_amp_infer_python/README.md
tutorials/tipc/train_amp_infer_python/README.md
+58
-3
tutorials/tipc/train_infer_python/ArticleReproduction_CV.md
tutorials/tipc/train_infer_python/ArticleReproduction_CV.md
+0
-1037
tutorials/tipc/train_infer_python/ArticleReproduction_NLP.md
tutorials/tipc/train_infer_python/ArticleReproduction_NLP.md
+0
-977
tutorials/tipc/train_infer_python/ArticleReproduction_REC.md
tutorials/tipc/train_infer_python/ArticleReproduction_REC.md
+0
-102
tutorials/tipc/train_infer_python/README.md
tutorials/tipc/train_infer_python/README.md
+10
-10
tutorials/tipc/train_infer_python/images/framework_tipc.png
tutorials/tipc/train_infer_python/images/framework_tipc.png
+0
-0
tutorials/tipc/train_infer_python/infer_python.md
tutorials/tipc/train_infer_python/infer_python.md
+1
-1
tutorials/tipc/train_pact_infer_python/README.md
tutorials/tipc/train_pact_infer_python/README.md
+50
-2
tutorials/tipc/train_pact_infer_python/test_train_pact_infer_python.md
...c/train_pact_infer_python/test_train_pact_infer_python.md
+0
-0
tutorials/tipc/train_pact_infer_python/train_pact_infer_python.md
...s/tipc/train_pact_infer_python/train_pact_infer_python.md
+19
-6
未找到文件。
tutorials/article-implementation/ArticleReproduction_CV.md
浏览文件 @
bce2f8bb
此差异已折叠。
点击以展开。
tutorials/article-implementation/ArticleReproduction_NLP.md
浏览文件 @
bce2f8bb
此差异已折叠。
点击以展开。
tutorials/article-implementation/ArticleReproduction_REC.md
浏览文件 @
bce2f8bb
# 论文复现赛指南-推荐方向
> 本文为针对 `推荐` 方向的复现赛指南
>
> 如果希望查阅 `CV` 方向的复现赛指南,可以参考:[CV方向论文复现赛指南](./ArticleReproduction_CV.md)
>
> 如果希望查阅 `NLP` 方向的复现赛指南,可以参考:[NLP方向论文复现赛指南](./ArticleReproduction_NLP.md)
## 目录
-
[
1. 总览
](
#1
)
-
[
1.1 背景
](
#1.1
)
-
[
1.2 前序工作
](
#1.2
)
-
[
2. 整体框图
](
#2
)
-
[
3. 论文复现理论知识
](
#3
)
-
[
4. 论文复现注意事项与FAQ
](
#4
)
-
[
4.1 通用注意事项
](
#4.0
)
-
[
4.2 TIPC基础链条测试接入
](
#4.1
)
<a
name=
"1"
></a>
## 1. 总览
<a
name=
"1.1"
></a>
### 1.1 背景
*
以深度学习为核心的人工智能技术仍在高速发展,通过论文复现,开发者可以获得
*
学习成长:自我能力提升
*
技术积累:对科研或工作有所帮助和启发
*
社区荣誉:成果被开发者广泛使用
<a
name=
"1.2"
></a>
### 1.2 前序工作
基于本指南复现论文过程中,建议开发者准备以下内容。
*
熟悉paddle
*
文档和API
*
80%以上的API在功能上与pytorch相同
*
[
PaddlePaddle文档链接
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/index_cn.html
)
*
[
Pytorch-Paddlepaddle API映射表
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/08_api_mapping/pytorch_api_mapping_cn.html
)
*
[
10分钟快速上手飞浆
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/01_quick_start_cn.html
)
*
数据处理
[
DataLoader
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/io/DataLoader_cn.html
)
*
了解该数据格式。以Criteo数据集为例,该数据包含了13个连续特征和26个离散特征;还有一个标签,点击用1表示,未点击用0表示。
*
准备好训练/验证数据集,用于模型训练与评估
*
准备好fake input data以及label,与模型输入shape、type等保持一致,用于后续模型前向对齐。
*
在对齐模型前向过程中,我们不需要考虑数据集模块等其他模块,此时使用fake data是将模型结构和数据部分解耦非常合适的一种方式。
*
将fake data以文件的形式存储下来,也可以保证PaddlePaddle与参考代码的模型结构输入是完全一致的,更便于排查问题。
*
在该步骤中,以AlexNet为例,生成fake data的脚本可以参考:
[
gen_fake_data.py
](
https://github.com/littletomatodonkey/AlexNet-Prod/blob/master/pipeline/fake_data/gen_fake_data.py
)
。
*
在特定设备(CPU/GPU)上,跑通参考代码的预测过程(前向)以及至少2轮(iteration)迭代过程,保证后续基于PaddlePaddle复现论文过程中可对比。
*
在复现的过程中,只需要将PaddlePaddle的复现代码以及打卡日志上传至github,不能在其中添加参考代码的实现,在验收通过之后,需要删除打卡日志。建议在初期复现的时候,就将复现代码与参考代码分成2个文件夹进行管理。
*
飞桨训推一体认证 (Training and Inference Pipeline Certification, TIPC) 是一个针对飞桨模型的测试工具,方便用户查阅每种模型的训练推理部署打通情况,并可以进行一键测试。论文训练对齐之后,需要为代码接入TIPC基础链条测试文档与代码,关于TIPC基础链条测试接入规范的文档可以参考:
[
链接
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/tipc_test/development_specification_docs/train_infer_python.md
)
。更多内容在
`4.2`
章节部分也会详细说明。
<a
name=
"2"
></a>
## 2. 整体框图
可参考
[
cv部分
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/lwfx/ThesisReproduction_CV.md
)
<a
name=
"3"
></a>
## 3. 论文复现理论知识
可参考
[
cv部分
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/lwfx/ThesisReproduction_CV.md
)
<a
name=
"4"
></a>
## 4. 论文复现注意事项与FAQ
本部分主要总结大家在论文复现赛过程中遇到的问题,如果本章内容没有能够解决你的问题,欢迎给该文档提出优化建议或者给Paddle提
[
ISSUE
](
https://github.com/PaddlePaddle/Paddle/issues/new/choose
)
。
<a
name=
"4.0"
></a>
### 4.1 通用注意事项
*
常见问题和误区
*
不要主动调参,目的是复现而不是提升精度
*
不要加论文中没提到的模型结构
*
数据和指标先行对齐
*
数据集获取
*
PaddleRec提供了大量推荐数据集,可优先从
[
这里查找
](
https://github.com/PaddlePaddle/PaddleRec/tree/master/datasets
)
<a
name=
"4.1"
></a>
### 4.2 TIPC基础链条接入
**【基本流程】**
*
完成模型的训练、导出inference、基于PaddleInference的推理过程的文档与代码。参考链接:
*
[
insightface训练预测使用文档
](
https://github.com/deepinsight/insightface/blob/master/recognition/arcface_paddle/README_cn.md
)
*
[
PaddleInference使用文档
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/inference_cn.html
)
*
[
PaddleRecInference使用文档
](
https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/inference.md
)
*
基于
[
TIPC基础链条测试接入规范
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/tipc_test/development_specification_docs/train_infer_python.md
)
,完成该模型的TIPC基础链条开发以及测试文档/脚本,目录为
`test_tipc`
,测试脚本名称为
`test_train_inference_python.sh`
,该任务中只需要完成
`少量数据训练模型,少量数据预测`
的模式即可,用于测试TIPC流程的模型和少量数据需要放在当前repo中。
**【注意事项】**
*
基础链条测试接入时,只需要验证
`少量数据训练模型,少量数据预测`
的模式,只需要在Linux下验证通过即可。
*
在文档中需要给出一键测试的脚本与使用说明。
*
接入TIPC功能是需安装
[
特定版本paddle
](
https://paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html#python
)
。
**【实战】**
TIPC基础链条测试接入用例可以参考:
[
PaddlRec TIPC基础链条测试开发文档
](
https://github.com/PaddlePaddle/PaddleRec/tree/master/test_tipc
)
,
[
InsightFace-paddle TIPC基础链条测试开发文档
](
https://github.com/deepinsight/insightface/blob/master/recognition/arcface_paddle/test_tipc/readme.md
)
。
**【验收】**
*
TIPC基础链条测试文档清晰,
`test_train_inference_python.sh`
脚本可以成功执行并返回正确结果。
tutorials/
tipc/train_infer_pyth
on/images/framework_reprodcv.png
→
tutorials/
article-implementati
on/images/framework_reprodcv.png
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/README.md
浏览文件 @
bce2f8bb
...
...
@@ -10,27 +10,30 @@
## 2. 不同环境不同训练推理方式的开发文档
-
Linux GPU/CPU 基础训练推理开发文档 (coming soon
)
-
[
Linux GPU/CPU 基础训练推理开发文档
](
./train_infer_python/README.md
)
-
更多训练方式开发文档
-
Linux GPU 多机多卡训练推理开发文档 (coming soon)
-
Linux GPU 混合精度训练推理开发文档 (coming soon
)
-
[
Linux GPU 混合精度训练推理开发文档
](
./train_amp_infer_python/README.md
)
-
更多部署方式开发文档
-
Linux GPU/CPU PYTHON 服务化部署开发文档 (coming soon
)
-
[
Linux GPU/CPU PYTHON 服务化部署开发文档
](
./serving_python/README.md
)
-
Linux GPU/CPU C++ 服务化部署开发文档 (coming soon)
-
Linux GPU/CPU C++ 推理开发文档 (coming soon)
-
Paddle.js 部署开发文档 (coming soon)
-
Paddle2ONNX 开发文档 (coming soon
)
-
ARM CPU 部署开发文档 (coming soon
)
-
[
Paddle2ONNX 开发文档
](
./paddle2onnx/README.md
)
-
[
Lite ARM CPU 部署开发文档
](
./lite_infer_cpp_arm_cpu/README.md
)
-
OpenCL ARM GPU 部署开发文档 (coming soon)
-
Metal ARM GPU 部署开发文档 (coming soon)
-
Jetson 部署开发文档 (coming soon)
-
XPU 部署开发文档 (coming soon)
-
Slim训练部署开发文档
-
[
Linux GPU/CPU PACT量化训练开发文档
](
./train_pact_infer_python/README.md
)
-
[
Linux GPU/CPU 离线量化开发文档
](
./ptq_infer_python/README.md
)
-
更多训练环境开发文档
-
Linux XPU2 基础训练推理开发文档 (coming soon)
-
Linux DCU 基础训练推理开发文档 (coming soon
)
-
[
Linux DCU 基础训练推理开发文档
](
./linux_dcu_train_infer_python/README.md
)
-
Linux NPU 基础训练推理开发文档 (coming soon)
-
Windows GPU 基础训练推理开发文档 (coming soon)
-
macOS CPU 基础训练推理开发文档 (coming soon)
tutorials/tipc/
train_infer_python/images/py_inference_pipelin
e.png
→
tutorials/tipc/
images/inference_guid
e.png
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/images/
paddleliteworkflow
.png
→
tutorials/tipc/images/
lite_infer_arm_cpu_guide
.png
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/
paddle2onnx/images/py2onnx_inference_pipelin
e.png
→
tutorials/tipc/
images/paddle2onnx_guid
e.png
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/images/post_
training
_quant_guide.png
→
tutorials/tipc/images/post_
infer
_quant_guide.png
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/
serving_python/images/serving_deploy_process
.png
→
tutorials/tipc/
images/serving_guide
.png
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/linux_dcu_train_infer_python/README.md
浏览文件 @
bce2f8bb
...
...
@@ -16,7 +16,7 @@ Linux DCU 基础训练推理开发过程主要步骤与[《Linux GPU/CPU 基础
## 2. Linux DCU 基础训练推理功能开发与规范
参考
[
《Linux GPU/CPU 基础训练推理开发》
](
../train_infer_python/README.md
)
。
参考
[
《Linux GPU/CPU 基础训练推理开发
文档
》
](
../train_infer_python/README.md
)
。
<a
name=
"3"
></a>
...
...
tutorials/tipc/linux_dcu_train_infer_python/linux_dcu_train_infer_python.md
已删除
100644 → 0
浏览文件 @
f427a987
# Linux DCU 基础训练推理开发文档
# 目录
-
[
1. 简介
](
#1---
)
-
[
2. Linux DCU 基础训练推理开发文档
](
#2---
)
-
[
3. Linux DCU 高级训练推理开发文档
](
#3---
)
-
[
4. FAQ
](
#4---
)
tutorials/tipc/linux_dcu_train_infer_python/test_linux_dcu_train_infer_python.md
已删除
100644 → 0
浏览文件 @
f427a987
# Linux DCU 基础训练推理测试开发文档
# 目录
-
[
1. 简介
](
#1---
)
-
[
2. Linux DCU 基础训练推理测试开发文档
](
#2---
)
-
[
3. Linux DCU 高级训练推理测试开发文档
](
#3---
)
-
[
4. FAQ
](
#4---
)
tutorials/tipc/lite_infer_cpp_arm_cpu/README.md
浏览文件 @
bce2f8bb
...
...
@@ -9,3 +9,48 @@
-
[
3. Lite ARM CPU 推理测试开发与规范
](
#3
)
-
[
3.1 开发流程
](
#3.1
)
-
[
3.2 核验点
](
#3.2
)
<a
name=
"1"
></a>
## 1. 简介
该系列文档主要介绍飞桨模型基于 Linux ARM CPU 推理开发过程,主要包含2个步骤。
-
步骤一:参考
[
《Lite ARM CPU 推理开发文档》
](
./lite_infer_cpp_arm_cpu.md
)
,完成基于Paddle-Lite的Lite ARM CPU 推理程序开发。
-
步骤二:参考
[
《Lite ARM CPU 推理测试开发文档》
](
./test_lite_infer_cpp_arm_cpu.md
)
,完成Lite ARM CPU 推理测试程序开发。
<a
name=
"2"
></a>
# 2. Lite ARM CPU 推理功能开发与规范
### 2.1 开发流程
Lite ARM CPU 推理开发过程可以分为下面7个步骤。
<div
align=
"center"
>
<img
src=
"../images/lite_infer_arm_cpu_guide.png"
width=
"800"
>
</div>
更多的介绍可以参考:
[
Lite ARM CPU 推理开发文档
](
./lite_infer_cpp_arm_cpu.md
)
。
<a
name=
"2.2"
></a>
### 2.2 核验点
#### 2.2.1 准备推理模型
*
使用Paddle-Lite提供的opt工具进行转换之后,需要生成后缀为
`*.nb`
的推理模型。
#### 2.2.2 验证推理结果正确性
*
对于相同的输入,Lite ARM CPU 推理结果需要与Paddle Inference推理结果相同。
**如果预处理或者后处理部分无法保持一致,导致输出结果有不同,需要给出详细的原因说明**
。
# 3. Lite ARM CPU 推理测试开发与规范
coming soon!
tutorials/tipc/lite_infer_cpp_arm_cpu/lite_infer_cpp_arm_cpu.md
浏览文件 @
bce2f8bb
...
...
@@ -19,7 +19,7 @@
在 ARM CPU 上部署需要使用
[
Paddle Lite
](
https://github.com/PaddlePaddle/Paddle-Lite
)
进行部署,Paddle Lite 是一个轻量级、灵活性强、易于扩展的高性能的深度学习预测框架,它可以支持诸如 ARM、OpenCL 、NPU 等等多种终端,同时拥有强大的图优化及预测加速能力。如果您希望将 Paddle Lite 框架集成到自己的项目中,那么只需要如下几步简单操作即可。
<div
align=
"center"
>
<img
src=
"../images/
paddleliteworkflow.png"
width=
6
00"
>
<img
src=
"../images/
lite_infer_arm_cpu_guide.png"
width=
8
00"
>
</div>
图中的2、7是核验点,需要核验结果正确性。
...
...
@@ -28,15 +28,15 @@
### 2.1 准备推理数据与环境
-
推理环境
开发机器:一台开发机,可以是 x86 linux 或者 Mac 设备。开发机器上需要安装开发环境。
-
推理环境
开发机器:一台开发机,可以是 x86 linux 或者 Mac 设备。开发机器上需要安装开发环境。
推理设备:一台 ARM CPU 设备,可以连接到开发机上。开发板的系统可以是 Android 或 Armlinux。
开发机上安装开发环境以及对推理设备的配置参考
[
mobilenet_v3开发实战
](
../../mobilenetv3_prod/Step6/deploy/lite_infer_cpp_arm_cpu
)
中的
**准备开发环境**
和
**在 Android 手机上部署**
章节。
-
推理数据
-
推理数据
一张可用于推理的
[
图片
](
../../mobilenetv3_prod/Step6/images/demo.jpg
)
和用于前处理的
[
配置文件
](
../../mobilenetv3_prod/Step6/deploy/lite_infer_cpp_arm_cpu/mobilenet_v3/config.txt
)(
可选,和前处理有关
)
以及用于推理结果后处理相关的
[
label
](
../../mobilenetv3_prod/Step6/deploy/lite_infer_cpp_arm_cpu/mobilenet_v3/imagenet1k_label_list.txt
)
文件(可选,跟后处理有关)。
...
...
tutorials/tipc/macos_train_infer_python/README.md
已删除
100644 → 0
浏览文件 @
f427a987
coming soon!
tutorials/tipc/paddle2onnx/README.md
浏览文件 @
bce2f8bb
...
...
@@ -3,9 +3,57 @@
# 目录
-
[
1. 简介
](
#1
)
-
[
2. Paddle2ONNX功能开发与规范
](
#2
)
-
[
2. Paddle2ONNX
功能开发与规范
](
#2
)
-
[
2.1 开发流程
](
#2.1
)
-
[
2.2 核验点
](
#2.2
)
-
[
3. Paddle2ONNX功能测试开发与规范
](
#3
)
-
[
3. Paddle2ONNX
功能测试开发与规范
](
#3
)
-
[
3.1 开发流程
](
#3.1
)
-
[
3.2 核验点
](
#3.2
)
<a
name=
"1"
></a>
## 1. 简介
该系列文档主要介绍 Paddle2ONNX 推理开发过程,主要包含2个步骤。
-
步骤一:参考
[
《Paddle2ONNX 功能开发文档》
](
./paddle2onnx.md
)
,完成Paddle2ONNX 推理程序开发。
-
步骤二:参考
[
《Paddle2ONNX 功能测试开发文档》
](
./test_paddle2onnx.md
)
,完成Paddle2ONNX 推理测试程序开发。
<a
name=
"2"
></a>
# 2. Paddle2ONNX 功能开发与规范
<a
name=
"2.1"
></a>
### 2.1 开发流程
Paddle2ONNX 开发过程可以分为下面6个步骤。
<div
align=
"center"
>
<img
src=
"../images/paddle2onnx_guide.png"
width=
"800"
>
</div>
更多的介绍可以参考:
[
Paddle2ONNX 开发文档
](
./paddle2onnx.md
)
。
<a
name=
"2.2"
></a>
### 2.2 核验点
#### 2.2.1 转换模型
*
使用Paddle2ONNX对模型转换成功之后,需要生成后缀为
`*.onnx`
的推理模型。
#### 2.2.2 验证推理结果正确性
*
对于相同的输入,Paddle2ONNX 推理结果需要与Paddle Inference推理结果相同。
<a
name=
"3"
></a>
# 3. Paddle2ONNX 功能测试开发与规范
coming soon!
tutorials/tipc/paddle2onnx/paddle2onnx.md
浏览文件 @
bce2f8bb
...
...
@@ -24,7 +24,7 @@ Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式,算
基于Paddle2ONNX的推理过程可以分为6个步骤,如下图所示。
<div
align=
"center"
>
<img
src=
".
/images/py2onnx_inference_pipelin
e.png"
width=
"600"
>
<img
src=
".
./images/paddle2onnx_guid
e.png"
width=
"600"
>
</div>
其中设置了2个核验点,分别为
...
...
@@ -32,6 +32,7 @@ Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式,算
*
准备推理模型
*
验证推理结果正确性
<a
name=
"2.1"
></a>
### 2.1 准备环境
...
...
@@ -54,6 +55,8 @@ python3 -m pip install paddle2onnx
python3 -m pip install onnxruntime==1.9.0
```
<a
name=
"2.2"
></a>
### 2.2 转换模型
-
Paddle 模型动转静导出
...
...
@@ -64,7 +67,7 @@ python3 -m pip install onnxruntime==1.9.0
**【实战】**
参考MobileNetV3的Paddle2ONNX
[
说明文档
](
../../mobilenetv3_prod/Step6/deploy/onnx_python/README.md
)
中的第2.2章节
参考MobileNetV3的Paddle2ONNX
[
说明文档
](
../../mobilenetv3_prod/Step6/deploy/onnx_python/README.md
)
中的第2.2章节
。
-
ONNX 模型转换
...
...
@@ -98,8 +101,9 @@ paddle2onnx --model_dir=${your_inference_model_dir}
**【核验】**
执行完毕后,将产出${output_file} ONNX 模型文件,其中文件后缀为
.onnx
。
执行完毕后,将产出${output_file} ONNX 模型文件,其中文件后缀为
`.onnx`
。
<a
name=
"2.3"
></a>
### 2.3 开发数据预处理程序
...
...
@@ -109,6 +113,7 @@ paddle2onnx --model_dir=${your_inference_model_dir}
使用ONNX模型进行推理时,使用的数据预处理方法,和使用Paddle Inference进行推理时的预处理方法一样。
<a
name=
"2.4"
></a>
### 2.4 开发ONNX模型推理程序
...
...
@@ -132,12 +137,15 @@ ort_outs = sess.run(output_names=None, input_feed={sess.get_inputs()[0].name: ${
${input_data} 是预处理后的数据,作为网络的输入,数据是ndarray类型。
<a
name=
"2.5"
></a>
### 2.5 开发数据后处理程序
在完成ONNX模型进行推理后,基于不同的任务,需要对网络的输出进行后处理,这部分和使用Paddle Inference进行模型推理后的后处理方法一样。
<a
name=
"2.6"
></a>
### 2.6 验证ONNX推理结果正确性
**【基本内容】**
...
...
@@ -194,6 +202,8 @@ paddlevision 模块位于MobileNetV3_prod/Step6目录下
参考MobileNetV3的Paddle2ONNX
[
说明文档
](
../../mobilenetv3_prod/Step6/deploy/onnx_python/README.md
)
中的第2.3章节
<a
name=
"3"
></a>
## 3. FAQ
如果您在使用该文档完成Paddle模型转ONNX的过程中遇到问题,可以给在
[
这里
](
https://github.com/PaddlePaddle/Paddle2ONNX/issues
)
提一个ISSUE,我们会高优跟进。
tutorials/tipc/ptq_infer_python/README.md
浏览文件 @
bce2f8bb
...
...
@@ -9,3 +9,50 @@
-
[
3. Linux GPU/CPU 离线量化测试开发与规范
](
#3
)
-
[
3.1 开发流程
](
#3.1
)
-
[
3.2 核验点
](
#3.2
)
<a
name=
"1"
></a>
## 1. 简介
该系列文档主要介绍飞桨模型的Linux GPU/CPU离线量化过程,主要包含2个步骤。
-
步骤一:参考
[
《Linux GPU/CPU 离线量化功能开发文档》
](
./ptq_infer_python.md
)
,完成Linux GPU/CPU 离线量化程序开发。
-
步骤二:参考
[
《Linux GPU/CPU 离线量化功能测试开发文档》
](
./test_ptq_infer_python.md
)
,完成Linux GPU/CPU 离线量化测试程序开发。
<a
name=
"2"
></a>
# 2. Linux GPU/CPU 离线量化功能开发与规范
<a
name=
"2.1"
></a>
### 2.1 开发流程
Linux GPU/CPU 离线量化开发过程可以分为下面5个步骤。
<div
align=
"center"
>
<img
src=
"../images/post_infer_quant_guide.png"
width=
"800"
>
</div>
更多的介绍可以参考:
[
Linux GPU/CPU 离线量化功能开发文档
](
./ptq_infer_python.md
)
。
<a
name=
"2.2"
></a>
### 2.2 核验点
#### 2.2.1 准备推理模型
*
如果已经参考
[
模型推理功能开发文档
](
../train_infer_python/infer_python.md
)
,生成Inference模型,那么该核验步骤可以跳过,否则该过程会产出Inference模型,分别包含模型结构(后缀为
`*pdiparams`
)和模型参数文件(后缀为
`*pdmodel`
)。
#### 2.2.2 验证推理结果正确性
*
开发基于量化模型的评估程序,使用Paddle Inference库评估离线量化模型,给出量化模型的精度,确保模型精度符合预期。一般情况下,大模型的精度损失不明显,轻量级模型的精度损失会稍微多一些。
<a
name=
"3"
></a>
# 3. Linux GPU/CPU 离线量化测试开发与规范
coming soon!
tutorials/tipc/ptq_infer_python/ptq_infer_python.md
浏览文件 @
bce2f8bb
...
...
@@ -25,10 +25,10 @@ Paddle中静态离线量化,使用少量校准数据计算量化因子,可
## 2. 离线量化功能开发
Paddle
混合精度训练开发可以分为4
个步骤,如下图所示。
Paddle
离线量化开发可以分为
个步骤,如下图所示。
<div
align=
"center"
>
<img
src=
"../images/post_
training
_quant_guide.png"
width=
"600"
>
<img
src=
"../images/post_
infer
_quant_guide.png"
width=
"600"
>
</div>
其中设置了2个核验点,分别为:
...
...
tutorials/tipc/serving_python/README.md
浏览文件 @
bce2f8bb
...
...
@@ -9,3 +9,52 @@
-
[
3. 服务化部署测试开发与规范
](
#3
)
-
[
3.1 开发流程
](
#3.1
)
-
[
3.2 核验点
](
#3.2
)
<a
name=
"1"
></a>
## 1. 简介
该系列文档主要介绍 Linux GPU/CPU PYTHON 服务化部署开发过程,主要包含2个步骤。
-
步骤一:参考
[
《Linux GPU/CPU PYTHON 服务化部署功能开发文档》
](
./serving_python.md
)
,完成Linux GPU/CPU PYTHON 服务化部署功能开发。
-
步骤二:参考
[
《Linux GPU/CPU PYTHON 服务化部署功能测试开发文档》
](
./test_serving_python.md
)
,完成Linux GPU/CPU PYTHON 服务化部署功能测试开发。
<a
name=
"2"
></a>
## 2. 服务化部署开发规范
<a
name=
"2.1"
></a>
### 2.1 开发流程
Linux GPU/CPU PYTHON 服务化部署功能开发过程以分为下面8个步骤。
<div
align=
"center"
>
<img
src=
"../images/serving_guide.png"
width=
"800"
>
</div>
更多内容请参考:
[
Linux GPU/CPU PYTHON 服务化部署功能开发文档
](
./serving_python.md
)
。
<a
name=
"2.2"
></a>
### 2.2 核验点
在开发过程中,至少需要产出下面的内容。
#### 2.2.1 模型服务部署成功
*
成功启动模型预测服务,并在客户端完成访问,返回结果。
#### 2.2.2 服务化部署结果正确性
*
返回结果与基于Paddle Inference的模型推理结果完全一致。
<a
name=
"3"
></a>
## 3. 服务化部署测试开发规范
coming soon!
tutorials/tipc/serving_python/serving_python.md
浏览文件 @
bce2f8bb
...
...
@@ -30,7 +30,10 @@ Paddle Serving是飞桨开源的**服务化部署**框架,提供了C++ Serving
<a
name=
"2"
></a>
## 2. Paddle Serving服务化部署
Paddle Serving服务化部署主要包括以下步骤:
![
deploy_process
](
./images/serving_deploy_process.png
)
<div
align=
"center"
>
<img
src=
"../images/serving_guide.png"
width=
"800"
>
</div>
其中设置了2个核验点,分别为:
*
启动服务端
...
...
@@ -52,23 +55,23 @@ Paddle Serving服务化部署主要包括以下步骤:
(1)以下安装docker的Paddle Serving环境,CPU/GPU版本二选一即可。
1)docker环境安装(CPU版本)
```
bash
# 拉取并进入 Paddle Serving的 CPU Docker
docker pull paddlepaddle/serving:0.7.0-devel
docker run
-p
9292:9292
--name
test
-dit
paddlepaddle/serving:0.7.0-devel bash
docker
exec
-it
test
bash
```
`
2)docker环境安装(GPU版本)
```bash
# 拉取并进入 Paddle Serving的GPU Docker
docker pull paddlepaddle/serving:0.7.0-cuda10.2-cudnn7-devel
nvidia-docker run -p 9292:9292 --name test -dit paddlepaddle/serving:0.7.0-cuda10.2-cudnn7-devel bash
nvidia-docker exec -it test bash
```
(2)安装Paddle Serving四个安装包,分别是:paddle-serving-server(CPU/GPU版本二选一), paddle-serving-client, paddle-serving-app和paddlepaddle(CPU/GPU版本二选一)。
```bash
...
...
@@ -77,7 +80,7 @@ Paddle Serving服务化部署主要包括以下步骤:
pip3 install paddle-serving-server-gpu==0.7.0.post102 # GPU with CUDA10.2 + TensorRT6
pip3 install paddle-serving-app==0.7.0
#pip3 install paddlepaddle==2.2.1 # CPU
pip3 install paddlepaddle-gpu==2.2.1
pip3 install paddlepaddle-gpu==2.2.1
```
您可能需要使用国内镜像源(例如百度源, 在pip命令中添加`
-i https://mirror.baidu.com/pypi/simple
`)来加速下载。
Paddle Serving Server更多不同运行环境的whl包下载地址,请参考:[下载页面](https://github.com/PaddlePaddle/Serving/blob/v0.7.0/doc/Latest_Packages_CN.md)
...
...
@@ -174,7 +177,7 @@ class MobileNetV3Op(Op):
pass
def postprocess(self, input_dicts, fetch_dict, data_id, log_id):
pass
class MobileNetV3Service(WebService):
def get_pipeline_response(self, read_op):
mobilenetv3_op = MobileNetV3Op(name="imagenet", input_ops=[read_op])
...
...
@@ -218,7 +221,7 @@ import base64
from PIL import Image
import io
from preprocess_ops import ResizeImage, CenterCropImage, NormalizeImage, ToCHW, Compose
```
```
修改MobileNetV3Op中的init_op和preprocess函数相关代码:
```
py
...
...
@@ -227,7 +230,7 @@ class MobileNetV3Op(Op):
self.seq = Compose([
ResizeImage(256), CenterCropImage(224), NormalizeImage(), ToCHW()
])
def preprocess(self, input_dicts, data_id, log_id):
(_, input_dict), = input_dicts.items()
batch_size = len(input_dict.keys())
...
...
@@ -282,7 +285,7 @@ result, None, ""
- OP名称:第14行修改成imagenet
- model_config:与2.4转换后服务化部署模型文件夹路径一致,这里使用默认配置 "./serving_server"
- device_type:使用默认配置1,基于GPU预测;使用参数0,基于CPU预测。
- devices:使用默认配置"0",0号卡预测
- devices:使用默认配置"0",0号卡预测
<a name="2.6"></a>
### 2.6 客户端修改
...
...
@@ -299,7 +302,7 @@ result, None, ""
```
url = "http://127.0.0.1:18080/imagenet/prediction"
img_path = "./images/demo.jpg"
```
```
<a name="2.7"></a>
### 2.7 启动服务端模型预测服务
...
...
@@ -310,13 +313,13 @@ img_path = "./images/demo.jpg"
```
bash
python3 web_service.py &
```
```
**【实战】**
针对MobileNet网络, 启动成功的界面如下:
![图片](./images/py_serving_startup_visualization.jpg)
<a name="2.8"></a>
#### 2.8 启动客户端
...
...
@@ -325,12 +328,12 @@ python3 web_service.py &
当成功启动了模型预测服务,可以启动客户端代码,访问服务。
**【实战】**
客户端访问服务的命令如下:
```
bash
python3 pipeline_http_client.py
```
```
访问成功的界面如下图:
![图片](./images/serving_client_result.png)
...
...
tutorials/tipc/train_amp_infer_python/README.md
浏览文件 @
bce2f8bb
# Linux GPU
多机多卡训练推理
开发文档
# Linux GPU
混合精度训练
开发文档
# 目录
-
[
1. 简介
](
#1
)
-
[
2.
多机多卡训练功能开发
与规范
](
#2
)
-
[
2.
Linux GPU 混合精度训练功能
与规范
](
#2
)
-
[
2.1 开发流程
](
#2.1
)
-
[
2.2 核验点
](
#2.2
)
-
[
3.
多机多卡训练推理测试开发
与规范
](
#3
)
-
[
3.
Linux GPU 混合精度训练功能测试
与规范
](
#3
)
-
[
3.1 开发流程
](
#3.1
)
-
[
3.2 核验点
](
#3.2
)
## 1. 简介
该系列文档主要介绍 Linux GPU 混合精度训练功能开发过程,主要包含2个步骤。
-
步骤一:参考
[
《Linux GPU 混合精度训练功能开发文档》
](
./train_amp_infer_python.md
)
,完成Linux GPU 混合精度训练功能开发。
-
步骤二:参考
[
《Linux GPU 混合精度训练功能测试开发文档》
](
./test_train_amp_infer_python.md
)
,完成Linux GPU 混合精度训练功能测试开发。
<a
name=
"2"
></a>
# 2. Linux GPU 混合精度训练功能与规范
<a
name=
"2.1"
></a>
### 2.1 开发流程
Paddle 混合精度训练开发可以分为4个步骤,如下图所示。
<div
align=
"center"
>
<img
src=
"../images/train_amp_guide.png"
width=
"800"
>
</div>
更多的介绍可以参考:
[
Linux GPU 混合精度训练功能开发文档
](
./train_amp_infer_python.md
)
。
<a
name=
"2.2"
></a>
### 2.2 核验点
#### 2.2.1 准备混合精度训练环境
*
混合精度训练的加速依赖于NVIDIA显卡的Tensor Core,目前Tensor Core仅支持Compute Capability在7.0及其以上的显卡,因此在开发混合精度训练之前,需要首先检查显卡是否支持混合精度训练。具体地,进入python环境,执行如下命令:
```
>>> import paddle
>>> paddle.device.cuda.get_device_capability()
```
打印出
`(7, 0)`
或者以上版本的内容,即可认为该环境满足混合精度训练的环境要求。
#### 2.2.2 验证混合精度训练正确开启
*
开启混合精度后,可以通过开启
`GLOG_v=5`
查看Op的执行是否满足预期,默认情况下
`matmul`
、
`conv2d`
均应执行在FP16下。可以查看日志,确保上述op执行了FP16 kernel。
<a
name=
"3"
></a>
# 3. Linux GPU 混合精度训练功能测试与规范
coming soon!
tutorials/tipc/train_infer_python/ArticleReproduction_CV.md
已删除
100644 → 0
浏览文件 @
f427a987
此差异已折叠。
点击以展开。
tutorials/tipc/train_infer_python/ArticleReproduction_NLP.md
已删除
100644 → 0
浏览文件 @
f427a987
此差异已折叠。
点击以展开。
tutorials/tipc/train_infer_python/ArticleReproduction_REC.md
已删除
100644 → 0
浏览文件 @
f427a987
# 论文复现赛指南-推荐方向
> 本文为针对 `推荐` 方向的复现赛指南
>
> 如果希望查阅 `CV` 方向的复现赛指南,可以参考:[CV方向论文复现赛指南](./ArticleReproduction_CV.md)
>
> 如果希望查阅 `NLP` 方向的复现赛指南,可以参考:[NLP方向论文复现赛指南](./ArticleReproduction_NLP.md)
## 目录
-
[
1. 总览
](
#1
)
-
[
1.1 背景
](
#1.1
)
-
[
1.2 前序工作
](
#1.2
)
-
[
2. 整体框图
](
#2
)
-
[
3. 论文复现理论知识
](
#3
)
-
[
4. 论文复现注意事项与FAQ
](
#4
)
-
[
4.1 通用注意事项
](
#4.0
)
-
[
4.2 TIPC基础链条测试接入
](
#4.1
)
<a
name=
"1"
></a>
## 1. 总览
<a
name=
"1.1"
></a>
### 1.1 背景
*
以深度学习为核心的人工智能技术仍在高速发展,通过论文复现,开发者可以获得
*
学习成长:自我能力提升
*
技术积累:对科研或工作有所帮助和启发
*
社区荣誉:成果被开发者广泛使用
<a
name=
"1.2"
></a>
### 1.2 前序工作
基于本指南复现论文过程中,建议开发者准备以下内容。
*
熟悉paddle
*
文档和API
*
80%以上的API在功能上与pytorch相同
*
[
PaddlePaddle文档链接
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/index_cn.html
)
*
[
Pytorch-Paddlepaddle API映射表
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/08_api_mapping/pytorch_api_mapping_cn.html
)
*
[
10分钟快速上手飞浆
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/01_quick_start_cn.html
)
*
数据处理
[
DataLoader
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/io/DataLoader_cn.html
)
*
了解该数据格式。以Criteo数据集为例,该数据包含了13个连续特征和26个离散特征;还有一个标签,点击用1表示,未点击用0表示。
*
准备好训练/验证数据集,用于模型训练与评估
*
准备好fake input data以及label,与模型输入shape、type等保持一致,用于后续模型前向对齐。
*
在对齐模型前向过程中,我们不需要考虑数据集模块等其他模块,此时使用fake data是将模型结构和数据部分解耦非常合适的一种方式。
*
将fake data以文件的形式存储下来,也可以保证PaddlePaddle与参考代码的模型结构输入是完全一致的,更便于排查问题。
*
在该步骤中,以AlexNet为例,生成fake data的脚本可以参考:
[
gen_fake_data.py
](
https://github.com/littletomatodonkey/AlexNet-Prod/blob/master/pipeline/fake_data/gen_fake_data.py
)
。
*
在特定设备(CPU/GPU)上,跑通参考代码的预测过程(前向)以及至少2轮(iteration)迭代过程,保证后续基于PaddlePaddle复现论文过程中可对比。
*
在复现的过程中,只需要将PaddlePaddle的复现代码以及打卡日志上传至github,不能在其中添加参考代码的实现,在验收通过之后,需要删除打卡日志。建议在初期复现的时候,就将复现代码与参考代码分成2个文件夹进行管理。
*
飞桨训推一体认证 (Training and Inference Pipeline Certification, TIPC) 是一个针对飞桨模型的测试工具,方便用户查阅每种模型的训练推理部署打通情况,并可以进行一键测试。论文训练对齐之后,需要为代码接入TIPC基础链条测试文档与代码,关于TIPC基础链条测试接入规范的文档可以参考:
[
链接
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/tipc_test/development_specification_docs/train_infer_python.md
)
。更多内容在
`4.2`
章节部分也会详细说明。
<a
name=
"2"
></a>
## 2. 整体框图
可参考
[
cv部分
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/lwfx/ThesisReproduction_CV.md
)
<a
name=
"3"
></a>
## 3. 论文复现理论知识
可参考
[
cv部分
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/lwfx/ThesisReproduction_CV.md
)
<a
name=
"4"
></a>
## 4. 论文复现注意事项与FAQ
本部分主要总结大家在论文复现赛过程中遇到的问题,如果本章内容没有能够解决你的问题,欢迎给该文档提出优化建议或者给Paddle提
[
ISSUE
](
https://github.com/PaddlePaddle/Paddle/issues/new/choose
)
。
<a
name=
"4.0"
></a>
### 4.1 通用注意事项
*
常见问题和误区
*
不要主动调参,目的是复现而不是提升精度
*
不要加论文中没提到的模型结构
*
数据和指标先行对齐
*
数据集获取
*
PaddleRec提供了大量推荐数据集,可优先从
[
这里查找
](
https://github.com/PaddlePaddle/PaddleRec/tree/master/datasets
)
<a
name=
"4.1"
></a>
### 4.2 TIPC基础链条接入
**【基本流程】**
*
完成模型的训练、导出inference、基于PaddleInference的推理过程的文档与代码。参考链接:
*
[
insightface训练预测使用文档
](
https://github.com/deepinsight/insightface/blob/master/recognition/arcface_paddle/README_cn.md
)
*
[
PaddleInference使用文档
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/inference_cn.html
)
*
[
PaddleRecInference使用文档
](
https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/inference.md
)
*
基于
[
TIPC基础链条测试接入规范
](
https://github.com/PaddlePaddle/models/blob/tipc/docs/tipc_test/development_specification_docs/train_infer_python.md
)
,完成该模型的TIPC基础链条开发以及测试文档/脚本,目录为
`test_tipc`
,测试脚本名称为
`test_train_inference_python.sh`
,该任务中只需要完成
`少量数据训练模型,少量数据预测`
的模式即可,用于测试TIPC流程的模型和少量数据需要放在当前repo中。
**【注意事项】**
*
基础链条测试接入时,只需要验证
`少量数据训练模型,少量数据预测`
的模式,只需要在Linux下验证通过即可。
*
在文档中需要给出一键测试的脚本与使用说明。
*
接入TIPC功能是需安装
[
特定版本paddle
](
https://paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html#python
)
。
**【实战】**
TIPC基础链条测试接入用例可以参考:
[
PaddlRec TIPC基础链条测试开发文档
](
https://github.com/PaddlePaddle/PaddleRec/tree/master/test_tipc
)
,
[
InsightFace-paddle TIPC基础链条测试开发文档
](
https://github.com/deepinsight/insightface/blob/master/recognition/arcface_paddle/test_tipc/readme.md
)
。
**【验收】**
*
TIPC基础链条测试文档清晰,
`test_train_inference_python.sh`
脚本可以成功执行并返回正确结果。
tutorials/tipc/train_infer_python/README.md
浏览文件 @
bce2f8bb
...
...
@@ -17,9 +17,9 @@
## 1. 简介
该系列文档主要介绍飞桨模型基于 Linux GPU/CPU 基础训练推理开发过程,主要包含
三
个步骤。
该系列文档主要介绍飞桨模型基于 Linux GPU/CPU 基础训练推理开发过程,主要包含
3
个步骤。
-
步骤一:参考
[
《模型复现指南》
](
../../
lwfx
/ArticleReproduction_CV.md
)
,完成模型的训练与基于训练引擎的预测程序开发。
-
步骤一:参考
[
《模型复现指南》
](
../../
article-implementation
/ArticleReproduction_CV.md
)
,完成模型的训练与基于训练引擎的预测程序开发。
-
步骤二:参考
[
《Linux GPU/CPU 模型推理开发文档》
](
./infer_python.md
)
,在基于训练引擎预测的基础上,完成基于Paddle Inference的推理程序开发。
...
...
@@ -38,10 +38,10 @@
如果您在模型复现方面经验较少,或者复现过程中遇到问题,希望快速排查问题,强烈建议您按照模型复现指南进行操作。以CV任务为例,复现指南将模型复现分为13个步骤,如下所示。
<div
align=
"center"
>
<img
src=
"../../
lwfx
/images/framework_reprodcv.png"
width=
"800"
>
<img
src=
"../../
article-implementation
/images/framework_reprodcv.png"
width=
"800"
>
</div>
更多内容请参考:
[
模型复现指南
](
../../
lwfx
/ArticleReproduction_CV.md
)
。
更多内容请参考:
[
模型复现指南
](
../../
article-implementation
/ArticleReproduction_CV.md
)
。
<a
name=
"2.2"
></a>
...
...
@@ -53,7 +53,7 @@
**【参考】**
*
[
模型复现指南
](
../../
lwfx
/ArticleReproduction_CV.md
)
中
`3.2`
章节。
*
[
模型复现指南
](
../../
article-implementation
/ArticleReproduction_CV.md
)
中
`3.2`
章节。
**【要求】**
...
...
@@ -64,7 +64,7 @@ repo中包含`lite_data`小数据集压缩包,解压之后可以获取`lite_da
**【参考】**
*
[
模型复现指南
](
../../
lwfx
/ArticleReproduction_CV.md
)
中第
`3`
章节。
*
[
模型复现指南
](
../../
article-implementation
/ArticleReproduction_CV.md
)
中第
`3`
章节。
**【要求】**
...
...
@@ -76,7 +76,7 @@ repo中包含`lite_data`小数据集压缩包,解压之后可以获取`lite_da
**【参考】**
[
模型复现指南
](
../../
lwfx
/ArticleReproduction_CV.md
)
中
`3.12`
章节。
[
模型复现指南
](
../../
article-implementation
/ArticleReproduction_CV.md
)
中
`3.12`
章节。
**【要求】**
...
...
@@ -90,7 +90,7 @@ repo中包含`lite_data`小数据集压缩包,解压之后可以获取`lite_da
**【参考】**
*
[
模型复现指南
](
../../
lwfx
/ArticleReproduction_CV.md
)
中
`3.13`
章节。
*
[
模型复现指南
](
../../
article-implementation
/ArticleReproduction_CV.md
)
中
`3.13`
章节。
**【要求】**
...
...
@@ -120,7 +120,7 @@ repo中包含`lite_data`小数据集压缩包,解压之后可以获取`lite_da
<img
src=
"./images/py_inference_pipeline.png"
width=
"800"
>
</div>
更多的介绍可以参考:
[
模型推理开发
规范
](
./inference
.md
)
。
更多的介绍可以参考:
[
模型推理开发
文档
](
./infer_python
.md
)
。
<a
name=
"3.2"
></a>
...
...
@@ -148,7 +148,7 @@ repo中包含`lite_data`小数据集压缩包,解压之后可以获取`lite_da
<img
src=
"./images/test_linux_train_infer_python_pipeline.png"
width=
"400"
>
</div>
更多的介绍可以参考:
[
Linux GPU/CPU 基础训练推理测试开发规范
](
./test_
linux_
train_infer_python.md
)
。
更多的介绍可以参考:
[
Linux GPU/CPU 基础训练推理测试开发规范
](
./test_train_infer_python.md
)
。
<a
name=
"4.2"
></a>
...
...
tutorials/tipc/train_infer_python/images/framework_tipc.png
已删除
100644 → 0
浏览文件 @
f427a987
138.3 KB
tutorials/tipc/train_infer_python/infer_python.md
浏览文件 @
bce2f8bb
...
...
@@ -43,7 +43,7 @@ Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端
基于Paddle Inference的推理过程可以分为9个步骤,如下图所示。
<div
align=
"center"
>
<img
src=
".
/images/py_inference_pipelin
e.png"
width=
"600"
>
<img
src=
".
./images/inference_guid
e.png"
width=
"600"
>
</div>
其中设置了3个核验点,分别为
...
...
tutorials/tipc/train_pact_infer_python/README.md
浏览文件 @
bce2f8bb
...
...
@@ -3,9 +3,57 @@
# 目录
-
[
1. 简介
](
#1
)
-
[
2. Linux GPU/CPU
量化训练功能开发文档
](
#2
)
-
[
2. Linux GPU/CPU
PACT量化训练功能开发规范
](
#2
)
-
[
2.1 开发流程
](
#2.1
)
-
[
2.2 核验点
](
#2.2
)
-
[
3. Linux GPU/CPU 量化训练测试开发与规范
](
#3
)
-
[
3. Linux GPU/CPU
PACT
量化训练测试开发与规范
](
#3
)
-
[
3.1 开发流程
](
#3.1
)
-
[
3.2 核验点
](
#3.2
)
<a
name=
"1"
></a>
## 1. 简介
该系列文档主要介绍 Linux GPU/CPU PACT量化训练开发过程,主要包含2个步骤。
-
步骤一:参考
[
《Linux GPU/CPU PACT量化训练功能开发文档》
](
./train_pact_infer_python.md
)
,完成Linux GPU/CPU PACT量化训练功能开发。
-
步骤二:参考
[
《Linux GPU/CPU PACT量化训练测试开发文档》
](
./test_train_pact_infer_python.md
)
,完成Linux GPU/CPU PACT量化训练测试开发。
<a
name=
"2"
></a>
# 2. Linux GPU/CPU PACT量化训练功能开发规范
<a
name=
"2.1"
></a>
### 2.1 开发流程
Linux GPU/CPU PACT量化训练功能开发过程可以分为下面5个步骤。
<div
align=
"center"
>
<img
src=
"../images/quant_aware_training_guide.png"
width=
"800"
>
</div>
更多的介绍可以参考:
[
Linux GPU/CPU PACT量化训练功能开发文档
](
././train_pact_infer_python.md
)
。
<a
name=
"2.2"
></a>
### 2.2 核验点
#### 2.2.1 准备待量化模型
*
需要定义继承自
`paddle.nn.Layer`
的网络模型,该模型与Linux GPU/CPU基础训练过程一致。定义完成之后,建议加载预训练模型权重,加速量化收敛。
#### 2.2.2 验证推理结果正确性
*
使用Paddle Inference库测试离线量化模型,确保模型精度符合预期。对于CV任务来说,PACT在线量化之后的精度基本无损。
<a
name=
"3"
></a>
# 3. Linux GPU/CPU PACT量化训练测试开发与规范
coming soon!
tutorials/tipc/train_pact_infer_python/test_
ptq
_infer_python.md
→
tutorials/tipc/train_pact_infer_python/test_
train_pact
_infer_python.md
浏览文件 @
bce2f8bb
文件已移动
tutorials/tipc/train_pact_infer_python/train_pact_infer_python.md
浏览文件 @
bce2f8bb
...
...
@@ -6,8 +6,9 @@
-
[
2. 量化训练功能开发
](
#2
)
-
[
2.1 准备数据和环境
](
#2.1
)
-
[
2.2 准备待量化模型
](
#2.2
)
-
[
2.3 开始量化训练及保存模型
](
#2.3
)
-
[
2.4 验证推理结果正确性
](
#2.4
)
-
[
2.3 准备量化训练代码
](
#2.3
)
-
[
2.4 开始量化训练及保存模型
](
#2.4
)
-
[
2.5 验证推理结果正确性
](
#2.5
)
-
[
3. FAQ
](
#3
)
-
[
3.1 通用问题
](
#3.1
)
...
...
@@ -24,7 +25,7 @@ Paddle 量化训练(Quant-aware Training, QAT)是指在训练过程中对模
## 2. 量化训练功能开发
Paddle 混合精度训练开发可以分为4
个步骤,如下图所示。
Linux GPU/CPU PACT量化训练功能开发可以分为5
个步骤,如下图所示。
<div
align=
"center"
>
<img
src=
"../images/quant_aware_training_guide.png"
width=
"600"
>
...
...
@@ -77,7 +78,19 @@ fp32_model = mobilenet_v3_small()
<a
name=
"2.3"
></a>
### 2.3 开始量化训练及保存模型
### 2.3 准备量化训练代码
**【基本流程】**
PACT在线量化训练开发之前,要求首先有Linux GPU/CPU基础训练的代码并可以正常训练与收敛。
**【实战】**
参考MobileNetV3_small的训练过程说明文档:
[
链接
](
https://github.com/PaddlePaddle/models/blob/release%2F2.2/tutorials/mobilenetv3_prod/Step6/README.md#41-%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83
)
。
<a
name=
"2.4"
></a>
### 2.4 开始量化训练及保存模型
**【基本流程】**
...
...
@@ -128,9 +141,9 @@ quanter.save_quantized_model(net, 'save_dir', input_spec=[paddle.static.InputSpe
量化训练配置、训练及保存量化模型请参考
[
MobileNetv3量化训练文档
](
https://github.com/PaddlePaddle/models/tree/release/2.2/tutorials/mobilenetv3_prod/Step6/docs/train_pact_infer_python.md
)
<a
name=
"2.
4
"
></a>
<a
name=
"2.
5
"
></a>
### 2.
4
验证推理结果正确性
### 2.
5
验证推理结果正确性
**【基本流程】**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录