Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
779a27e9
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
4
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
779a27e9
编写于
6月 27, 2018
作者:
D
dzhwinter
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
"follow comments"
上级
cf6985de
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
17 deletion
+26
-17
source/advanced_usage/benchmark.rst
source/advanced_usage/benchmark.rst
+26
-17
未找到文件。
source/advanced_usage/benchmark.rst
浏览文件 @
779a27e9
...
...
@@ -17,25 +17,34 @@ CPU型号。
选择基准模型
############
对框架做基准测试,需要覆盖不同训练任务和不同大小的模型,基准测试结果才有说服力。
+------------+------------+-----------+
| Header 1 | Header 2 | Header 3 |
+============+============+===========+
| body row 1 | column 2 | column 3 |
+------------+------------+-----------+
其中mnist, VGG, Resnet属于CNN模型,
stacked-lstm代表RNN模型。
对框架做基准测试,需要覆盖不同训练任务和不同大小的模型。本文中选取了图像和NLP的典型模型。
+------------+------------+-----------+------------+
| 任务种类 | 模型名称 | 网络结构 | 数据集|
+============+============+===========+============+
| 图像分类 | mnist | Lenet | mnist|
+------------+------------+-----------+------------+
| 图像分类| VGG | VGG-16 | Flowers102|
+------------+------------+-----------+------------+
| 图像分类| Resnet | Resnet-50 | Flowers102|
+------------+------------+-----------+------------+
| 文本分类| Stacked-LSTM | Stacked-LSTM | IMDB |
+------------+------------+-----------+------------+
| 机器翻译| seq-seq | Stacked-LSTM | wmt14 |
+------------+------------+-----------+------------+
其中mnist, VGG, Resnet属于CNN模型, stacked-lstm, seq2seq代表RNN模型。
`benchmark <https://github.com/PaddlePaddle/Paddle/tree/develop/benchmark/fluid>`__
基准模型测试脚本中,均跳过了前几个batch的训练过程,原因是加载数据和分配显存受系统当前运行情况影响,会导致统计性能不准确。运行完若干个轮次后,统计对应指标。
基准模型的数据的选择方面,数据量大且验证效果多的公开数据集为首选。图像模型VGG和resnet, 本文选择了 `flowers102 <http://www.robots.ox.ac.uk/~vgg/data/flowers/102/>`__,图像大小预处理为和Imagenet相同大小,因此性能可直接对比
NLP模型的公开且影响力大数据集较少,
机器翻译模型选择了wmt14数据,
lstm模型中选择了`imdb <https://www.imdb.com/interfaces/>`__ 数据。
NLP模型的公开且影响力大数据集较少,
seq2seq模型选择了wmt14数据,stacked-
lstm模型中选择了`imdb <https://www.imdb.com/interfaces/>`__ 数据。
注意,图像模型每条样本大小相同,图像经过变换后大小一致,因此经过的计算路径基本相同,计算速度和显存占用波动较小,可以从若干个batch的数据中采样得到当前的训练性能数据。而NLP模型由于样本长度不定,计算路径和显存占用也不相同,因此只能完整运行若干个轮次后,统计速度和显存消耗。
显存分配是特别耗时的操作,因此Fluid默认会占用所有可用显存空间形成显存池,用以加速计算过程中的显存分配。如果需要统计模型真实显存消耗,可设置环境变量`FLAGS_fraction_of_gpu_memory_to_use=0.0`,观察最大显存开销。
测试过程
########
-
单机单CPU
线程测试
-
CPU 单机单
线程测试
测试CPU上单线程的性能,先设置CUDA的环境变量为空,``CUDA_VISIBLE_DEVICES=``,并通过环境变量关闭OpenMP和MKL的多线程``OMP_NUM_THREADS=1``, ``MKL_NUM_THREADS=1;``。
然后代码中设置为使用CPUPlace,如果使用Paddle代码库中的脚本,只需要命令行参数传入 use_gpu=False即可。
...
...
@@ -50,7 +59,7 @@ NLP模型的公开且影响力大数据集较少,机器翻译模型选择了wm
docker run -it --name CASE_NAME --security-opt seccomp=unconfined -v $PWD/benchmark:/benchmark paddlepaddle/paddle:latest-dev /bin/bash
- 单机单卡测试
-
GPU
单机单卡测试
再次确认cudnn和cuda版本一致。本教程使用了cudnn7.0.1, cuda8.0.
...
...
@@ -73,13 +82,15 @@ NLP模型的公开且影响力大数据集较少,机器翻译模型选择了wm
系统环境为Ubuntu 16.04.3 LTS, 本文中采用了docker环境,系统版本为nvidia-docker17.05.0-ce。
测试的Fluid版本为\ `v.0.12.0 <https://github.com/PaddlePaddle/Paddle/releases/tag/v.0.12.0>`__ 。
TensorFlow版本为\ `v.1.4.0-rc1 <https://github.com/tensorflow/tensorflow/tree/v1.4.0-rc1>`__ 。
使用的脚本和配置见\ `benchmark <https://github.com/PaddlePaddle/Paddle/tree/develop/benchmark/fluid>`__ 。
图表中统计单位为samples/秒。
- CPU测试结果
- CPU
单机单线程
测试结果
+----------------+--------------------+-------------------+
| Speed | Fluid CPU | TensorFlow CPU |
+================+====================+===================+
| mnist |
46.198 s/pass | 94.106 s/pass
|
| mnist |
1298.75 samples/s | 637.57 samples/s
|
+----------------+--------------------+-------------------+
| VGG-16 | 0.4147 images/s | 0.1229 images/s |
+----------------+--------------------+-------------------+
...
...
@@ -90,12 +101,12 @@ TensorFlow版本为\ `v.1.4.0-rc1 <https://github.com/tensorflow/tensorflow/tree
| Seq2Seq | 217.1655 words/s | 28.6164 words/s |
+----------------+--------------------+-------------------+
- GPU测试结果
- GPU
单机单卡
测试结果
+----------------+----------------+---------------------+
| Speed | Fluid GPU | TensorFlow GPU |
+================+================+=====================+
| mnist |
3.044 s/pass | 3.852 s/pas
s |
| mnist |
19710.90 samples/s | 15576.3 samples/
s |
+----------------+----------------+---------------------+
| VGG-16 | 59.83327 | 40.9967 images/s |
+----------------+----------------+---------------------+
...
...
@@ -105,5 +116,3 @@ TensorFlow版本为\ `v.1.4.0-rc1 <https://github.com/tensorflow/tensorflow/tree
+----------------+----------------+---------------------+
| Seq2Seq | 7147.89081 | 6845.1161 words/s |
+----------------+----------------+---------------------+
注:mnist由于图像太小,统计数量差异很大,采用计量单位为秒(s)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录