使用英特尔® MKL 安装和构建 MXNet

概要:

MXNet 是一种开源深度学习框架,支持您在各种设备上定义、训练和部署深度神经网络,从云基础设施到移动设备。它具有高度可扩展性,可用于实施快速模型训练,支持灵活的编程模型和多种语言。MXNet 支持您混合使用符号和命令式编程,以实现最高的效率和生产力。MXNet 构建于动态依赖性调度程序之上,后者可即时对符号和命令式操作自动进行并行化处理。它上面的图表优化层可确保符号执行既快速又节省内存。 最新版 MXNet 包括对于英特尔® 数学核心函数库(英特尔® MKL)2017 的内置支持。最新版英特尔 MKL 包括针对 英特尔® 高级矢量扩展指令集 2(英特尔® AVX2) 和 AVX-512 指令的优化,英特尔® 至强® 处理器和英特尔® 至强融核® 处理器均支持这些指令。

前提条件:

请按照此处说明操作

使用 MKL 构建/安装:

MXNet 可以在各种平台上安装使用,支持不同开发工具和库的组合。关于如何利用英特尔 MKL 2017 在基于 CentOS* 和 Ubuntu* 的系统上构建和安装 MXNet,本教程会提供详细步骤。

1.     克隆 mxnet 树,获得其子模块依赖性:

git submodule update --init --recursive

git clone https://github.com/dmlc/mxnet.git

2.     将 make/config.mk 中的下列行命令编辑为“1”,以启用 MKL 支持。 

在进行构建时启用该项目可帮助您获取最新的 MKL 软件包并将其安装在系统上。

USE_MKL2017 = 1

USE_MKL2017_EXPERIMENTAL = 1

3.     构建 mxnet 库

NUM_THREADS=$(($(grep 'core id' /proc/cpuinfo | sort -u | wc -l)*2))

make -j $NUM_THREADS

4.     安装 python 模块

cd python

python setup.py install

性能指标评测:

examples/image-classification 下面提供了各种标准映像分类性能指标评测。  我们将重点介绍运行一种专为跨拓扑结构测试推断性能的性能指标评测。

运行推断性能指标评测:

所提供的 benchmark_score.py 将以不同批量大小运行各种标准拓扑结构(AlexNet、Inception、ResNet 等),并报告 img/sec 结果。.  运行前设置以下环境变量以实现最佳性能:

导出 OMP_NUM_THREADS=$(($(grep 'core id' /proc/cpuinfo | sort -u | wc -l)*2))

导出 KMP_AFFINITY=granularity=fine,compact,1,0

然后实施下列操作以运行性能指标评测:

python benchmark_score.py

如果一切安装妥当,您会看到各种拓扑结构及批量大小的 img/sec #’s 输出。例如:

INFO:root:network: alexnet

INFO:root:device: cpu(0)

INFO:root:batch size  1, image/sec:XXX

INFO:root:batch size  2, image/sec:XXX

INFO:root:batch size 32, image/sec:XXX

INFO:root:network: vgg

INFO:root:device: cpu(0)

INFO:root:batch size  1, image/sec:XXX

有关编译器优化的更完整信息,请参阅优化通知