提交 779a27e9 编写于 作者: D dzhwinter

"follow comments"

上级 cf6985de
...@@ -17,25 +17,34 @@ CPU型号。 ...@@ -17,25 +17,34 @@ CPU型号。
选择基准模型 选择基准模型
############ ############
对框架做基准测试,需要覆盖不同训练任务和不同大小的模型,基准测试结果才有说服力。 对框架做基准测试,需要覆盖不同训练任务和不同大小的模型。本文中选取了图像和NLP的典型模型。
+------------+------------+-----------+ +------------+------------+-----------+------------+
| Header 1 | Header 2 | Header 3 | | 任务种类 | 模型名称 | 网络结构 | 数据集|
+============+============+===========+ +============+============+===========+============+
| body row 1 | column 2 | column 3 | | 图像分类 | mnist | Lenet | mnist|
+------------+------------+-----------+ +------------+------------+-----------+------------+
其中mnist, VGG, Resnet属于CNN模型, | 图像分类| VGG | VGG-16 | Flowers102|
stacked-lstm代表RNN模型。 +------------+------------+-----------+------------+
| 图像分类| 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>`__ `benchmark <https://github.com/PaddlePaddle/Paddle/tree/develop/benchmark/fluid>`__
基准模型测试脚本中,均跳过了前几个batch的训练过程,原因是加载数据和分配显存受系统当前运行情况影响,会导致统计性能不准确。运行完若干个轮次后,统计对应指标。 基准模型测试脚本中,均跳过了前几个batch的训练过程,原因是加载数据和分配显存受系统当前运行情况影响,会导致统计性能不准确。运行完若干个轮次后,统计对应指标。
基准模型的数据的选择方面,数据量大且验证效果多的公开数据集为首选。图像模型VGG和resnet, 本文选择了 `flowers102 <http://www.robots.ox.ac.uk/~vgg/data/flowers/102/>`__,图像大小预处理为和Imagenet相同大小,因此性能可直接对比 基准模型的数据的选择方面,数据量大且验证效果多的公开数据集为首选。图像模型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模型由于样本长度不定,计算路径和显存占用也不相同,因此只能完整运行若干个轮次后,统计速度和显存消耗。 注意,图像模型每条样本大小相同,图像经过变换后大小一致,因此经过的计算路径基本相同,计算速度和显存占用波动较小,可以从若干个batch的数据中采样得到当前的训练性能数据。而NLP模型由于样本长度不定,计算路径和显存占用也不相同,因此只能完整运行若干个轮次后,统计速度和显存消耗。
显存分配是特别耗时的操作,因此Fluid默认会占用所有可用显存空间形成显存池,用以加速计算过程中的显存分配。如果需要统计模型真实显存消耗,可设置环境变量`FLAGS_fraction_of_gpu_memory_to_use=0.0`,观察最大显存开销。 显存分配是特别耗时的操作,因此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;``。 测试CPU上单线程的性能,先设置CUDA的环境变量为空,``CUDA_VISIBLE_DEVICES=``,并通过环境变量关闭OpenMP和MKL的多线程``OMP_NUM_THREADS=1``, ``MKL_NUM_THREADS=1;``。
然后代码中设置为使用CPUPlace,如果使用Paddle代码库中的脚本,只需要命令行参数传入 use_gpu=False即可。 然后代码中设置为使用CPUPlace,如果使用Paddle代码库中的脚本,只需要命令行参数传入 use_gpu=False即可。
...@@ -50,7 +59,7 @@ NLP模型的公开且影响力大数据集较少,机器翻译模型选择了wm ...@@ -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 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. 再次确认cudnn和cuda版本一致。本教程使用了cudnn7.0.1, cuda8.0.
...@@ -73,13 +82,15 @@ NLP模型的公开且影响力大数据集较少,机器翻译模型选择了wm ...@@ -73,13 +82,15 @@ NLP模型的公开且影响力大数据集较少,机器翻译模型选择了wm
系统环境为Ubuntu 16.04.3 LTS, 本文中采用了docker环境,系统版本为nvidia-docker17.05.0-ce。 系统环境为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>`__ 。 测试的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>`__ 。 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 | | 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 | | 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 ...@@ -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 | | Seq2Seq | 217.1655 words/s | 28.6164 words/s |
+----------------+--------------------+-------------------+ +----------------+--------------------+-------------------+
- GPU测试结果 - GPU 单机单卡测试结果
+----------------+----------------+---------------------+ +----------------+----------------+---------------------+
| Speed | Fluid GPU | TensorFlow GPU | | Speed | Fluid GPU | TensorFlow GPU |
+================+================+=====================+ +================+================+=====================+
| mnist | 3.044 s/pass | 3.852 s/pass | | mnist | 19710.90 samples/s | 15576.3 samples/s |
+----------------+----------------+---------------------+ +----------------+----------------+---------------------+
| VGG-16 | 59.83327 | 40.9967 images/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 ...@@ -105,5 +116,3 @@ TensorFlow版本为\ `v.1.4.0-rc1 <https://github.com/tensorflow/tensorflow/tree
+----------------+----------------+---------------------+ +----------------+----------------+---------------------+
| Seq2Seq | 7147.89081 | 6845.1161 words/s | | 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.
先完成此消息的编辑!
想要评论请 注册