Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 583

集成英特尔® 处理器显卡版本 2.0 助力加速深度学习推理

$
0
0

前言

本文第一版发表于 2017 年 5 月,推出了首款面向英特尔 GPU(英特尔文档和本文亦称英特尔® 处理器显卡,因为这些 GPU 借助英特尔 CPU 家族集成至系统芯片 (SOC))的开源深度学习核心函数库 – 面向深度神经网络的计算库 (clDNN) GitHub*。一年后,发生了很多事情。下面探讨的有关迁移至边缘的 AI 推理的趋势只会加速发展。云服务提供商正在添加 AI Edge(Amazon Web Services (AWS)*、AWS Greengrass*、Microsoft Azure* IoT 等),而且我们发现汽车新增了添加 AI 工作负载的智能扬声器,虽本地运行,但能与云环境进行通信。作为边缘推理的 AI 加速器,英特尔 GPU 具备出色的普适性和性能,推动了很多行业发展。主要亮点 — 2017 年 6 月:Apple 推出 Core ML* AI 框架,该框架使用 macOS* 中经过调优的 Metal 性能着色器 (MPS) 内核在英特尔 GPU 上加速 CNN;2017 年 11 月,Amazon Web Services 推出 AWS DeepLens AI 开发套件*,该套件在英特尔 GPU 上使用英特尔® 深度学习部署工具套件(英特尔® DL 部署工具套件)和(本文所介绍的)clDNN 库运行深度学习算法;2018 年 3 月,Microsoft* 推出面向 Windows* 的 WinML AI 框架,演示在英特尔 GPU 上运行的计算机视觉功能。在英特尔开发方面,clDNN 库现在支持更多 AI 拓扑结构,且借助优化图对性能进行了调优。近期(2018 年 5 月)推出了英特尔® OpenVINO™ 工具套件 — 之前以英特尔® 计算机视觉 SDK(英特尔® CV SDK)的 Beta 形式推出,OpenVINO 实现了多项性能和可用性增强。下文已更新为在各种使用 clDNN 库并从英特尔® 奔腾® 到高端英特尔® 酷睿™ SOC 的英特尔 GPU 上运行 OpenVINO 中的深度学习部署工具套件时所实现的最新性能数据。

简介

本文将介绍近期发布的英特尔® 软件开发工具,它跨各种英特尔系统芯片集成了英特尔® 处理器显卡解决方案,可加速边缘设备(比如智能摄像头、机器人、自动驾驶汽车等)中的深度学习推理过程。本文将特别介绍英特尔® 深度学习部署工具套件(通过OpenVINO™ 工具套件提供),以及这些工具如何帮助开发人员提升性能,更重要的是提升产品中 AI 推理的性能功耗比。本文还将介绍面向深度神经网络的计算库 (clDNN),它是用 OpenCL™ 语言编写的开源版本的神经网络内核优化。

目标受众

旨在通过英特尔® 处理器显卡最大限度地提高深度学习性能的软件开发人员、平台架构师、数据科学家和学术人员。

注:本文的人工智能 (AI)、机器学习 (ML)、深度学习 (DL) 可交换使用。我们更多地使用人工智能。本文将重点介绍人工智能中的深度学习,更具体地说是多层神经网络形式的机器学习,称为深度学习。

AI 背景信息以及迁移至边缘

人工智能 (AI) 研究领域在过去的 60 年时断时续,缓慢发展。但过去 5 年来,随着支持使用大量数据源、计算引擎的增长,以及基于神经网络的现代化算法开发,AI 领域快速发展。机器学习和多层深度学习将 AI 推进至现代生活的各个领域,因为它可应用于多种用途,包括计算机视觉、识别与分类、自然语言处理和预测。在许多生活领域中,这些基础任务可帮助优化决策过程。

正如数据科学家 Andrew Ng 指出,AI 将成为下一代电力:

“就像 100 年前电力几乎改变了一切,今天我很难想象未来几年有哪一个行业不会因 AI 而发生巨大变化。”

AI 浪潮已席卷至在服务器上运行的云环境。尽管 AI 越来越多地在云环境中的使用,但目前趋向于在边缘执行 AI 推理。相比于仅依靠云环境,这种设备趋向于在本地执行机器学习主要源于对更低延迟、持久可用性、更低成本和解决隐私问题的需求。我们正在进入 AI 设备时代,包括手机、PC、汽车、机器人、无人机,以及冰箱、洗衣机等嵌入式设备。Andrew Ng 指出,各行各业的公司都在探索 AI 战略。另外,AI 领域瞬息万变,每周都会推出独创的拓扑结构。这要求产品开发人员精心设计,使其产品能够灵活修改 AI 软件。

英特尔® 处理器显卡用作边缘 AI 推理解决方案

英特尔处理器显卡(英特尔® 核芯显卡、英特尔® 锐炬® 显卡和英特尔® 锐炬® Pro 显卡)可帮助在固定功能加速和可编程性之间实现良好的平衡,为所有新兴 AI 工作负载提供良好的性能功耗比,同时灵活地支持客户采用最新 AI 拓扑结构。具体来说,英特尔处理器显卡可提供以下特性:

普适性

作为英特尔系统芯片的一部分,英特尔处理器显卡已发运至超过 10 亿台设备,包括服务器、PC 和嵌入式设备。这使它成为了应用广泛的机器学习算法运行引擎。

可扩展性

随着 AI 嵌入至所有产品,功耗和性能的设计点将会有很大差异。英特尔处理器显卡支持多种性能功耗比产品,包括英特尔凌动® 处理器、英特尔® 酷睿™ 处理器和英特尔® 至强® 处理器。

媒体领导力

超过 70% 的互联网流量都是视频。在设备中,人工智能最大的一项用途是计算机视觉。除了 AI 计算之外,还将同时采用编码、解码和处理视频。英特尔® 快速视频同步技术基于英特尔处理器显卡的专用媒体功能,可提高媒体应用的性能和能效,特别是能够加速解码、编码和视频处理等功能。请访问 英特尔快速同步视频页面了解更多信息。开发人员使用 英特尔® Media SDK英特尔® Media Server Studio 时,API 将支持访问这些媒体功能以及面向 Windows* 和 Linux* 的硬件加速的编解码器。

强大灵活的指令集架构 (ISA)

处理器显卡 SIMD 执行单元的指令集架构 (ISA) 非常适合深度学习。该 ISA 通过 SIMD 乘法累加指令为 32 位 FP、16 位 FP、32 位整数和 16 位整数提供丰富的数据类型支持。在理论峰值期间,可在每个执行单元的时钟上完成这些操作。此外,ISA 还提供丰富的子寄存器区域寻址功能,支持高效共享交叉通道,从而优化卷积实施,或支持高效的水平扫描减法操作。最后,ISA 提供高效的内存块加载,以快速加载数据块,从而优化卷积或优化通用矩阵乘法实施。

内存架构

使用独立显卡加速深度学习时,每次执行的输入和输出数据必须从系统内存传输到独立显存,会导致延迟和功耗翻倍。英特尔处理器显卡在芯片和 CPU 集成在一起。这种集成有利于 CPU 和处理器显卡共享系统内存、共享内存控制器,以及共享部分缓存层级结构。这种共享内存架构可实现高效的输入/输出数据传输,甚至可以实现“零拷贝”缓冲区共享。另外,英特尔还提供包含其他封装集成 eDRAM 的 SKU 产品。

英特尔® 深度学习部署工具套件

为了轻松有效地利用英特尔处理器显卡的硬件资源,英特尔提供可通过 OpenVINO 工具套件获得的深度学习部署工具套件。该工具套件采用经过训练的模型,并可根据特定端点设备的特性进行定制以达到最佳运行状态。另外它还提供统一 API 将推理和应用逻辑集成起来。

深度学习部署工具套件包含两个主要组件:模型优化器和推理引擎(图1)。

Model flow Deep Learning Deployment Toolkit
图 1.通过深度学习部署工具套件的模型流程

模型优化器

它是一种跨平台命令行工具,可执行静态模型分析并调整深度学习模型,以在端点目标设备上实现最佳执行。具体来说,模型优化器可:

  • 视作训练的网络在特定于框架(比如 Caffe* 框架)的格式下的输入
  • 执行网络层的水平和垂直融合
  • 裁剪网络中未使用的分支
  • 量化权重
  • 以网络内部表达 (IR) 作为输出 — 生成描述整个模型的两个文件:
    • 拓扑文件 – 一种描述网络拓扑的 XML 文件
    • 训练数据文件 – 一种包含权重和偏差二进制数据的 .bin 文件

生成的 IR 用作推理引擎的输入。

推理引擎

它是一种可提供统一 API,将推理和应用逻辑集成起来的运行时。具体来说,它可:

  • 以模型优化器生成的 IR 作为输入
  • 优化目标硬件的推理执行
  • 交付推理解决方案,节省嵌入式推理平台的空间

深度学习部署工具包可以优化在 CPU、GPU 和 FPGA 等不同硬件单元上运行的推理。为实现 CPU 加速,它使用 MKL-DNN 插件英特尔® 数学核心函数库(英特尔® MLK)的域,包含加速常用图像识别拓扑结构所必需的功能。使用面向英特尔® 深度学习推理加速器(英特尔® DLIA)的插件可支持 FPGA 加速。关于 GPU,深度学习部署工具套件包含 clDNN— 一种 OpenCL 内核库。下一节将介绍 clDNN 如何帮助提高推理性能。

Performance Improvement Using the OpenVINO Toolkit

深度神经网络计算库 (clDNN)

clDNN 是一种内核库,用于加速英特尔处理器显卡的深度学习。基于 OpenCL,这些内核可加速常用拓扑结构中的许多常用函数调用(AlexNet、Visual Geometry Group(VGG)、GoogLeNet、ResNet*、Faster-RCNN*、SqueezeNet* 和 FCN*,现在支持更多)。为了给开发人员提供最大的灵活性和最高的可实现性能,英特尔正在提供:

1.完整的开源库,以便开发人员和客户将现有内核用作模型来构建或创建可运行深度学习的特定于硬件的内核。

2.计算扩展,以向开发人员展示完整的硬件功能。

在网络编译期间,clDNN 将工作流优化过程分为以下三个阶段。

Model flow from topology creation to execution
图 2.从拓扑创建到执行的模型流程

网络编辑和clDNN的 3 个阶段

第 1 阶段网络级别

融合是在 DL 中优化图形最有效的一种方法。在 clDNN 中,我们创建了两种方法来执行融合 - 一种可以在单个加速器(朴素推理客户端)上自动运行,另一种是让更有经验的数据科学家进行调整,以跨多个加速器(融合基元集)运行。更详细地说:

  • 朴素推理客户端 — 有一个工作负载,希望它在一个加速器上运行。在这种情况下,用户可以在网络编辑期间请求 clDNN 执行融合。
  • 融合基元集 — 采用这种方法时,具有模型调整经验的用户在其应用中使用模式匹配进行图形编译,以平衡不同加速器的工作。对于这种方法,我们公开已经融合的基元。

目前 clDNN 支持 3 种融合:支持激活的卷积、支持激活的完全连接,以及支持激活融合基元的去卷积。其他融合正在开发中。

网络级别优化的另一部分是填充实施。选择用作数据存储的 OpenCL 缓冲区需要填充,有两种方法,一种是在内核中添加条件,另一种是输入数据周围为缓冲区提供提供一个框架。第一种方法会消耗整个寄存器预算,从而限制卷积内核的可用寄存器,进而对性能产生负面影响。

实验表明,在缓冲区周围添加适当的对齐框架会提供更好的性能结果,如下所示:

考虑包含两个基元 A 和 B 的网络。B 包含等于 2 的填充:

Padding Example
填充示例

Padding with frame
添加大小为 2 x 2 的框架

Reordered primitive
要添加框架,我们需要添加重排序基元

A primitive fused with B

第 2 阶段.内存级别

只要定义了拓扑并提供了数据,网络就可以进行编译。网络编译的第一步是确定激活布局。在 DNN 中,存储在隐藏层中的数据被定义为 4D 内存块。在 clDNN 中,用 4 个字母定义布局描述:

  • B - 批次中补丁的数量
  • F - 特征图或通道的数量
  • X - 空间或宽度
  • Y - 空间或高度

Example of a memory chunk
图 4.内存块示例

 B F Y X layout
图 5.大多数情况下最佳布局为 BFYX

如果数据类型为半精度 (fp16),批次大小大于或等于 32,且卷积使用拆分参数(像 AlexNet 卷积中的深度拆分),那么 clDNN 布局为 YXFB。

Y X F B layout
图 6.YXFB布局

在内存级别优化期间,选择每个基元的内核之后,clDNN 运行权重优化,将用户提供的权重转化为适合所选内核的权重。卷积权重存储在:

Weights  in I S_I Y X_O S V 1 6
图 7.IS_IYX_OSV16 中的卷积权重

对于完全连接的网络,根据数据类型(fp16 / fp32)的不同,权重可以转化为以下一种:

Memory layouts for optimized fully connected primitives
图 8.优化型全连接基元的内存布局

第 3 阶段.内核级别

为了在英特尔处理器显卡上有效地支持现代拓扑结构,需要重点完成卷积实施。为此,clDNN 使用输出块支持英特尔处理器显卡上的每个线程一次计算多个输出。块的大小取决于卷积步长的大小。如果块大小大于步长,clDNN 将使用混编技术重新使用邻域内的权重和输入。这种方法使 AlexNet 卷积内核上产生了 85% 的性能峰值。所有读取和写入都使用更优化的 block_read / block_write 函数。类似的方法可用来高效运行去卷积和池化基元。

性能数据

英特尔 SOC 中的集成 GPU 性能

GoogleLeNet comparison benchmark

ResNet comparison benchmark

AlexNet comparison benchmark

上述运行的显卡

显卡集成至
英特尔® 核芯显卡 505英特尔® 奔腾® N4200 CPU @ 1.10 GHz - Windows
英特尔® 核芯显卡 630英特尔® 酷睿™ i5-7600 CPU @ 3.50 GHz -GT @1150 MHz - Windows
英特尔® 锐炬™ Plus 显卡 650英特尔® 酷睿™ i7-7567U CPU @ 3.50 GHz -GT @1150 MHz - Windows
英特尔® 锐炬™ Pro 显卡 580英特尔® 酷睿™ i7-6770HQ CPU @ 2.60 GHz -GT @950 MHz - Windows

所有英特尔平台均通过英特尔® OpenVINO™ 工具套件中的英特尔深度学习部署工具套件运行。

英特尔锐炬 Pro显卡可提升峰值性能,而英特尔核芯显卡可提升性能功耗比。

能效

在一些功耗受限的工作负载中,相比绝对性能,更重要的是要最大限度地提高性能功耗比。由于降低时钟速率会导致功耗线性下降,但电压一致,因此GPU 性能功耗比会随着频率降低而线性增加。在低功耗状态下,英特尔核芯显卡可以更高的每瓦 FPS 运行,同时保持较低的频率。不同的英特尔® 处理器产品的漏电率和电源行为各不相同,例如,英特尔 “Y skus” 的第六代和第七代处理器,比如采用英特尔® 核芯显卡 515 的英特尔® 酷睿™ m7-6Y75 处理器的峰值性能较低,但性能功耗比更高。在功率和性能点中选择合适的英特尔 SOC 并选择相应的频率,开发人员可进行调整以满足各种工作负载和功耗要求。

结论

由于机器学习,特别是过去几年深入学习领域的巨大进步,人工智能的应用越来越普遍。边缘的所有设备都在进行迁移以实施某种形式的 AI,出于成本、延迟和隐私问题,AI 将越来越多地在本地执行。英特尔处理器显卡为加速深度学习工作负载提供了一个很好的解决方案。本文介绍了优化的 CNN 内核的深度学习模型优化器、推理引擎和 clDNN 库,可帮助开发人员将支持 AI 的产品推向市场。

附录A. clDNN 库中的基元列表

面向深度神经网络的计算库 (clDNN) 是一款用于在英特尔® 核芯显卡和锐炬™ Pro 显卡上加速 DNN 推理的中间件软件。该项目包括通过 C 和 C++ 接口在英特尔 GPU 上实施 CNN 基元。

clDNN 库实现了一个基元集:

  • 计算基元
    • 卷积
    • 去卷积
    • 全连接(内部产品)
    • 元素智能
  • 池化
    • 平均
    • 最大
    • ROI 池化
  • 归一化
    • 跨渠道/渠道内 LRN
    • 归一化
    • 批量归一化
  • 激活
    • 修正线性单元 (RelU)
  • 辅助
    • 裁切 (Crop)
    • 串联
    • 简单 NMS
    • Prior box
    • 检测输出
    • 重新排序
  • Softmax

通过这个原始集,用户可以构建和执行最常见的图像识别、语义分割和对象检测网络拓扑结构。部分业经验证的拓扑结构包括:AlexNet、VGG(16,19)、GoogLeNet(v1,v2,v3)、ResNet(50,101,152)*、更快的 R-CNN*、Squeezenet*、SSD_googlenet*、SSD_VGG*、PVANET*、PVANET_REID*、age_gender*、FCN* 和 yolo*

参考资料

有关更多信息或如何开始使用,请访问以下链接下载工具或资源库:

将深度学习部署工具套件作为 OpenVINO 工具包组件的一部分下载或独立下载

获取 clDNN 开源的 GitHub 链接

第九代英特尔® 处理器显卡的计算架构

Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more information, see Performance Benchmark Test Disclosure.


Viewing all articles
Browse latest Browse all 583

Trending Articles