65.9K
CodeProject 正在变化。 阅读更多。
Home

Intel 的 6 款工具,用于加速深度神经网络

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2019年1月10日

CPOL
viewsIcon

8146

本文介绍英特尔提供的一系列工具:英特尔® Movidius™ 神经计算棒、英特尔® Python 发行版、英特尔® 数学核心 DNN 库、英特尔® 数据分析加速库、英特尔® OpenVINO™ 工具包发行版。

深度神经网络 (DNN) 功能强大,广泛用于构建机器学习应用。它们在图像识别和视觉任务等任务中尤为有用。

从本质上讲,DNN 倾向于消耗大量的计算资源。因此,优化它们的性能对于确保它们在所需时间内生成结果,并最大程度地降低运行 DNN 所需基础设施的获取和维护成本至关重要。

幸运的是,有多种工具可用于 DNN 优化。本文介绍英特尔提供的一系列工具。

这些工具的性质各不相同,从硬件到软件,旨在通过使用机器学习社区流行的库融入现有工作流程,而不是要求从头创建新库。

本文将概述每种工具的工作原理以及为何要使用它。

英特尔 Movidius 神经计算棒

英特尔 Movidius 神经计算棒是一款具有运行神经网络专用硬件的 USB 设备。该设备包含流式混合架构矢量引擎 (SHAVE) 处理器和 VPU,并结合内置 RAM,可减少带宽需求,因为数据可以在本地处理。该设备面向计算机视觉和 AI 任务,并已成功用于 Ryze Tello 无人机。

该设备用于在云端训练模型,然后将模型传输到设备上进行预测。之后可以使用 SDK 对模型进行调整以优化其性能。预测和调整都可以离线完成,从而减少了带宽需求。

英特尔 Movidius 神经计算棒因其低功耗而成为嵌入式应用的理想选择。此外,其离线工作能力使其在带宽有限的情况下非常可靠。它还可以与 Tensorflow 和 Caffe 等现有库配合使用,这意味着它可以轻松融入现有的开发工作流程。

使用英特尔 Movidius 神经计算棒的前提是拥有一个经过训练的 Tensorflow 或 Caffe 神经网络模型。然后可以使用 Movidius SDK 将模型下载到该设备上。您可以在此 视频 中找到有关如何访问 SDK 的说明。

英特尔® Python 发行版

英特尔® Python 发行版 是一个基于 Anaconda 的 Python 发行版,其中包含用于数学和机器学习 (ML) 的流行库,例如 NumPy、SciPy、scikit-learn 等。该发行版与其他发行版不同的地方在于,数学库(如 NumPy 和 scikit-learn)针对英特尔架构进行了优化。

这些优化是通过英特尔的性能库实现的,例如英特尔® 数学核心库和英特尔® 数据分析加速库。它允许访问最新的向量化和多线程指令,这也有助于加速您的 Python 代码。

使用此 Python 发行版无需更改现有代码,因为您喜欢的数学和 ML 库的接口保持不变。这意味着您只需更改解释器为英特尔的发行版,即可享受其优化带来的好处。

立即 免费下载。或者,您可以使用 pip 安装单个英特尔库。以下是英特尔 Python 实现数学和 ML 库的包名。

包名 pip 命令 平台可用性
numpy pip install intel-numpy Linux、Windows、macOS (10.12)
scipy pip install intel-scipy
scikit-learn pip install intel-scikit-learn
pydaal pip install pydaal
tbb4py pip install tbb4py

来源:https://software.intel.com/en-us/articles/installing-the-intel-distribution-for-python-and-intel-performance-libraries-with-pip-and

您可以在英特尔的 网站 上找到有关安装英特尔 Python 包的更多信息。

英特尔® 数学核心库

如上所述,英特尔提供了针对英特尔架构优化的英特尔® 数学核心库。这些库旨在加速数学和数据分析,特别是在英特尔处理器上。英特尔还推出了英特尔数学核心库 DNN (Intel MKL-DNN),以提高 DNN 的性能。该库是用 C++ 实现的,可以直接集成到您的应用程序中,也可以从 Python 等其他高级编程语言中使用。

与英特尔的 Python 实现一样,英特尔的 MKL-DNN 库提供了一种在英特尔处理器上加速 DNN 的方法。这非常适合缩短 DNN 实验所需的时间。

今天即可免费下载此库。

英特尔® 数据分析加速库

英特尔的数学库还包括旨在加速数据分析的英特尔数据分析加速库。与 MKL-DNN 一样,它也是用 C++ 实现的,针对英特尔处理器进行了优化,并且可以从其他高级编程语言调用。这使得它易于集成到您的应用程序中,或者简单地添加到您的数据分析工具箱中。

这是一个有用的库,可以快速概览用于 DNN 的数据,并且可以通过您喜欢的高级编程语言轻松地将其添加到您的工作流程中。此外,请注意,该库已集成到英特尔的 Python 实现中;因此,如果您使用 Python,则无需直接使用它。您可以从英特尔的 网站 免费下载此库。

英特尔® OpenVINO™ 工具包发行版

英特尔 Open Visual Inference and Neural network Optimization (OpenVINO) 工具包是专为计算机视觉设计的工具包。该库可用于使用卷积神经网络 (CNN) 来模拟人类视觉,CNN 是一种 DNN。

此工具可以实现 CNN 在异构设备集合上的执行,包括英特尔 CPU、FPGA 和英特尔 Movidius 神经计算棒。这意味着 CNN 的工作负载可以分布在不同类型的多个设备上。此功能加快了 CNN 的推理速度,从而实现了实时推理。

该工具包的关键组件是英特尔 深度学习部署工具包,它专门用于简化将训练好的模型部署到各种英特尔平台和加速器上的过程。该工具包还提供了对 OpenCV 和 OpenVX 的优化调用。这使得您可以轻松地与可能已在您工作流程中的现有库进行交互。您可以在英特尔网站上访问此工具。

在此处 选择您最佳的下载选项

BigDL:Apache Spark 上的分布式深度学习

英特尔还通过其 BigDL 库提供了一个工具,用于使用 Apache Spark 上的分布式计算来加速深度学习。该库允许您将 DNN 应用程序编写为标准的 Spark 程序,这些程序可以在 Spark 和 Hadoop 群集上运行。该库模仿 Torch,通过 Tensor 和高级神经网络提供丰富的、类似 DNN 的数值计算。也可以通过 BigDL 库将用 Caffe 或 Torch 编写的预训练神经网络加载到 Spark 中。

BigDL 库还使用英特尔 MKL 库和多线程编程来加速 DNN。这使得 BigDL 库比开箱即用的 Torch 或 Caffe 模型快了几个数量级。该库还允许您高效地横向扩展以对大数据执行数据分析。您可以从这个 GitHub 仓库 访问 BigDL 库。

结论

随着深度神经网络在生产级机器学习应用中变得越来越重要,寻找优化 DNN 性能的方法将至关重要。幸运的是,即使您已经完成了 DNN 架构和代码,也有许多工具可用于提高 DNN 的效率。诸如使用优化的 Python 实现或专用硬件之类的简单更改可以显著提高 DNN 性能,并使 DNN 能够大规模实用部署。

© . All rights reserved.