智能计算系统:从深度学习到大模型 第2版课件 第七章-深度学习处理器架构_第1页
智能计算系统:从深度学习到大模型 第2版课件 第七章-深度学习处理器架构_第2页
智能计算系统:从深度学习到大模型 第2版课件 第七章-深度学习处理器架构_第3页
智能计算系统:从深度学习到大模型 第2版课件 第七章-深度学习处理器架构_第4页
智能计算系统:从深度学习到大模型 第2版课件 第七章-深度学习处理器架构_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能计算系统

第七章

深度学习处理器架构中国科学院计算技术研究所陈云霁研究员cyj@总体架构计算访存通信2计算三种计算单元矩阵向量标量3计算三种计算单元矩阵向量标量4TPUv4i计算单元Cambricon架构Volta架构“达芬奇”

架构计算三种计算单元矩阵向量标量常见三种共存各司其职5TPUv4i计算单元Cambricon架构Volta架构“达芬奇”

架构矩阵运算单元一种实现:由内积单元堆叠而成6×输入(激活值)输入(权值)输出乘法器计算-I/O比例=1:3矩阵运算单元一种实现:由内积单元堆叠而成7×输入(激活值)输入(权值)输出向量乘法器×计算-I/O比例=1:3矩阵运算单元一种实现:由内积单元堆叠而成8×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=3:5=1:1.6矩阵运算单元一种实现:由内积单元堆叠而成9×输入(激活值)输入(权值)输出向量内积单元×+××++计算-I/O比例=7:9=1:1.3矩阵运算单元多个内积单元组成矩阵乘向量单元10输入(激活值)输入(权值1)输出矩阵乘向量单元××+××++计算-I/O比例=1:1.3××+××++输入(权值2)矩阵运算单元近端数据(权值)存储在内积单元附近的电路中采用小而快的存储器11输入(激活值)局部权值存储(1)输出矩阵乘向量单元××+××++计算-I/O比例=7:5=1:0.7××+××++局部权值存储(2)局部权值存储(1)××+××++局部权值存储(2)矩阵运算单元所有内积单元共享激活值,采用广播12输入(激活值)输出矩阵乘向量单元计算-I/O比例=7:3=1:0.4××+××++输入(激活值)矩阵运算单元整理示意图13计算-I/O比例=1:0.4内积单元内积单元矩阵乘向量单元局部权值局部权值输出输入(激活值)矩阵运算单元增加内积单元数量14输出计算-I/O比例=7:2=1:0.3内积单元内积单元矩阵乘向量单元局部权值局部权值内积单元局部权值内积单元局部权值矩阵运算单元提出权值15输出计算-I/O比例=28:24=1:0.9内积单元内积单元矩阵乘向量单元内积单元内积单元输入(激活值)局部权值局部权值局部权值局部权值矩阵运算单元增加一组矩阵乘向量单元16输出计算-I/O比例=1:0.9内积单元内积单元多个矩阵乘向量单元内积单元内积单元激活值局部权值局部权值局部权值局部权值内积单元内积单元内积单元内积单元激活值局部权值局部权值局部权值局部权值矩阵运算单元采用广播共享权值17输出计算-I/O比例=56:32=1:0.6内积单元内积单元矩阵乘矩阵单元内积单元内积单元激活值权值权值权值权值内积单元内积单元内积单元内积单元激活值矩阵运算单元扩大规模18输出计算-I/O比例=112:48=1:0.4内积内积矩阵乘矩阵单元内积内积权值内积内积内积内积内积内积内积内积内积内积内积内积激活值矩阵运算单元矩阵乘向量单元计算密度已经较好矩阵乘矩阵单元优势:规模大时,理论上较好(第六章)困难:连线复杂,距离远、扇出多规模不大时,未取得实际优势19计算-I/O比例=1:0.4计算-I/O比例=1:0.3矩阵运算单元如何完成矩阵运算?20×输入(激活值)输入(权值)向量内积单元×+计算-I/O比例=3:5=1:1.6

输出矩阵运算单元如何完成矩阵运算?21×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?22

×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?23

×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?24

×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?25×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?26×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?27×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?28×输入(激活值)输入(权值)输出向量内积单元×+计算-I/O比例=1:1.6

矩阵运算单元如何完成矩阵运算?29计算-I/O比例=1:1

矩阵乘矩阵单元输出内积内积内积内积激活值权值矩阵运算单元如何完成矩阵运算?30计算-I/O比例=1:1

内积内积激活值

矩阵乘矩阵单元

内积内积权值输出矩阵运算单元如何完成矩阵运算?31计算-I/O比例=1:1

输出内积内积内积内积激活值

矩阵乘矩阵单元权值

矩阵运算单元如何完成矩阵运算?32计算-I/O比例=1:1

输出内积内积内积内积激活值

矩阵乘矩阵单元权值矩阵运算单元问题:连线距离远、扇出多还有其他方式吗?33脉动阵列机34输入(激活值)输入(权值)计算-I/O比例=?脉动阵列机如何完成矩阵运算?35输入(激活值)输入(权值)计算-I/O比例=?

脉动阵列机如何完成矩阵运算?36输入(激活值)输入(权值)计算-I/O比例=?

脉动阵列机如何完成矩阵运算?37输入(激活值)输入(权值)计算-I/O比例=?

脉动阵列机如何完成矩阵运算?38输入(激活值)输入(权值)计算-I/O比例=?

脉动阵列机如何完成矩阵运算?39输入(激活值)输入(权值)计算-I/O比例=?

脉动阵列机如何完成矩阵运算?40输入(激活值)输入(权值)计算-I/O比例=?

+脉动阵列机如何完成矩阵运算?41输入(激活值)输入(权值)计算-I/O比例=?

+脉动阵列机如何完成矩阵运算?42输入(激活值)输入(权值)计算-I/O比例=?

+

+

+

脉动阵列机如何完成矩阵运算?43输入(激活值)输入(权值)计算-I/O比例=?

+

+

+

脉动阵列机如何完成矩阵运算?44输入(激活值)输入(权值)计算-I/O比例=?

+

+

+

+

脉动阵列机如何完成矩阵运算?45输入(激活值)输入(权值)计算-I/O比例=?

+

+

+

+

脉动阵列机如何完成矩阵运算?46输入(激活值)输入(权值)计算-I/O比例=1:0.7

+

+

+

+输出

脉动阵列机如何完成矩阵运算?47输入(激活值)输入(权值)计算-I/O比例=1:0.7

输出

脉动阵列机如何完成矩阵运算?48输入(激活值)输入(权值)计算-I/O比例=1:0.7

输出

脉动阵列机如何完成矩阵运算?49输入(激活值)输入(权值)计算-I/O比例=1:0.7

输出

输入(激活值)输入(权值)输出矩阵运算单元脉动阵列机vs矩阵乘矩阵单元优势:计算-I/O比例更高电路采用局部短连接扇出少困难:延迟高,需要等待启动/排空专用性更强,高效支持矩乘、卷积,但很难改造为同时支持其他功能51计算-I/O比例=1:0.4计算-I/O比例=1:0.2历史脉动阵列机(systolicarray)相似概念出现于二战时期英国巨人计算机二型(ColossusMarkII,1944)用于破译纳粹德国军事密文,长期处于保密状态,战后被销毁孔祥重、CharlesE.Leiserson于1978年发明多种结构,对应多种算法分别用于矩乘、线性方程组求解、LU分解、最大公约数等52向量和标量单元主要功能:池化、归一化Dropout、ReLU、Sigmoid、Softmax等特殊变换求最大/最小值、排序、计数、前缀求和等数据重排布53便笺存储器寄存器堆运算单元池化/均一化如何完成池化?5401452367891213101114150145236789121310111415014523678912131011141501452367891213101114153711153711153711151.55.59.513.5池化/均一化如何完成池化?550145236789121310111415014523678912131011141501452367891213101114150145236789121310111415便笺存储器000011114444555522223333…池化/均一化如何完成池化?560145236789121310111415014523678912131011141501452367891213101114150145236789121310111415便笺存储器000011114444555522223333…池化/均一化如何完成池化?571452367891213101114150145236789121310111415014523678912131011141501452367891213101114150便笺存储器000011114444555522223333…0000池化/均一化如何完成池化?580452367891213101114151045236789121310111415104523678912131011141510452367891213101114151便笺存储器000011114444555522223333…1111池化/均一化如何完成池化?590145236789121310111415014523678912131011141501452367891213101114150145367891213101114152便笺存储器000011114444555522223333…3333池化/均一化如何完成池化?600145236789121310111415014523678912131011141501452367891213101114150145267891213101114153便笺存储器000011114444555522223333…6666池化/均一化如何完成池化?610145236789121310111415014523678912131011141501452367891213101114150145236789121310111415便笺存储器000011114444555522223333…1.51.51.51.5池化/均一化如何完成池化?620145236789121310111415014523678912131011141501452367891213101114150145236789121310111415便笺存储器000011114444555522223333…1.51.51.51.51.51.51.51.57111537111537111535.59.513.51.5池化/均一化如何完成池化?630152367891213101114154015236789121310111415401523678912131011141540152367891213101114154便笺存储器000011114444555522223333…1.51.51.51.54444池化/均一化运算单元结构6444445555池化/均一化运算单元结构6544445555++++9999AA池化/均一化运算单元结构6644445555++++9999MUX0AAMUX0AAMUX0AAMUX0AA池化/均一化运算单元结构67151515157777++++22222222MUX0AAMUX0AAMUX0AAMUX0AA池化/均一化运算单元结构68151515157777++++22MUX0AAMUX0AAMUX0AAMUX0×22×22×22×1/41/41/41/45.55.55.55.5AA池化/均一化支持AvgPool69151515157777++++22MUX0AAMUX0AAMUX0AAMUX0×22×22×22×1/41/41/41/45.55.55.55.5AA池化/均一化支持AvgPool、MaxPool、BatchNorm70

+/max+/max+/max+/maxMUX0AAMUX0AAMUX0AAMUX0××××

激活函数如何计算双曲正切激活(tanh)?71

激活函数如何计算双曲正切激活(tanh)?72

激活函数如何计算双曲正切激活(tanh)?73

激活函数如何计算双曲正切激活(tanh)?74

激活函数如何计算双曲正切激活(tanh)?75

激活函数如何计算双曲正切激活(tanh)?76

abs

×+

精确计算特殊函数分段线性插值在深度学习推理任务中,基本满足需求如果需要精确计算,怎么办?77精确计算特殊函数分段线性插值在深度学习推理任务中,基本满足需求如果需要精确计算,怎么办?可以采用硬件或软件实现:各函数的快速数值算法例如:Beame-Cook-Hoover快速倒数算法数值方法例如:牛顿迭代法78精确计算特殊函数分段线性插值在深度学习推理任务中,基本满足需求如果需要精确计算,怎么办?可以采用硬件或软件实现:各函数的快速数值算法例如:Beame-Cook-Hoover快速倒数算法数值方法例如:牛顿迭代法79分段插值/快速估计+数值方法例如:0x5f3759df算法+牛顿迭代法前缀计算

80

前缀计算实现很简单。有高效的方式吗?81前缀计算实现很简单。有高效的方式吗?82

前缀计算实现很简单。有高效的方式吗?83

前缀计算实现很简单。有高效的方式吗?84

前缀计算实现很简单。有高效的方式吗?85

前缀计算实现很简单。有高效的方式吗?86

前缀计算实现很简单。有高效的方式吗?87

前缀计算实现很简单。有高效的方式吗?88

前缀计算实现很简单。有高效的方式吗?89

前缀计算实现很简单。有高效的方式吗?90

前缀计算实现很简单。有高效的方式吗?91

数据重排布以向量为单位计算,很难使向量上不同位置的数据“相遇”因为便笺访问是对齐的例子:如何计算4a+5c+6b+7d?92便笺存储器012345

67…ab

cdefgh数据重排布以向量为单位计算,很难使向量上不同位置的数据“相遇”因为便笺访问是对齐的例子:如何计算4a+5c+6b+7d?先交换b和c的位置93便笺存储器012345

67…ab

cdefghac

bd数据重排布以向量为单位计算,很难使向量上不同位置的数据“相遇”因为便笺访问是对齐的例子:如何计算4a+5c+6b+7d?先交换b和c的位置再进行内积计算94便笺存储器012345

67…ab

cdefghac

bd数据重排布以向量为单位计算,很难使向量上不同位置的数据“相遇”因为便笺访问是对齐的例子:如何计算4a+5c+6b+7d?先交换b和c的位置可以用标量指令编程完成交换95便笺存储器012345

67…ab

cdefghac

bd数据重排布以向量为单位计算,很难使向量上不同位置的数据“相遇”因为便笺访问是对齐的例子:如何计算4a+5c+6b+7d?先交换b和c的位置可以用标量指令编程完成交换增加向量重排列功能,更高效!96便笺存储器012345

67…ab

cdefghac

bd数据重排布使用排列网络97X

数据重排布使用排列网络98X

XXX

XXXX

数据重排布使用排列网络99X

XXX

XXXX

Beneš网络每两线接入开关每两线接入开关

数据重排布使用排列网络100X

XXX

XXX

Waksman网络每两线接入开关每两线接入开关省去第一个开关

计算小结矩阵运算单元可设计为矩阵乘向量单元、矩阵乘法单元、脉动阵列机等各有优势区间向量/标量运算单元增设累加寄存器,可以实现池化一组硬件可以同时支持多种功能采用分段线性近似可以计算特殊函数增设前缀计算、重排布等功能,有助于拓展通用性101总体架构计算访存通信102访存访问便笺存储器访问外部存储器与计算的协同103便笺存储器便笺存储器大多采用SRAM实现连接矩阵运算单元(2R,1W)连接向量运算单元(2R,1W)连接标量寄存器(1RW)连接DMA/外存/其他核(1RW)...104便笺存储器寄存器堆运算单元便笺存储器便笺是DLP核当中的数据“枢纽”105便笺存储器便笺是DLP核当中的数据“枢纽”106矩阵单元标量单元向量单元DMA便笺存储器其他特殊功能单元便笺存储器便笺是DLP核当中的数据“枢纽”107矩阵单元标量单元向量单元DMA便笺存储器其他特殊功能单元便笺存储器如何缓解拥堵?拓宽“道路”规划“车流”108便笺存储器109拓宽“道路”多端口SRAM增加一个端口,面积+50%~100%面积意味着成本、能耗、延时便笺存储器110拓宽“道路”多端口SRAM增加一个端口,面积+50%~100%面积意味着成本、能耗、延时分组SRAM开关阵列面积~O(分组数量²)分组冲突(bankconflict)便笺存储器规划“车流”通用处理器中,采用哈佛结构解决取指-取数据冲突深度学习处理器中的哈佛结构?111原始冯·诺伊曼结构哈佛结构便笺存储器规划“车流”通用处理器中,采用哈佛结构解决取指-取数据冲突深度学习处理器中的哈佛结构?112原始冯·诺伊曼结构哈佛结构便笺存储器DMA便笺存储器规划“车流”通用处理器中,采用哈佛结构解决取指-取数据冲突分离式便笺存储器(二分离/三分离/...)113原始冯·诺伊曼结构哈佛结构便笺存储器DMA输入神经元存储器DMA权重存储器输出神经元存储器分离式便笺存储器按数据划分神经元/权值输入神经元/输出神经元/权值114输入神经元DMA权重输出神经元分离式便笺存储器按数据划分神经元/权值输入神经元/输出神经元/权值按功能单元划分向量/标量矩阵/向量/标量115输入神经元DMA权重输出神经元向量矩阵标量DMA分离式便笺存储器按数据划分神经元/权值输入神经元/输出神经元/权值按功能单元划分向量/标量矩阵/向量/标量按处理阶段划分输入数据/累加器116输入神经元DMA权重输出神经元向量矩阵标量DMA输入累加DMA分离式便笺存储器对数据进行分流提高了处理效率对使用方式进行了约束(损失通用性)117输入累加DMA分离式便笺存储器对数据进行分流提高了处理效率对使用方式进行了约束(损失通用性)体系结构设计人员的职责:寻找一组高效、合理的约束118输入累加DMA外部存储器访问通用处理器的访存持续数个周期访存和计算争用取指译码资源119IFREGEXMEMWBIFREGEXMEMWBIFREGEXMEMWBloadcomputestore时间指令1周期外部存储器访问处理大小为224×224×3的图像通用处理器工作在内存上需要执行30万条load/store指令120外部存储器访问处理大小为224×224×3的图像通用处理器工作在内存上需要执行30万条load/store指令深度学习处理器工作在便笺存储器上1条load指令装载一整块图像1条指令完成计算1条store指令送回内存121直接内存访问(DMA)如何实现“1条load指令装载一整块图像”?处理器控制:DMA控制:122loadrloadgloadbloadrloadgloadr~bDMADMADMA计算..计算..外部存储器访问深度学习处理器的访存持续数百至数十万个周期123DMAEXloadcomputestore时间指令DMA100~100000周期外部存储器访问深度学习处理器的访存持续数百至数十万个周期124DMAEXload 1compute 1store 1时间指令DMADMAEXload 2compute 2store 2DMA外部存储器访问深度学习处理器的访存“软件流水线”125DMAEX时间指令DMADMAEXDMAload 1compute 1store 1load 2compute 2store 2外部存储器访问深度学习处理器的访存重新安排指令顺序,简化硬件126时间指令DMAload 1EXcompute 1DMAstore 1DMAload 2EXcompute 2DMAstore 2外部存储器访问深度学习处理器的访存重新安排指令顺序,简化硬件显式控制同步,简化硬件127时间指令DMAload 1EXcompute 1DMAstore 1DMAload 2EXcompute 2DMAstore 2syncsyncsync软件流水线如何实现同步指令(sync)?简化硬件模型描述:计算模块:随时执行收到的指令DMA模块:随时执行收到的指令指令发射模块:计算指令发射到计算模块访存指令发射到DMA模块遇到sync时:阻塞,直到整个处理器空闲下来,再发射新的指令128EXDMA指令发射软件流水线129load 1syncload 2compute 1syncstore 1compute 2load 3syncstore 2compute 3load 4syncstore 3compute 4load 5syncstore 4compute 5load 6syncstore 5compute 6syncstore 6DMAEXDMAEXDMADMAEXDMADMAEXDMADMAEXDMADMAEXDMADMA访存小结便笺存储器是DLP核心的数据枢纽访问便笺可能成为瓶颈“拓宽道路”:增加端口、设计为分组SRAM代价:硬件开销增加“规划车流”:根据算法特征,采用分离式设计代

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论