武汉芯逻辑科技 神经网络加速器IP

1.1 EEP-TPU 张量处理器架构介绍
神经网络编程模型的本质是计算图模型,如下图所示,计算图的输入/输出是张量 数据,计算图的类型代表操作类型。因此,直观的,最适合于神经网络编程模型的计 算体系结构,是 Graph/Tensor 计算体系,其中,处理器的功能由计算图类型决定, 而数据则是计算图的输入/输出张量。

然而,计算图这一层级的粒度太粗,各类型间并没有太大的相关性,一个典型的 神经网络计算由 Convolution、Pooling、BN、Scale、RELU 等组成,它们之间的行 为差异巨大,如果处理器按照计算图操作的粒度去设计,这就意味着需要为每一个计 算图操作(或某几个)设计专门的计算硬件(正如 NVIDIA DLA 那样,NVDLA 为卷 积、池化和 BN 专门设计了不同的计算电路),这样的代价是巨大的,而且也不具备 可扩展性。
EEP-TPU 所采用的张量运算集用一种巧妙的方式解决了 Graph/Tensor 体系结构 中的核心问题:如何用一套标准、完善且最大粒度的操作( 粒度远远高于传统 CPU/GPU 的加、减、乘、除,同时也是各计算图的子集)来定义基础运算类型。
在张量运算集中,张量运算被划分为 1 维、2 维、3 维和 4 维四大种类,每个种类 又由各种不同类型的计算操作组成,从而形成一个完备的计算集合,通过这些张量运 算操作的组合,便能在相同硬件架构下,完成如卷积、DW 卷积、Pooling、Resize、 Relu 等计算图操作。
CPU、GPU、EEP-TPU 的处理器架构对比如下图所示:

相比于传统 CPU 的 Instruction/Data 和 GPU 的 Instruction/Thread 架构,EEP-
TPU 的 Graph/Tensor 架构有如下明显优势:
编程模型直观且简单。直接面向神经网络编程模型,使用计算图模型作为原始 输入,不存在模型转换和传统 CPU/GPU 软件并行编程的优化与匹配问题,在 合理的编译器分配下,便可最大化利用硬件资源。
 无指令(计算图类型的切换,最终通过电路重构来实现,实际计算过程中并无 任何指令开销)。CPU 几十年架构演变的首要目标,就是增大指令执行效率, 减少指令调度和切换的开销。尽管 GPU 架构对指令调度的依赖较小,但其数 据计算仍然需要在指令的调度下统一工作。EEP-TPU 的无指令架构完全消除 了由指令引入的计算性能(由指令调度和切换引入)和计算资源(由指令控制 和存储引入)的开销。
 内存带宽需求低。传统 CPU/GPU 架构是一种基于指令的计算体系,内存带宽 需求高,例如,一个 32 位加法操作,需要多次指令和数据的内存访问才能完 成。在 EEP-TPU 的 Graph/Tensor 架构下,每个数据只需从内存读出一次, 便可完成它生命周期内的所有计算操作,存储器访问频次降低到每个数据一次, 相比传统 CPU/GPU 完成相同工作要小得多,因此内存带宽的需求比传统 CPU/GPU 小得多。
 片上缓存容量低。传统 CPU/GPU 架构需要引入多层级的存储结构来解决“存 储墙”问题。由于 EEP-TPU 无指令,且内存带宽需求低,因此只需一个小容量
的片上缓存便可满足计算过程中的数据缓存需求。

针对边缘、终端、传感器场景,通常一个 EEP-TPU Core 的算力就能满足绝大多
数应用的需求(28nm 工艺下最高算力为 2T FP16 FLOPS)。如果需要更高性能,则 可采用多核的方式实现性能扩展。特别的,在 Xilinx zynq 7020 上部署 EEP-TPU,算 力约为 0.03T FP16 FLOPS。在这样的算力水平下,已经可以实现最高 30FPS 的实时 目标检测任务(基于 YOLOV3)。而在多核架构下,算力可以轻松达到 32T FP16 FLOPS(英伟达 P100 算力为 18.7T FP16 FLOPS),如下图所示:

1.2 EEP-TPU 神经网络处理器架构
1.1所介绍的张量处理器,从集成电路设计与集成电路工艺的角度出发,仍然采用与 CPU、GPU、DSP 等传统芯片几乎相同的计算内核:乘法器电路。尽管体系结构的优化 可以使得乘法器计算内核的使用效率增加,但其仍然无法摆脱乘法器单元所带来的“性能 天花板”。神经网络处理器就是为了突破这种限制而产生的全新电路结构。
简单来讲,神经网络处理器就是希望使用全新的模拟电路形态的乘法器来代替传 统的数字电路形态的乘法器,并且把乘法器的计算单元与存储单元进行叠加,实现存 储与计算的一体化,从而达到 1~2 个数量级的性能提升。
一种神经网络处理的架构演变如下图所示。

EEP-TPU 神经网络处理器属于全新的下一代产品,可以做到现有软件体系架构下
对张量处理器的全新升级与替换,目前仍处于验证阶段。

1.3 EEP-TPU 异构计算
在一个完整的人工智能芯片产品中,通常包含多种不同架构的处理器核心,最基本 的,至少包含一个 CPU 和一个 TPU。
对于一个包含 CPU 与 TPU 的人工智能系统来讲,CPU 与 TPU 可以完成相同的计 算任务,唯一的区别是能耗、时延、资源占用等性能的不同。在这里特别要注意的是, 尽管 TPU 是专门针对人工智能计算而设计的处理器,对于深度学习算法中的某种特定 计算类型来说,TPU 的计算并不一定有绝对的性能优势。例如, TPU 更擅长于处理数 据流计算类型的任务,而并不擅长仅通过坐标变换就能实现的控制类型的任务,而这 类控制类型的任务交由 CPU 实现具有更高的效率。
因此,由不同类型的处理器组成,并且各处理器发挥不同的优势共同完成某种计算, 成为了一个高效率人工智能计算系统的关键,这就是异构计算系统开发的初衷。

EEP-TPU 拥有一套完整的异构计算支撑体系。该支撑体系由编译器+异构计算框架
组成,可以支持由 CPU+TPU 组成的异构计算系统的高效计算。其中,编译器的作用 是分析来自用户输入的深度学习算法,并根据某种选择和规则,把深度学习算法进行 CPU 和 TPU 计算的切割,并分别进行优化与编译,最终生成 CPU 可执行文件和 TPU 可执行文件。EEP-TPU 编译器框图如下。

TPU 可执行文件和 CPU 可执行文件在实际工程中,将被打包成一个独立的 BIN 文 件,由运行在端末目标系统的异构加速框架读取并执行。
EEP-TPU 的异构计算框架是一套由 C/C++语言编写的,运行在目标操作系统之上 的底层软件系统,该软件系统读入来自编译器的可执行文件,并根据可执行文件的内 容,自动完成 CPU 计算与 TPU 计算的资源分配、任务调度、数据转换、数据传输等 工作,从而实现异构计算。
EEP-TPU 的异构计算框架封装了各种类型的的深度学习计算层,极端情况下,可 以不使用 TPU,仅使用 CPU 便可完成所有的深度学习计算(以极低的效率)。因此,

从用户的角度来看,该异构计算框架几乎可以承载所有类型层的计算,从而实现绝大
多数的深度学习算法,并通过使用 EEP-TPU,自适应的完成深度学习计算的高效加速。 在这过程中,用户对于该异构计算框架的使用几乎是无感的。




支持 TPU 神经网络加速器的 FPGA 平台


FACE-Z7:ZYNQ 7100 全可编程开发平台

FACE-ZU:ZYNQ UltraScale 多核心高性能计算平台

FACE-V7:Virtex7 高性能可编程计算平台
FACE-KU:Kintex UltraScale 异构计算加速平台

FACE-VU13P大规模平台

神经网络深度学习计算的高效加速相关推荐

  1. 什么是CUDA和CUDNN?——GeForce NVIDIA显卡用于深度学习计算的GPU加速工具

    1.什么是CUDA? CUDA的概念 统一计算架构CUDA(Compute Unified Device Architecture)是为了让nvidia gpu可以完成通用计算任务的一种集成技术 ,通 ...

  2. 广告深度学习计算:异构硬件加速实践

    丨目录: - 前沿 1. 算力需求与供给 1.1 算力需求:模型复杂度 1.2 算力供给:异构硬件计算能力 1.3 问题与优化方法 2. 算法-系统-硬件协同性能优化 2.1 算法优化 2.2 系统优 ...

  3. 广告深度学习计算:多媒体AI推理服务加速利器high_service

    本文作者:雨行.列宁.阿洛.腾冥.枭骑.无蹄.逍城.少奇.持信.云芑 本文是上一篇内容<广告深度学习计算:阿里妈妈智能创意服务优化>工作的进一步延伸,欢迎阅读交流. 概述 随着视频.文案. ...

  4. 如何从系统层面优化深度学习计算?

    编者按:在图像.语音识别.自然语言处理.强化学习等许多技术领域中,深度学习已经被证明是非常有效的,并且在某些问题上已经达到甚至超越了人类的水平.然而,深度学习对于计算能力有着很大的依赖,除了改变模型和 ...

  5. 手把手教你从系统层面优化深度学习计算

    来源: 微软研究院AI头条 本文约5643字,建议阅读10分钟. 在图像.语音识别.自然语言处理.强化学习等许多技术领域中,深度学习是非常有效的,并且某些问题已经达到甚至超越了人类的水平.除了改变模型 ...

  6. 腾讯 AI Lab 正式开源PocketFlow自动化深度学习模型压缩与加速框架

    11月1日,腾讯AI Lab在南京举办的腾讯全球合作伙伴论坛上宣布正式开源"PocketFlow"项目, 该项目是一个自动化深度学习模型压缩与加速框架,整合多种模型压缩与加速算法并 ...

  7. 端上智能——深度学习模型压缩与加速

    摘要:随着深度学习网络规模的增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用.如何使用深度学习来对模型进行压缩和加速,并且保持几乎一样的精度?本文将为大家详细介绍两种模型压缩算法,并展示 ...

  8. 从深度学习计算过程来分析深度学习工作站\服务器的硬件配置

    柯洁和AlphaGo的故事已经结束,输赢显得并不重要,这个天才少年曾落泪哽咽:它太完美我看不到希望.搭载谷歌无人驾驶技术的车辆已经完成200万英里的测试,如今它打算要载人了,无人驾驶真的已经不远.在苹 ...

  9. 系统层面优化深度学习计算

    百度首页 yuancsnuist 如何从系统层面优化深度学习计算? 搜狐科技05-1717:18 编者按:在图像.语音识别.自然语言处理.强化学习等许多技术领域中,深度学习已经被证明是非常有效的,并且 ...

最新文章

  1. Xcode+OpenCV3.4.0 折腾(2)
  2. GPU Gems1 - 26 OpenEXR图像文件格式与HDR(The OpenEXR Image File Format and HDR)
  3. 为什么不能同时用const和static修饰成员函数?
  4. java程序设计及实践实践代码_杭+新闻:姚争为老师把程序设计讲“活”了,满是代码的枯燥课程被学生“秒杀”...
  5. 静态RAM(2K * 8位)6116介绍(抄自原理图)
  6. 116.填充同一层的兄弟节点
  7. 移动设备数据丢失恢复办法
  8. EJB是什么?(节选)
  9. 数据仓库系列之总线架构
  10. 有效管理“刺头”员工的方法
  11. 把Date类型的Fri Feb 01 00:00:00 CST 2019转换成yyyy-MM-dd格式
  12. tomcat启动失败:Failed creating java jvm.dll
  13. strtolower() 函数
  14. Gnirehtet使用教程 —— 将电脑网络通过USB共享给Android 设备
  15. 在线教育app 一对一辅导 内容付费 直播 网校app EduJoin
  16. eclipse导入idea项目
  17. PyPi、pypi有啥作用?PyPi和pip有何渊源
  18. 成为跨领域的「解决方案架构师」需要什么素养?
  19. [4G5G专题-30]:物理层-基带无线资源、物理层帧结构、无线资源调度
  20. c语言随机产生大小写字母,c# 产生随机字符串,包括大小写字母和数字

热门文章

  1. Python基础教程读书笔记(第1章—第2章:基础知识、列表和元组)
  2. 华为AR161w-s设备
  3. 多张CAD图纸文件如何快速转换成高清黑白BMP格式?
  4. Pi主网功能上线,等待起飞
  5. 实战操作四项基本原则
  6. Mac 下载安装Mendeley, 配置好word
  7. 物联网卡助力智能电子猫眼全面物联网化
  8. 荣誉丨国辰机器人荣获维科杯•OFweek 2021中国机器人行业年度优秀应用案例奖
  9. 行为型设计模式之观察者模式(Observer)
  10. Unity3D游戏制作学习记录01——丛林战争