使用 Intel® MKL 安装和构建 MXNet
MXNet 是一个开源的深度学习框架,允许您定义、训练和部署深度神经网络到各种设备上,从云基础设施到移动设备。
摘要
MXNet 是一个开源的深度学习框架,允许您定义、训练和部署深度神经网络到各种设备上,从云基础设施到移动设备。它具有高度可扩展性,可以实现快速的模型训练,并支持灵活的编程模型和多种语言。MXNet 允许您混合符号和命令式编程风格,以最大限度地提高效率和生产力。MXNet 基于动态依赖调度器构建,该调度器可以自动并行化符号和命令式操作。其之上的图形优化层使符号执行快速且内存效率高。MXNet 的最新版本包含对 Intel® 数学内核库 (Intel® MKL) 2017 的内置支持。最新的 Intel MKL 版本包含对 Intel® 高级矢量扩展 2 (Intel® AVX2) 和 AVX-512 指令的优化,这些指令受 Intel® Xeon® 处理器和 Intel® Xeon Phi™ 处理器支持。
必备组件
请按照 此处 给出的说明操作。
使用 MKL 构建/安装
MXNet 可以在各种平台上使用多种开发工具和库的组合进行安装和使用。本教程提供了一种配方,描述了在基于 CentOS*- 和 Ubuntu*- 的系统上使用 Intel MKL 2017 构建和安装 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 结果。在运行之前,请设置以下环境变量以获得最佳性能
export OMP_NUM_THREADS=$(($(grep 'core id' /proc/cpuinfo | sort -u | wc -l)*2))
export KMP_AFFINITY=granularity=fine,compact,1,0
然后通过执行以下操作运行基准测试
python benchmark_score.py
如果一切安装正确,您应该会看到各种拓扑和批处理大小的 img/sec 数据输出。例如
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