Skip to content

智能计算系统 第六章 深度学习处理器原理

深度学习处理器概述

神经网络越来越大,越来越深 为什么需要深度学期处理器

深度学习应用广泛 - 图像识别、语言处理、自然语言处理、博弈游戏等领域 - 已经渗透到云服务器和智能手机的方方面面

通用CPU/GPU处理在人工神经网络效率低下 - 谷歌大脑:1.6万个CPU核跑了数天完成猫脸识别训练 AlphaGo:和李世石下棋用了1202个CPU和200个GPU

专门的深度学习处理器

  • 图形处理 GPU
  • 信号处理 DSP
  • 智能处理 ?
  • 未来每台计算机可能都需要一个专门的深度学习处理器
  • 云服务器到智能手机
  • 应用面将超过GPU:每年数十亿片

发展历史

第一次热潮 - 1951,SNARC - 1960,Mark-I

第二次热潮 - 1989,Intel ETANN - 1990,CNAPS - 1993,MANTRAI - 1997,预言神

1990s的神经网络处理器 - 结构简单 - 规模小

第三次热潮 2006至今 - 2008 英伟达GPU - ……

深度学习处理器发展的三个因素 技术、体系结构、应用

深度学习处理器设计思路

介于专用芯片和通用芯片之间。 能效和通用性中(不可兼得)取平衡 - 算法范围界定、算法分析 - 自定制硬件,利用算法特性 - 阻碍高效率:带宽、访存速度、访存代价

目标算法分析

要完成 VGG19 卷积神经网络 分析什么 - 计算:是否存在固定重复的计算模式 - 访存:数据局部性原理、数据和计算的关系(对于带宽的需求)

VGG19 全连接层

输入向量x,乘上矩阵W,对结果送入激活函数得到输出 计算特点 - 向量内积、向量元素操作 - 没有复杂控制流

VGG 19 卷积层

计算特点 - 矩阵内积、向量的元素操作 - 无复杂控制流

VGG 19 池化层

MAX Pooling AVG Pooling 计算特点 - 向量的元素操作 - 无复杂控制流

总结 VGG 19

1.14亿个参数 卷积、池化、全连接 计算过程间接 25层 网络 16层卷积 3*3卷积核,图大小不变 5层池化 3层全连接 - 计算特征 乘法加法(内积) - 访存特征 外循环复用,复用距离等于Ni W内外循环五服用 y[j]内循环复用,复用距离等于1

可解偶性、可复用性

数据量大(尤其是全连接层) 参数占用内存远大于Cache,需要循环分块降低访存开销

深度学习处理器 DLP 结构

深度学习专用 Deep Learning Processor DLP 结构 - 指令集 - 流水线 - 运算部件 - 访存部件 - 算法映射

指令集

  • 计算机的抽象模型
  • 定义了体系结构
  • 软硬件的唯一接口
  • 为什么采用指令集
  • 灵活性:支持未来可能出现的新的深度学习算法
  • 通用性:支持广泛的深度学习算法

设计原则 - 数据级并行 - 可向量化操作

DLP 指令集 - 支持向量运算、矩阵运算 - Load-store结构:只通过load和store指令访问主存 - 64bit定长指令,变长操作数(寄存器指定长度) - 控制指令 - jump 立即数跳转指令 - CB 条件分支指令 - 数据传输指令 - load/store指令:主存和片上存储交互 - MLOAD/MSTORE:矩阵数据 变长 - VLOAD/VSTORE:向量数据 变长 - SLOAD/SSTORE:标量数据 - MOVE 指令:片上数据传输 - MMOVE,VMOVE,SMOVE - 计算指令 - 矩阵运算 - MMV, VMM, MMS, OP, MAM, MSM - 向量运算 - VAV, VSV, VMV, VDV, VEXP,VLOG, IP, RV, VMAX/VMIN - 标量运算 - 加减乘除基本运算,标量超越函数 - 逻辑指令 - 向量逻辑

流水线

7段流水 - 取值、译码、发射、读就存其、执行、写回、提交

运算部件

  • MAC multiply accumulator 标量MAC单元、向量MAC单元
  • N个向量MAC单元堆叠
  • 能够支撑DLP指令集
  • 矩阵/向量/标量计算指令
  • 可否完成
  • 全连接层?池化层?卷积层?

- 激活函数处理单元 非线性函数单元 - 池化操作 - MFU的三个stage退出通路 - 任意规模 - 局部累加功能

访存部件

访存非常关键 - 可解偶性 - 三个分离访存部件 - 有效避免访存流之间互相干扰 - 可复用性 - 片上缓存:行成运算单元-片上-片外的存储 - scratchpad memory管理(程序员完全可见可控的“cache”) - 提高片上数据的复用率

前半截体系结构和通用处理器一样,后半截加了VFU、MFU等专用的硬件。

算法映射

基本思想:硬件的分时复用 - 全连接层映射 - 具体计算指令顺序 - 卷积层映射

优化设计

基于标量MAC的运算部件

向量mac,标量mac 非基于mac运算单元的

稀疏化

如果有的神经元的值接近于0,可以直接舍弃该神经元,而并不会对神经网络有什么影响。

低位宽

有的时候用较少位数的浮点数,影响不大但能提升很多性能。

性能评价

TOPS Tera Operations Per Second - TOPS 不是 TFLOPS \(TOPS=f_c×(N_{mul}+N_{add})/1000\) - 访存带宽 \(BW=f_m×b×\eta\) fm主频,存储位宽b,访存效率η的关系

基准测试程序 - MLPerf 基准测试程序

影响性能的因素

\(T=\sum_iN_i×C_i/f_c\) Ni表示该任务中第i类操作的数量,ci表示完成第i类操作所需要的时钟周期数 fc表示处理器的主频 - 减少ci - 减少访存开销 - 多级并行

其它加速器

GPU - 计算:SIMD - 存储:多层次 - 控制:SIMD指令

FPGA - 计算:可配置CLB - 存储:Block RAM - 控制:配置