(文章来源:Thinker)
深度学习广泛用于各种人工智能任务中,传统的深度学习加速侧重于面向数据流的计算架构优化。然而传统冯·诺依曼体系结构所带来的「存储墙」问题日益突显,计算单元与存储单元间的频繁数据搬移造成了大量的能耗。
存内计算(compuTIng-in-memory,简称 CIM)技术是解决「存储墙」问题的有效途径,但存内计算只能支持向量内积等有限运算。为支持完整的 AI 应用,该团队基于可重构计算架构,融合存内计算技术,设计了数模混合计算芯片(代号 Thinker-IM),在语音识别应用中实现了极低能耗。
为了获得极低的能耗,在算法层面上使用二值化的循环神经网络(RNN)建立语音声学模型,从而降低了计算复杂度并节省了存储开销。图 1 展示了基于二值化 RNN 的语音识别系统,包括前端信号处理、二值 RNN 声学模型处理以及译码输出。
在硬件设计层面为了打破传统的冯·诺依曼体系结构的存储墙瓶颈,设计了数模混合计算架构。其中数字部分实现了必要的语音信号处理,而通过模拟计算方式在 SRAM 中实现了同或(XNOR)计算 *** 作,并构建了基于 SRAM 存内计算(SRAM-CIM)的 RNN 计算模块。
该芯片使用 16 个 SRAM-CIM 宏单元完成 RNN 计算任务,从而避免了存储单元与计算单元的大量数据搬移所产生的能耗。当使用 SRAM-CIM 计算单元构建一颗全功能的语音芯片时,存在以下三方面挑战。
挑战一:需要设计融合多个 SRAM-CIM 单元的计算架构和数据流调度方案。一般情况下,单个 SRAM-CIM 无法存下 DNN 中的全部权重。因此需要多个 SRAM-CIM 单元协同计算,需要考虑如何组织它们的计算方式。
挑战二:需要针对复杂 AI 任务设计多比特输出 SRAM-CIM 单元。对于简单 AI 任务(如手写体识别),SRAM-CIM 单元 1 比特输出精度可以满足识别需求。但对于复杂的识别任务(如语音识别),SRAM-CIM 单元 1 比特输出就会导致 ParTIal Sum(部分和)的精度损失,影响最终识别精度。
挑战三:RNN 推理过程是一种时域上的迭代计算,其计算过程相当耗时。我们发现在二值 RNN 中的累加过程中存在一些冗余计算。见图 2(c),在累加过程中,如果中间数据足够大而超过剩余累加的最大值,将保证最终结果大于 0。此时剩余累加周期的计算就是冗余的,如能去除这些计算,将能够有效加速 RNN 计算。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)