0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么样的芯片才能够真正适应终端智能的需求

M8kW_icbank 来源:互联网 作者:佚名 2018-01-29 09:07 次阅读

2017年,人工智能最火的风口一定是AI芯片

AI芯片的出现,与深度学习技术的成熟及应用密不可分。深度学习的过程可以简化理解为利用大量标注的数据进行训练,训练出一个行之有效的模型,再将这一模型运用于新数据的推断。

这个耳熟能详的爆款算法是建立在多层大规模神经网络之上的,后者本质上是包含了矩阵乘积和卷积操作的大运算量函数。往往需要先定义一个包含回归问题的方差、分类时的交叉熵的代价函数,再数据分批传递进网络,根据参数求导出代价函数值,从而更新整个网络模型。这通常意味着至少几百万次的相乘处理,计算量巨大。通俗来说,包含了数百万次A*B+C的计算,算力消耗巨大。

为解决这一问题,AI芯片应运而生。2017年开始,围绕AI芯片,半导体行业,战事升级,赛场上新老玩家暗潮涌动,连横合众,大有“AI芯片太多,设备都不够用了”之势。

时间进入2018年,备受关注的大小公司都将正式推出自研AI芯片。这些芯片也都被业界寄予厚望,是否能解决或者部分解决终端计算难题?什么样的芯片才能够真正适应终端智能的需求?

这些都是我们十分好奇且关注的问题。于是也与一些创业者进行了交流。本文即是其中的一篇,来自于与探境科技CEO鲁勇的访谈。目前探境科技正研发适用于终端的AI芯片,在创业前鲁勇曾在芯片厂商Marvell任高管,从事过存储芯片的相关工作,而存储正是计算之外所有芯片另一核心。基于过往的经历、经验与观察,鲁勇认为,做适用于终端的AI芯片,除了要在计算方面提升,存储优化同样至关重要。

以下为正文,来自36氪对鲁勇的访谈内容,36氪基于访谈内容对其观点进行了整理。

AI算法在芯片实现时遇到的核心问题不是计算资源而是存储问题,强如GPU提供众多的计算资源,而实际计算能力与计算资源大为降低。

概括来说,存储问题分为两个部分,一个是带宽问题,一个是功耗问题,这两个问题的解决其实也是耦合在一起的。

具体来说,深度学习算法使用大量存储资源,即包括静态模型参数,也包括网络层之间的动态数据。对于静态模型参数权重,动辄几十兆上百兆样本数量,无法在片上SRAM保存,因此需要存入外部DRAM。DRAM与AI计算芯片间带宽有限,如果芯片上计算资源很大,但受存储带宽的瓶颈限制,实际计算力大为下降。

打比方来说,负责存储的DRAM和与负责计算的芯片就像是位于河两岸的仓库,整个运算的过程可以类比从存储的仓库搬取数据、搬运过桥,将数据搬入计算的单元进行处理,并高速循环往复。而当前的AI芯片技术重点提升将数据搬入计算单元后的处理速度,但因为搬出数据、过桥的过程基本未发送变化,因此整体的效率提升还相对有限。

与之对应的方法即是克服存储带宽的手段:一是减少数据量,降低所需数据带宽,就是说想办法只要从仓库搬出少量数据,就可以达到同样的效果;二是更科学的调度数据使用,提升调度的效率。

(1)减少数据容量

如果数据量降低了,这将总体上减少对DRAM的访问,在DRAM物理带宽保持不变的前提下,降低了DRAM的依赖性,提高了整体性能,同时减少DRAM访问也将大幅减少系统功耗开销。因此首先需要解决的问题是减少静态参数权重的大小。通常的解决办法包括参数定点化,将每个32bit浮点数减少为16bit以下的定点数,至少能降低50%甚至75%的存储容量,也同样幅度的降低了存储带宽的需求。实践证明16bit定点化可以采用线性量化的方式,而16bit以下定点化根据模型的不同,有些需要采用非线性量化才可以达到维持模型性能的目的。

目前主要有模型剪枝、设计适于终端设备的简化网络两种实现方式。模型剪枝作为进一步降低模型容量和存储带宽的方式,是基于神经网络模型存在大量冗余信息的基础,而另一种从源头开始重新设计适于终端设备的简化网络的方式也在逐渐兴起,从同样规模的网络性能来看,新设计的网络可能比旧网络通过剪枝再训练的方式更为简单快捷,性能也更好。

(2)更科学的调度数据使用

深度学习的计算大量使用乘累加,即完成AXB+C的工作,这种乘累加单元(MAC)每次运算需要三个输入,完成一个输出。参与运算的数据包括事先准备好的权重参数和网络层产生的中间数据。每个乘累加完成后的输出通常也会作为下一次运算的输入,因此如何调度这些数据成为关键。

功耗角度来说,从DRAM获取数据所消耗的功耗最大,从SRAM中获取数据其次,从本地寄存器中获取数据消耗功耗最低,但从成本角度考虑刚好相反,因此这三个不同层次的存储器的使用非常关键,我们希望尽可能减少DRAM的访问,最理想的结果是仅从DRAM中读取一次事先存好的模型参数,而不依赖DRAM做任何其他工作。

从宏观上看,整个深度学习运算计算一次,进入MAC的总数据量远大于静态数据的容量,因为无论是模型参数还是中间数据都多次被重复使用,因此实际所需的数据带宽非常大,并且当所有这些数据都仅通过DRAM被缓存使用时,其功耗开销也是惊人的,因此充分利用各级缓存的特性非常重要,设计一个合理的数据流,将多次被重复使用的数据放在离计算资源较近的地方,少量读取的数据放在DRAM中,将提高计算性能,降低系统功耗。

那么问题来了,如何才能设计一款真正适用于终端的AI芯片。

简单的设计一个卷积加速器并不能带来深度学习计算性能上的提高,合格的计算架构需要结合对存储问题的分析来设计,不仅要考虑计算架构,也要考虑存储的数据流控制,因此深度学习的计算特点并非是一个简单粗暴的并行计算问题。

首先还是要考虑浮点和定点计算的问题,8 位的整数乘法比IEEE 754标准下16位浮点乘法降低 6 倍的能耗,占用的芯片面积也少 6 倍;而整数加法的差异是13倍的能耗与38倍的面积,因此终端AI芯片采用定点计算将获得巨大收益。当定点成为设计目标的时候,要充分考虑软硬件的结合,不同网络对定点位数的影响程度是不一样的,数据量化的具体方式也有差异,有线性量化也有非线性量化的方法,因此针对应用场景结合软件协同设计非常有必要。

其次深度学习不是简单粗暴的并行计算但仍然有明显的并行计算特征,因此考虑存储问题后放入更多的计算资源会大幅提高计算性能。首先将最多被重复使用的数据放在接近计算资源的地方,这符合较为流行的In Memory Computing(存储计算一体化)的思想,并且考虑到当前工业水平,这更为实际,而通过重新设计包括计算单元的存储单元或采用ReRAM等方式是未来的 发展方向。

第三要考虑到深度学习数据的另一重要特性,即数据稀疏化特性,也就是说在参与运算的数据中有大量的零值数据存在,这些零值数据即可以在存储中被压缩存放,降低存储容量和带宽需求,也可以在计算中被进一步调度,减少运算压力,提高运算的有效性能。这些零值数据不仅存在于模型参数中,也大量存在于神经网络各层运算的中间数据中,这两方面都需要进行考虑。稀疏数据在多核心并行计算中的调度是个复杂的问题,而不同网络结构也会带来不同的影响,因此将软硬件协同设计,动态调度的调度器是非常复杂的设计难点。

最后要考虑针对不同网络的资源有效利用率问题,由于神经网络差异化较大,如果希望针对不同网络都有较高的资源有效利用率,则需要在较细的颗粒度上进行优化,进一步加深了数据流调度器的复杂度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    455

    文章

    50711

    浏览量

    423102
  • 终端
    +关注

    关注

    1

    文章

    1128

    浏览量

    29862
  • AI
    AI
    +关注

    关注

    87

    文章

    30726

    浏览量

    268870
  • 人工智能
    +关注

    关注

    1791

    文章

    47182

    浏览量

    238195

原文标题:如何设计一款适用于终端的AI芯片

文章出处:【微信号:icbank,微信公众号:icbank】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AIC3254要怎么做才能够做到反馈抑制呢?

    设计,连编译都无法通过。各位大侠,到底怎么办呢,期待各位大侠的帮助,谢谢了,万分感谢。AIC3254要怎么做,才能够做到反馈抑制呢?
    发表于 11-08 07:49

    数据线芯片-数据线智能控制芯片EN16F

    控制:智能控制芯片能够识别连接的设备类型,并根据设备需求调整通信协议和电源管理策略。同时,它们还提供用户接口控制功能,如LED指示灯或触摸屏反馈,以显示连接状态和数据传输活动。 随着
    发表于 09-27 11:04

    IP地址与智能家居能够碰撞出什么样的火花呢?

    感应灯、远程遥控空调,自动感应窗帘——智能家居已经在正逐步走入我们的生活,为我们带来前所未有的便捷与舒适体验。而在这一进程中,IP地址又能够智能家居碰撞出什么样的火花呢? 一、IP地
    的头像 发表于 09-24 11:21 238次阅读

    怎么才能够将正弦波的直流分量取出?

    请教怎么才能够将正弦波的直流分量取出,(我用低通滤波之后噪声很大)
    发表于 09-19 06:13

    代码整洁之道-大师眼中的整洁代码是什么样

    几个月前写了一篇文章“如何写出难以维护的代码”,从中能大概了解到不好维护的代码是什么样,有哪些坏味道,那肯定有人会反问,难以维护的代码见的太多了,也知道长什么样,但是对于好维护的代码是什么样的比较
    的头像 发表于 09-09 16:30 330次阅读
    代码整洁之道-大师眼中的整洁代码是<b class='flag-5'>什么样</b>

    亿铸科技谈大算力芯片面临的技术挑战和解决策略

    随着人工智能技术的飞速发展,算力已成为推动产业变革的关键力量,但大模型的快速发展,参数的爆发,对于算力需求也提出了更高的要求,带来了全新的挑战。那大算力芯片应对这些挑战,如何才能够助力
    的头像 发表于 08-07 10:03 734次阅读

    OPA354应该以什么样的电容负载标准去使用?

    OPA354这个电路spec上,开环增益和相位并没有说明搭载的负载电容是多大。请问在使用芯片时,应该以什么样的电容负载标准去使用呢。
    发表于 08-02 08:05

    RISC-V适合什么样的应用场景

    解决方案,适用于边缘计算、智能摄像头、智能音箱等场景。 灵活性:RISC-V的开放性使得其能够更容易地与各种AI框架和算法集成,满足不同的AI应用需求。 4. 自动驾驶和汽车电子 定制
    发表于 07-29 17:16

    芯片需求上涨?终端工厂加班是假象?

    芯片
    芯广场
    发布于 :2024年07月03日 19:16:48

    STM32H743ZIT6想要实现千兆网口,需要外挂什么样的PHY芯片

    各位大佬,我想咨询一个问题,关于STM32H743ZIT6想要实现千兆网口,需要外挂什么样的PHY芯片,谢谢
    发表于 05-31 07:59

    Endpoint端点如何做才能够达到不需要PC端手动IN就将数据往上推送?

    您好,我想问一下Endpoint端点如何做才能够达到不需要PC端手动IN就将数据往上推送? 使用的是FX3芯片,其中我发现在鼠标HID范例中,它就是不需要电脑IN,只要在某一个GPIO口触发之后
    发表于 05-27 08:29

    FPGA能实现什么样的算法?

    FPGA功能如此强大,请问用FPGA能实现或者比较适合实现什么样的算法?
    发表于 05-26 20:18

    什么样的负载电容可以起振?又需要匹配多大的电容值才能快速响应起振呢?

    什么样的负载电容是可以起振?又需要匹配多大的电容值才能快速响应起振呢? 负载电容是指连接在振荡电路输出端的电容元件。振荡电路中的负载电容起着重要的作用,它不仅决定了振荡的频率,还影响了振荡电路
    的头像 发表于 01-26 14:07 732次阅读

    简单分析火车的供电示意图

    不知你注意没有,火车的用电都是用一根电线,并不是和家庭用的电一是两根电线。都知道电器要工作必须有两根电线才行,这样才能够构成一个回路,电流才能够流通。
    的头像 发表于 01-03 11:08 2056次阅读
    简单分析火车的供电示意图

    ADIS16375的陀螺仪输出角度是个什么样的角度?

    想知道ADIS16375这款IMU的输出角度是个什么样的角度?是不是姿态角?其参考坐标系是什么?输出角的实时精度是多少?ADIS16365、ADIS16334、ADIS16445、ADIS16485这四款IMU能够输出角度吗?若果能,分别是
    发表于 12-29 06:17