为了让用户快速了解深度学习平台的性能指标以便于选择,我们使用 TensorFlow 性能测试代码中的 CNN Benchmark ,对常用硬件配置组合进行了测试。 我们选择 ResNet-50 模型,调用 Python 3.6 + TensorFlow 1.7.0 环境,使用合成数据进行测试。

山河深度学习平台性能测试表

运行环境 CPU Memory GPU BatchSize 项目 Images/Sec (step time)

CUDA 9.1

8核(默认)

32G

1

64

训练

199.09 (5.02ms)

CUDA 9.1

8核(默认)

32G

1

64

推理

632.51 (1.58ms)

CUDA 9.1

8核(默认)

32G

2

64

训练

382.38 (2.62ms)

CUDA 9.1

8核(默认)

32G

2

64

推理

1102.66 (0.91ms)

CPU (无优化)

8核(默认)

32G

0

32

训练

1.91 (523.56ms)

CPU (无优化)

8核(默认)

32G

0

32

推理

8.36 (119.62ms)

CPU (无优化)

16核(默认)

32G

0

32

训练

2.62 (381.68ms)

CPU (无优化)

16核(默认)

32G

0

32

推理

11.44 (87.41ms)

CPU (MKL优化)

8核(Broadwell)

32G

0

32

训练

12.55 (79.68ms)

CPU (MKL优化)

8核(Broadwell)

32G

0

32

推理

37.78 (26.47ms)

CPU (MKL优化)

16核(Broadwell)

32G

0

32

训练

16.15 (61.92ms)

CPU (MKL优化)

16核(Broadwell)

32G

0

32

推理

48.65 (20.55ms)

为了便于用户对比,我们选择和官方各项测试接近的硬件配置和相同的 BatchSize 。

因为 CPU 无优化版本仅支持 NHWC 数据格式,所以除了 CPU (无优化版)测试,其他测试中使用的数据格式均为 NCHW 。

CPU 版本测试中,使用常用优化方式,设置 intra_op 等于物理核个数, inter_op 为 1, kmp_blocktime 为 30(对本测试用例的 ResNet-50 模型和 BatchSize 32,适用该值,其他任务需要依据实际情况调整)。