深度学习与Intel MKL-DNN

深度学习作为机器学习的一个子集,近年来在人工智能领域取得了巨大的进展。它利用大数据集、高度并行的处理能力以及构建越来越智能的设备的需求,通过模拟数据中的高级抽象来实现。如图1所示,机器学习本身是人工智能的一个子集,人工智能是计算机系统尝试模仿人类智能的广泛研究领域。

Intel在深度学习领域的参与

Intel通过优化流行的框架如Caffe*和Theano*,充分利用Intel®架构(IA),创建了如Intel®深度学习SDK等高级工具,为数据科学家提供便利,并为开发者社区提供了如Intel®数据分析加速库(Intel® DAAL)和Intel®深度神经网络数学核心库(Intel® MKL-DNN)等软件库。

Intel MKL-DNN简介

Intel MKL-DNN是一个开源的性能增强库,用于在IA上加速深度学习框架。如图2所示,它包括用于实现卷积神经网络的高向量化和线程化构建块,提供C和C++接口。

Intel MKL-DNN的主要对象类型

Intel MKL-DNN操作的主要对象类型包括:原语(Primitive)、引擎(Engine)和流(Stream)。这些对象在库文档中定义如下:

  • 原语(Primitive):任何操作,包括卷积、数据格式重排和内存。原语可以有其他原语作为输入,但只能有内存原语作为输出。
  • 引擎(Engine):执行设备,例如CPU。每个原语都映射到一个特定的引擎。
  • 流(Stream):执行上下文;将原语提交到流中进行处理,然后等待完成。提交到流中的原语可能有不同的引擎。流对象还跟踪原语之间的依赖关系。

典型工作流程

典型的工作流程是创建一组原语,将它们推送到流中进行处理,然后等待完成。有关编程模型的更多信息,请参考Intel MKL-DNN文档。

资源

网络上有许多有用的资源描述了Intel MKL-DNN是什么,不是什么,以及开发者通过将库集成到他们的深度学习项目中可以期望实现什么。

Intel MKL-DNN是一个开源库,可以在GitHub上免费下载,它被描述为一个性能库,用于深度学习应用,包括实现卷积神经网络的构建块,提供C和C++接口。

本节详细说明在GitHub仓库网站上提供的安装信息,提供详细的、分步骤的安装和构建Intel MKL-DNN库组件的说明。

Intel MKL-DNN有以下依赖:

  • CMake* – 一个用于构建、测试和打包软件的跨平台工具。
  • Doxygen* – 一个从注释源代码生成文档的工具。
sudo apt install cmake sudo apt install doxygen

通过打开终端并输入以下命令,从GitHub仓库克隆Intel MKL-DNN库:

git clone https://github.com/01org/mkl-dnn.git

要验证构建,请执行以下命令:

make test

Intel MKL-DNN的文档可以在线获取。也可以通过在mkl-dnn/build目录下执行以下命令在本地系统上生成:

make doc

通过执行以下命令完成Intel MKL-DNN的安装:

sudo make install

GitHub仓库包含C和C++代码示例,演示如何构建一个由卷积、修正线性单元、局部响应归一化和池化组成的神经网络拓扑块。

本节描述了如何在Linux中从命令行构建这些代码示例。

要构建包含在Intel MKL-DNN仓库中的C++示例程序(simple_net.cpp),请首先转到examples目录:

cd ~/mkl-dnn/examples mkdir –p bin g++ -std=c++11 simple_net.cpp –lmkldnn –o bin/simple_net_cpp cd ~/mkl-dnn/examples mkdir –p bin gcc –Wall –o bin/simple_net_c simple_net.c -lmkldnn
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485