提交 61bad9c3 编写于 作者: D dzhwinter

"refine"

上级 7171a6cf
# 如何进行基准测试 #################
如何进行基准测试
#################
本文介绍如何给深度学习框架做基准测试。 本文介绍如何给深度学习框架做基准测试。基准测试主要包含验证模型的精度和性能两方面,下文包含搭建测试环境, 选择基准测试模型, 验证测试结果等几方面内容。
benchmark测试主要包含验证模型的精度和性能两方面, 验证深度学习框架,可分为训练和测试两个阶段, 验证指标略有不同,本文只介绍训练阶段的指标验证。训练阶段关注的是模型训练集上的精度,训练集是完备的,因此关注大batch\_size下的训练速度,关注吞吐量,例如图像模型常用的batch\_size=128, 多卡情况下会加大; 预测阶段关注的是在测试集上的精度,线上服务测试数据不能提前收集,因此关注小batch\_size下的预测速度,关注延迟,例如预测服务常用的batch\_size=1, 4等。
下文通过搭建测试环境和测试指标等多方面对Fluid进行基准测试. `Fluid <https://github.com/PaddlePaddle/Paddle>`__ 是PaddlePaddle从0.11.0版本开始引入的设计,本文的基准测试在该版本上完成。
`Fluid <https://github.com/PaddlePaddle/Paddle>`__ 是PaddlePaddle
从0.11.0 引入的新设计, 用来让用户像Pytorch和Tensorflow Eager
Execution一样写程序.
验证深度学习框架,可分为训练和测试两个阶段。验证指标大同小异,例如训练关注的是训练集上的精度,大batch\_size下的训练速度,而测试关注的是在测试集上的精度,小batch\_size下的预测速度。本文只介绍训练阶段的指标验证。
环境搭建 环境搭建
~~~~~~~~ ########
基准测试中模型的精度和硬件、框架无关,由模型结构和数据共同决定; 性能方面由测试硬件和框架本身性能共同决定。为了对比框架之间的差异,需要控制硬件环境,系统库等版本一致。下文中的对比实验都在相同的硬件条件和系统环境条件下进行.
下文中的对比实验都在相同的硬件条件和软件条件下进行. 对硬件方面,对GPU验证需要保证GPU的型号一致; 对CPU需要保证CPU型号一致;
benchmark的结果强依赖于硬件。所以需要保证影响指标的硬件环境一致,这样benchmark才有意义。
对硬件方面,对GPU验证需要保证GPU的型号一致;
对cpu需要保证CPU型号一致,另对于厂内机器,需要额外关注内存插条顺序是最优的;
对软件方面,基础库Cuda大版本需要保持一致,例如Cuda9与Cuda8支持指令不同,运行速度有差异,在此软件环境下,源码编译paddle。paddle会针对cuda生成对应的sm\_arch二进制\ `sm\_arch <https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html>`__\ 。cudnn对重卷积类任务影响巨大,需要版本\ **完全一致**\ 。 对软件方面,基础库Cuda大版本需要保持一致,例如Cuda9与Cuda8支持指令不同,运行速度有差异,在此软件环境下,源码编译paddle。paddle会针对cuda生成对应的sm\_arch二进制\ `sm\_arch <https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html>`__\ 。cudnn对重卷积类任务影响巨大,需要版本\ **完全一致**\ 。
本教程中的硬件环境为 Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz. TITAN X 本教程中的硬件环境为 Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz. TITAN X
(Pascal) 12G x 1 系统环境为 System: Ubuntu 16.04.3 LTS, Nvidia-Docker (Pascal) 12G x 1 系统环境为 System: Ubuntu 16.04.3 LTS, Nvidia-Docker
...@@ -22,8 +17,8 @@ benchmark的结果强依赖于硬件。所以需要保证影响指标的硬件 ...@@ -22,8 +17,8 @@ benchmark的结果强依赖于硬件。所以需要保证影响指标的硬件
采用的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>`__,
需要commit一致. 需要commit一致.
模型选择 基准模型选择
~~~~~~~~ ############
benchmark需要兼顾大小模型,不同训练任务下的表现, benchmark需要兼顾大小模型,不同训练任务下的表现,
才能说明框架效果。其中mnist, VGG, Resnet属于CNN模型, 才能说明框架效果。其中mnist, VGG, Resnet属于CNN模型,
...@@ -31,7 +26,7 @@ stacked-lstm代表RNN模型. ...@@ -31,7 +26,7 @@ stacked-lstm代表RNN模型.
`benchmark <https://github.com/PaddlePaddle/Paddle/tree/develop/benchmark/fluid>`__ `benchmark <https://github.com/PaddlePaddle/Paddle/tree/develop/benchmark/fluid>`__
测试过程 测试过程
~~~~~~~~ ########
- CPU - CPU
...@@ -61,7 +56,7 @@ nvidia/cuda:8.0-cudnn7-devel-ubuntu16.04 ...@@ -61,7 +56,7 @@ nvidia/cuda:8.0-cudnn7-devel-ubuntu16.04
将其中的CASE\_NAME和IMAGE\_NAME换为对应的名字,运行对应的例子 将其中的CASE\_NAME和IMAGE\_NAME换为对应的名字,运行对应的例子
测试结果 测试结果
~~~~~~~~ ########
CPU测试结果 CPU测试结果
...@@ -96,11 +91,3 @@ GPU测试结果 ...@@ -96,11 +91,3 @@ GPU测试结果
+----------------+----------------+---------------------+ +----------------+----------------+---------------------+
注:mnist由于图像太小,采用计量单位为s 注:mnist由于图像太小,采用计量单位为s
Reference
~~~~~~~~~
- PaddlePaddle Fluid
`Paddle <https://github.com/PaddlePaddle/Paddle>`__
- TensorFlow `TensorFlow <https://github.com/tensorflow/tensorflow>`__
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册