From 61bad9c3c9b9e163092cba3c705b572e0ce023d3 Mon Sep 17 00:00:00 2001 From: dzhwinter Date: Tue, 26 Jun 2018 23:07:13 -0700 Subject: [PATCH] "refine" --- source/advanced_usage/benchmark.rst | 39 ++++++++++------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/source/advanced_usage/benchmark.rst b/source/advanced_usage/benchmark.rst index 1ca3fdacd..08e104c15 100644 --- a/source/advanced_usage/benchmark.rst +++ b/source/advanced_usage/benchmark.rst @@ -1,20 +1,15 @@ -# 如何进行基准测试 +################# +如何进行基准测试 +################# - 本文介绍如何给深度学习框架做基准测试。 -benchmark测试主要包含验证模型的精度和性能两方面, -下文通过搭建测试环境和测试指标等多方面对Fluid进行基准测试. -`Fluid `__ 是PaddlePaddle -从0.11.0 引入的新设计, 用来让用户像Pytorch和Tensorflow Eager -Execution一样写程序. -验证深度学习框架,可分为训练和测试两个阶段。验证指标大同小异,例如训练关注的是训练集上的精度,大batch\_size下的训练速度,而测试关注的是在测试集上的精度,小batch\_size下的预测速度。本文只介绍训练阶段的指标验证。 +本文介绍如何给深度学习框架做基准测试。基准测试主要包含验证模型的精度和性能两方面,下文包含搭建测试环境, 选择基准测试模型, 验证测试结果等几方面内容。 +验证深度学习框架,可分为训练和测试两个阶段, 验证指标略有不同,本文只介绍训练阶段的指标验证。训练阶段关注的是模型训练集上的精度,训练集是完备的,因此关注大batch\_size下的训练速度,关注吞吐量,例如图像模型常用的batch\_size=128, 多卡情况下会加大; 预测阶段关注的是在测试集上的精度,线上服务测试数据不能提前收集,因此关注小batch\_size下的预测速度,关注延迟,例如预测服务常用的batch\_size=1, 4等。 +`Fluid `__ 是PaddlePaddle从0.11.0版本开始引入的设计,本文的基准测试在该版本上完成。 环境搭建 -~~~~~~~~ - -下文中的对比实验都在相同的硬件条件和软件条件下进行. -benchmark的结果强依赖于硬件。所以需要保证影响指标的硬件环境一致,这样benchmark才有意义。 -对硬件方面,对GPU验证需要保证GPU的型号一致; -对cpu需要保证CPU型号一致,另对于厂内机器,需要额外关注内存插条顺序是最优的; +######## +基准测试中模型的精度和硬件、框架无关,由模型结构和数据共同决定; 性能方面由测试硬件和框架本身性能共同决定。为了对比框架之间的差异,需要控制硬件环境,系统库等版本一致。下文中的对比实验都在相同的硬件条件和系统环境条件下进行. +对硬件方面,对GPU验证需要保证GPU的型号一致; 对CPU需要保证CPU型号一致; 对软件方面,基础库Cuda大版本需要保持一致,例如Cuda9与Cuda8支持指令不同,运行速度有差异,在此软件环境下,源码编译paddle。paddle会针对cuda生成对应的sm\_arch二进制\ `sm\_arch `__\ 。cudnn对重卷积类任务影响巨大,需要版本\ **完全一致**\ 。 本教程中的硬件环境为 Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz. TITAN X (Pascal) 12G x 1 系统环境为 System: Ubuntu 16.04.3 LTS, Nvidia-Docker @@ -22,8 +17,8 @@ benchmark的结果强依赖于硬件。所以需要保证影响指标的硬件 采用的Fluid版本为\ `v.0.12.0 `__, 需要commit一致. -模型选择 -~~~~~~~~ +基准模型选择 +############ benchmark需要兼顾大小模型,不同训练任务下的表现, 才能说明框架效果。其中mnist, VGG, Resnet属于CNN模型, @@ -31,7 +26,7 @@ stacked-lstm代表RNN模型. `benchmark `__ 测试过程 -~~~~~~~~ +######## - CPU @@ -61,7 +56,7 @@ nvidia/cuda:8.0-cudnn7-devel-ubuntu16.04 将其中的CASE\_NAME和IMAGE\_NAME换为对应的名字,运行对应的例子 测试结果 -~~~~~~~~ +######## CPU测试结果 @@ -96,11 +91,3 @@ GPU测试结果 +----------------+----------------+---------------------+ 注:mnist由于图像太小,采用计量单位为s - -Reference -~~~~~~~~~ - -- PaddlePaddle Fluid - `Paddle `__ - -- TensorFlow `TensorFlow `__ -- GitLab