Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
ce5009cd
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
ce5009cd
编写于
12月 19, 2018
作者:
Z
Zhaolong Xing
提交者:
GitHub
12月 19, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #494 from NHZlX/refine_trt_usage_trt
refine trt usage doc
上级
a1729494
dbe30d48
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
64 addition
and
5 deletion
+64
-5
doc/fluid/advanced_usage/deploy/inference/paddle_tensorrt_infer.md
.../advanced_usage/deploy/inference/paddle_tensorrt_infer.md
+64
-5
未找到文件。
doc/fluid/advanced_usage/deploy/inference/paddle_tensorrt_infer.md
浏览文件 @
ce5009cd
...
...
@@ -26,14 +26,16 @@ NVIDIA TensorRT 是一个高性能的深度学习预测库,可为深度学习
cd /Paddle
mkdir build
cd build
# TENSORRT_ROOT为TRT的路径,默认为 /usr,根据自己需求进行改动
# MKL 可以根据自己的需求自行打开
cmake .. \
-DWITH_FLUID_ONLY=ON \
-DWITH_CONTRIB=OFF \
-DWITH_MKL=OFF \
-DWITH_MKLDNN=OFF \
-DWITH_TESTING=ON \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_PYTHON=OFF
-DWITH_PYTHON=OFF \
-DTENSORRT_ROOT=/usr \
-DON_INFER=ON
# 编译
make -j
...
...
@@ -41,6 +43,22 @@ NVIDIA TensorRT 是一个高性能的深度学习预测库,可为深度学习
make inference_lib_dist -j
```
编译后的库的目录如下:
```
fluid_inference_install_dir
├── paddle
│
├── CMakeCache.txt
├── version.txt
├── third_party
├── boost
├── install
└── engine3
```
`fluid_inference_install_dir`
下, paddle目录包含了预测库的头文件和预测库的lib, version.txt 中包含了lib的版本和配置信息,third_party 中包含了预测库依赖的第三方库
## Paddle TensorRT使用
[
`paddle_inference_api.h`
](
'https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/inference/api/paddle_inference_api.h'
)
定义了使用TensorRT的所有接口。
...
...
@@ -97,11 +115,52 @@ void RunTensorRT(int batch_size, std::string model_dirname) {
int
main
()
{
// 模型下载地址 http://paddle-inference-dist.cdn.bcebos.com/tensorrt_test/mobilenet.tar.gz
paddle
::
RunTensorRT
(
1
,
“
.
/
mobilenet
");
paddle
::
RunTensorRT
(
1
,
"
./mobilenet"
);
return
0
;
}
```
编译过程可以参照
[
这里
](
https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/fluid/inference/api/demo_ci
)
。
## 样例编译
1.
下载样例
```
wget http://paddle-inference-dist.cdn.bcebos.com/tensorrt_test/paddle_trt_samples.tar.gz
```
解压后的目录如下:
```
sample
├── CMakeLists.txt
├── mobilenet_test.cc
├── thread_mobilenet_test.cc
├── mobilenetv1
│ ├── model
│ └── params
└── run_impl.sh
```
-
`mobilenet_test.cc`
为单线程的程序文件
-
`thread_mobilenet_test.cc`
为多线程的程序文件
-
`mobilenetv1`
为模型文件
在这里假设预测库的路径为 ``BASE_DIR/fluid_inference_install_dir/`` ,样例所在的目录为 ``SAMPLE_BASE_DIR/sample``
2.
编译样例
```shell
cd SAMPLE_BASE_DIR/sample
# sh run_impl.sh {预测库的地址} {测试脚本的名字} {模型目录}
sh run_impl.sh BASE_DIR/fluid_inference_install_dir/ mobilenet_test SAMPLE_BASE_DIR/sample/mobilenetv1
```
3.
编译多线程的样例
```
shell
cd
SAMPLE_BASE_DIR/sample
# sh run_impl.sh {预测库的地址} {测试脚本的名字} {模型目录}
sh run_impl.sh BASE_DIR/fluid_inference_install_dir/ thread_mobilenet_test SAMPLE_BASE_DIR/sample/mobilenetv1
```
## 子图运行原理
PaddlePaddle采用子图的形式对TensorRT进行集成,当模型加载后,神经网络可以表示为由变量和运算节点组成的计算图。Paddle TensorRT实现的功能是能够对整个图进行扫描,发现图中可以使用TensorRT优化的子图,并使用TensorRT节点替换它们。在模型的推断期间,如果遇到TensorRT节点,Paddle会调用TensoRT库对该节点进行优化,其他的节点调用Paddle的原生实现。TensorRT在推断期间能够进行Op的横向和纵向融合,过滤掉冗余的Op,并对特定平台下的特定的Op选择合适的kenel等进行优化,能够加快模型的预测速度。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录