您现在的位置是:主页 > 电路图及DIY > 电路设计论坛 >

    2019-05-2148E2 Slice 上优化 INT8 深度学习-运算分析

      48E2 Slice 上优化 INT8 深度学习-运算分析赛灵思 INT8 优化为深度学习推断提供了性能最佳、能效最高的计算技术。赛灵思的集成式 DSP 架构与其他 FPGA DSP 架构相比,在INT8 深度学习运算上能实现 1.75 倍的解决方案级性能。

      本白皮书旨在探索实现在赛灵思 DSP48E2 Slice 上的 INT8 深度学习运算,以及与其他 FPGA 的对比情况。在相同资源数量情况下,赛灵思的 DSP 架构凭借 INT8在 INT8 深度学习每秒运算次数 (OPS) 上相比其它 FPGA,能实现 1.75 倍的峰值解决方案级性能。由于深度学习推断可以在不牺牲准确性的情况下使用较低位精度,因此需要高效的 INT8 实现方案。

      赛灵思的 DSP 架构和库专门针对 INT8 深度学习推断进行了优化。本白皮书介绍如何使用赛灵思 UltraScale 和 UltraScale+ FPGA 中的DSP48E2,在共享相同内核权重的同时处理两个并行的 INT8 乘法累加 (MACC) 运算。本白皮书还阐述了要运用赛灵思这一独特技术,为何输入的最小位宽为 24 位。本白皮书还以 INT8优化技术为例,展示了该技术与神经网络基本运算的相关性。

      深度神经网络(DNN)已掀起机器学习领域的变革, 同时运用新的达到人类水平的 AI 功能重新定义众多现有的应用。

      随着更精确的深度学习模型被开发出来,它们的复杂性也带来了高计算强度和高内存带宽方面的难题。能效正在推动着深度学习推断新模式开发方面的创新,这些模式需要的计算强度和内存带宽较低,但绝不能以牺牲准确性和吞吐量为代价。降低这一开销将最终提升能效,降低所需的总功耗。

      在5G渐成社会热点之际,近日又传出福州一家运营商关停3G网络的消息,而目前山东主流运营商也已悄然开展2G或3G网络的有序清频退网行动,一些基于这些网络的用户将不得不更换手机。

      除了节省计算过程中的功耗,较低位宽的计算还能降低内存带宽所需的功耗,因为在内存事务数量不变的情况下传输的位数减少了。

      研究显示要保持同样的准确性,深度学习推断中无需浮点计算[ 参考资料 1][ 参考资料 2][ 参考资料 3],而且图像分类等许多应用只需要 INT8 或更低定点计算精度来保持可接受的推断准确性[ 参考资料 2][ 参考资料 3]。表 1 列出了精调网络以及卷积层和完全相连层的动态定点参数及输出。括号内的数字代表未精调的准确性。

      0&&!t.isPlainObject(s[i]))return r;s=s[i]}return t.isPlainObject(s)?t.extend({},s):s},e.setConfig=function(i,s){if(!i)return e.events.trigger(warn.config,setConfig parameter key is null or undefined),e;if(t.isPlainObject(i))return r(!0,n,i),e;for(var o,u,a=n,f=i.split(.),l=!1;f.length0;){if(u=f.shift(),void 0===a[u]&&(a[u]={}),!t.isPlainObject(a[u])&&f.length>

      最近这款魅蓝E手机已经在第三方平台正式宣告降价,基本上已降至千元以下,999元的报价让同价位的机型深感压力,纷纷推出相应的机型对抗。

      赛灵思的 DSP48E2 设计用于在一个时钟周期内高效地完成一个乘法累加算法, 多达 18x27 位的乘法和多达 48 位的累加,如图 1 所示。除了采用回送或链接多个 DSP Slice,乘法累加 (MACC) 也能使用赛灵思器件高效完成。

      在运行 INT8 计算时,较宽的 27 位宽自然占有优势。在传统应用中,预加法器一般用于高效实现 (A+B) x C计算,但这类计算在深度学习应用中很少见。将 (A+B) x C 的结果拆分为 A x C 和 B x C,然后在独立的数据流中进行累加,使之适用于典型深度学习计算的要求。

      对 INT8 深度学习运算来说,拥有 18x27 位乘法器很占优势。乘法器的输入中至少有一个必须为最小 24位,同时进位累加器必须为 32 位宽,才能在一个 DSP Slice 上同时进行两个 INT8 MACC 运算。27 位输入能与 48 位累加器结合,从而将深度学习求解性能提升 1.75 倍(1.75:1 即为 DSP 乘法器与 INT8 深度学习 MACC 的比率)。其他厂商提供的 FPGA 在单个 DSP 模块中只提供 18x19 乘法器,DSP 乘法器与INT8 MACC 之比仅为 1:1。

      目标是找到一种能够对输入 a、b 和 c 进行高效编码的方法,这样 a、b 和 c 之间的相乘结果可以容易地分解为 a x c 和 b x c。

      在更低精度计算中,例如 INT8 乘法中,高位 10 位或 19 位输入用 0 或 1 填充,仅携带 1 位信息。对最终的 45 位乘积的高位 29 位来说,情况一样。因此可以使用高位 19 位开展另一计算,不会影响低位 8 位或16 位输入结果。

      为满足上述规则,高位乘积结果的最低有效位不得进入低位 16 位。因此高位的输入应至少从第 17 位开始。对一个 8 位的高位输入,总输入位宽至少为 16+8=24 位。这样的最小 24 位输入宽度只能保证同时用一个乘法器完成两次相乘,但仍足以实现 1.75 倍的 MACC 的总吞吐量。

      接下来的步骤是在一个 DSP48E2 Slice 中并行计算 ac 和 bc 。DSP48E2 Slice 被用作一个带有一个 27 位预加法器(输入和输出均为 27 位宽)和一个 27 x 18 乘法器的算术单元。见图 2。

      外观设计方面,新款车型并未有太多透露。将提供可以选装的前唇、风刀和扩散器,预计在方面将会有所提高,同时配备全新样式的车身拉花,更显个性。

      DSP内部技术处理主要依赖一些关键技术处理设施,主要的包括:原始海量log系统、海量消息并行处理队列(例如采用spark技术)、海量内存系统(例如采用redis技术)、业务系统关系型数据数据库等等。如图7-23所示,一条技术处理线路是广告请求处理线:广告竞价Bidder海量的实时广告请求处理会产生海量的原始log、同时Bidder也频繁的同海量内存系统交互读写广告请求相关的频次、消耗等等数据,然后广告请求log经过过并行处理队列处理灌入报表数据库及相应的大数据人群及模型数据库。另一条技术处理线路是广告曝光、点击等等监测数据的回收,开始也是产生大量的原始log、同时数据回收引擎同海量内存系统交互写如广告曝光、点击相关的频次、消耗等等数据。然后广告曝光、点击log经过过并行处理队列处理灌入相应报表数据库及相应的大数据人群及模型数据库,同时并行处理队列进行大量的机器智能分析更新部分人群数据及模型数据,同时同步更新到Bidder数据库及内容系统中供Bidder实时竞价时使用。

      1. 通过预加法器在 DSP48E2 乘法器的 27 位端口 p 打包 8 位输入 a 和 b ,这样 2 位向量能尽量分隔开。输入 a 左移位仅 18 位,这样从第一项得到的 27 位结果中的两个符号位 a 以避免在 b 0 和 a =128 时预加法器中发生溢值。a 的移位量为 18,恰好与 DSP48E2 乘法器端口 B 的宽度一样。

      2. DSP48E2 27x18 乘法器用于计算打包的 27 位端口 p 和以二进制补码格式表达在 18 位 c 中的 8 位系数的积。现在该 45 位乘积是二进制补码格式的两个 44 位项的和:左移位 18 位的 ac 和 bc 。

      后加法器可用于累加上述包含单独的高位乘积项和低位乘积项的 45 位乘积。在累加单个 45 位积时,对高位项和低位项进行了校正累加。最终的累加结果如果没有溢值,可以用简单运算分开。

      这种方法的局限在于每个 DSP Slice 能累加的乘积项的数量。由于高位项和低位项间始终保持两位(图 3),可以保证在低位不溢值的情况下累加多达 7 个项。在 7 个乘积项之后,需要使用额外的 DSP Slice 来克服这一局限。因此这里 8 个 DSP Slice 执行 7 x 2 INT8 乘法- 加法运算,与拥有相同数量乘法器的竞争型器件相比 INT8 深度学习运算的效率提升 1.75 倍。

      根据实际用例的要求,这种方法有多种变化形式。带有校正线性单元 (ReLU) 的卷积神经网络 (CNN) 产生非负激活,同时无符号 INT8 格式将精度增加一位以上且峰值吞吐量提升 1.78 倍。

      我们看到,依附深挚的技能秘闻和全球规模内的影响力,高通与中国手机厂商一路配合帮忙鞭策切合尺度的5G终端于本年商用正成为实际。此刻看来,高通正一步步兑现着本身的信誉。而5G对于中国手机厂商来说,无疑是拓展海外市场的敲门砖,将来的全球市场格式必然会被来自中国浩瀚的领先手机厂商所改写。而我们,有幸见证这一场厘革的到来。

      在P 足够多且每点波形数据分辨率与P 匹配的前提下,即可忽略DDS 信号输出的高频谐波含量,从而省略硬件设计中的滤波器环节,避免了由滤波器产生的相位偏移。当P = 10000 时,完全可以满足要求。如设计最大输出频率65Hz,可得fclk = 0. 65MHz。

      现代神经网络大部分是从这个原始概念模型 [ 参考资料 4] 衍生而来。见图 4。

      虽然从标准感知器结构开始已有相当程度的演进,现代深度学习(也称为深度神经网络 (DNN))的基本运算仍然是类感知器的运算,只是有更广大的总体和更深入的堆叠感知器结构。图 4 所示的是一个感知器的基本运算。在每个典型的深度学习推断中它穿过多个层,最终重复数百万至数十亿次。如图 5 所示,在一层神经网络中计算 m 个感知器/ 神经元输出中的每一个的主要计算运算为:

      使用 INT8 优化方法将值向左移位 18 位,每个 DSP Slice 就得出最终输出值的部分且独立的一部分。用于每个 DSP Slice 的累加器有 48 位宽并链接到下一个 Slice。为避免移位饱和影响到计算,链接的模块数量被限制为 7 个,即对总共 n 个输入样本使用 2n 个 MACC 和 n 个 DSP Slice。

      典型的 DNN 每层有数百到数千个输入样本。但是在完成 7 个项的累加后,48 位累加器的低位项可能饱和,因此每 7 个项之和就需要一个额外的 DSP48E2 Slice。这相当于每 7 个 DSP Slice 和 14 个 MACC,另加一个 DSP Slice 用于防止过饱和,从而带来 7/4 或 1.75 倍的吞吐量提升。

      在卷积神经网络(CNN)中,卷积层一般主要使用同一组权重,从而形成 a x w 和 b x w 类型的并行MACC 运算。因此除输入共享外,还可以使用权重共享(见图 7)。

      INT8 MACC 还能用 FPGA 架构内与 DSP Slice 频率近似的 LUT 来构建。根据 FPGA 的使用情况,这可以显著提升深度学习性能,在某些情况下性能可提升三倍之多。许多情况下相对于其他非 FPGA 架构而言,在计算可用深度学习运算时这些可用的计算资源并未考虑在内。

      赛灵思 FPGA 中的编程架构是独有的,因为它能并行且高效地处理多样化工作负载。例如赛灵思 FPGA能并行执行 CNN 图像分类、网络加密和数据压缩。我们的深度学习性能竞争分析并未将 MACC LUT 考虑在内,因为一般 LUT 用于执行 MACC 功能比用于执行其他并行功能时更有价值。

      (2)电源模块输出端使用保护电容,其值不能小于10F,且不能使用贴片电容或高频陶瓷电容,否则工作不稳定。

      当然最一点就是,腾讯网游一贯A黑,CF这种更是黑的彻底,举个亲测的例子来说,同性能的a卡7750只能跑80帧,而n卡gtx650能跑200帧。。。

      英特尔的 MACC 性能基于运用预加法器的算子。但是这种实现方案产生的是乘积项和非唯一单独乘积项之和,因此英特尔的预加法器不适用于深度学习运算。

      ).hide(),c=a.extend({},this.param,{proxy:e.getConfig(proxy),callback:o,func:o}),h=n(c,{name:u,target:f,url:tthis.ajaxOpt.url});return window[o]=function(t){clearTimeout(i);var n;for(var s in t)t.hasOwnProperty(s)&&(n=decodeURIComponent(t[s]),n.match(/^(\{.*\})(\[.*\])$/)&&(n=a.parseJSON(n)),t[s]=n);r.resolve(t),e.events.trigger(receive.sync,t)},i=setTimeout(function(){r.reject({method:post,url:t,status:{status:0,statusText:post 请求超时}})},this.ajaxOpt.timeout),r.always(function(e){try{delete window[o]}catch(e){window[o]=null}}),a(document.body).append(l).append(h),a(h).submit(),r.then(this.done,e.utils.bind(this.fail,this))},done:s(0),fail:function(t){if(https==this.protocol&&http:==location.protocol&&e.getConfig(retryWithHttp,!0))returnsso==this.ajaxOpt.data.o&&getToken==this.ajaxOpt.data.m&&(f=!0),this.retryHttp(t);var n=a.Deferred();return n.reject({errno:999999,errmsg:string==a.type(t)?t:网络错误}),e.events.trigger(error.sync,t.urlthis.ajaxOpt.url),n.promise()},getDomainApi:function(e){return e=elocation.hostname.replace(/^(?:.+\.)?(\w+\.\w+)$/,$1),this.protocol+://login.+e},retryHttp:function(t){this.protocol=http,this.ajaxOpt.url=this.ajaxOpt.url.replace(/^https/,http),this.I360=请登录帐号}),t.promise()},e.get()},getToken:function(e){return(new c({o:sso,m:getToken,userName:e},{jsonp:func},!0)).get()},getUserInfo:function(t,n){var r=e.getConfig(headSize,100_100),i=e.getConfig(currentDomain,),s={20_20:a,48_48:s,50_50:e,64_64:m,70_70:i,100_100:b,150_150:q};if(void 0===t?t=!0:boolean!=a.type(t)&&(n=t,t=!1),t&&h&&void 0===n)return a.Deferred().resolve(h).promise();var o=new c({o:sso,m:info,show_name_flag:1,head_type:s[r]});return o.done=function(e){var t=a.Deferred();return e.qid?(void 0===n&&(h=e),t.resolve(e)):t.reject({errno:999999,errmsg:无法获取登录状态}),t.promise()},e.getConfig(ignoreCookie)?o.get():i&&e.utils.getCookie(Q)?o.get(o.getDomainApi(i)):e.utils.getCookie(Q)?o.get(o.getDomainApi(n)):a.Deferred().reject(e.ERROR.NOT_SIGNED_IN).promise()},getUserSecInfo:function(e){var t=new c({crumb:e});return t.get(t.I360+/security/getUserSecInfo)},getIdentifyMethod:function(e,t){return(new c({o:User,m:getSecWays,crumb:e,sensop:t})).post()},getCaptchaUrl:function(t){var n=e.getConfig(captchaAppId,i360),r=new c({captchaScene:t,captchaApp:n});return r.get(r.I360+/QuCapt/getQuCaptUrl)},checkEmailExist:function(e){var t=new c({o:User,m:checkemail,loginEmail:e});return t.done=s(202),t.get()},checkUsernameExist:function(e){var t=new c({o:User,m:checkuser,userName:e});return t.done=s(1e4),t.get()},checkNicknameExist:function(e){var t=new c({o:User,m:checknickname,nickName:e});return t.done=s(259),t.get()},checkMobileNumberExist:function(e,t,n){var e=t?t+e:e;return n=n,(new c({o:User,m:checkmobile,mobile:e,type:n})).post()},checkEmailStatus:function(e){var t=new c({crumb:e});return t.get(t.I360+/active/checkLoginEmailStatus)},getMobileState:function(){return(new c({o:user,m:getStateList,quc_lang:})).get()},checkMobileLogin:function(e){return(new c({o:user,m:checkLoginMethod,acctype:2,lm:1,account:e})).get()},checkSignUpCaptchaRequired:function(){var t=new c({captchaApp:e.getConfig(captchaAppId,i360)});return t.get(t.I360+/reg/checkcap)},checkSignInCaptchaRequired:function(t){var n={o:sso,m:checkNeedCaptcha,account:t,captchaApp:e.getConfig(captchaAppId,i360)};return(new c(n)).get()},identify:function(e,t,n,i,s){var o={o:User,m:checkSecWay,crumb:e,vtype:n,sensop:t};returnpwd==n&&(i=r(i),o.captcha=s),o.vc=i,(new c(o,{},!0)).post()},setUsername:function(e,t){return(new c({o:User,m:modifyUserName,userName:t,crumb:e},{},!0)).post().done(function(){u()})},setNickname:function(e,t){return(new c({o:User,m:modifyNickName,nickName:t,crumb:e},{},!0)).post().done(function(){u()})},setEmail:function(e,t){var n=new c({crumb:e,loginEmail:t},{},!0);return n.post(n.I360+/active/doSetLoginEmail).done(function(){u()})},setSecEmail:function(e,t){var n=new c({crumb:e,secemail:t},{},!0);return n.post(n.I360+/profile/dosetsecemail).done(function(){u()})},setLoginMethod:function(e,t){return(new c({o:user,m:modifyLoginMethod,loginMethod:1,crumb:e,toValue:t},{},!0)).post().done(function(){u()})},setCookie:function(t,n){var r=e.getConfig(supportHttps,l),i=https==e.getConfig(protocol,null).toLowerCase();t=decodeURIComponent(t),void 0===n?n=e.getConfig(domainList,[]):a.isArray(n)(n=[n]);var s,o=[];return a.each(n,function(e,n){a.inArray(n,r)-1?(s=new c({o:sso,m:setcookie,s:t},{jsonp:func},!0),o.push(s.get(s.getDomainApi(n)))):i(s=new c({o:sso,m:setcookie,s:t},{jsonp:func}),o.push(s.get(s.getDomainApi(n))))}),a.when.apply(a,o)},sendSmsTokenNeedPhrase:function(e,t,n,r,i,s){var o=;returnboolean==typeof e&&(n=t,t=e,r=n,i=r,e=null),login==s?o=0:reg==s&&(o=2),(new c({o:User,m:sendSmsCodeNew,condition:t?1:2,account:n,crumb:e,sms_scene:o,captcha:r,vt:i})).post()},sendSmsToken:function(e,t,n,r){var i=;returnboolean==typeof e&&(n=t,t=e,e=null),object==typeof n&&(n=n.areaCode+n.mobileNumber),findpwd==r&&(i=1),(new c({o:User,m:sendSmsCode,condition:t?1:2,account:n,crumb:e,sms_scene:i})).post()},sendEmailToken:function(e,t){return(new c({o:User,m:sendEmsCode,condition:1,crumb:e,vtype:t})).post()},sendActivationEmail:function(e){var t=new c({crumb:e});return t.post(t.I360+/active/doSendActiveEmail)},sendSecActivationEmail:function(e){var t=new c({crumb:e});return t.post(t.I360+/profile/resendSecurityEmail)},sendSignUpActivationEmail:function(e){return(new c).get(e)},bindMobile:function(e,t,n){var t=t.areaCode+t.mobileNumber;return(new c({o:user,m:bindMobile,crumb:e,mobile:t,smscode:n},{},!0)).post().done(function(){u()})},signUp:function(t){var n={captchaFlag:!0,captchaApp:e.getConfig(captchaAppId,i360),smDeviceId:i()};t=a.extend(n,t),t.password=r(t.password),t.passwordAgain=r(t.passwordAgain)t.password,o(t,{emailActiveFlag:loginEmailActiveFlag,passwordAgain:rePassword,smsToken:smscode,nickname:nickName,username:userName,agreeLicence:is_agree});var s=new c(t,{},!0);return s.post(s.I360+/reg/doregAccount).done(function(){u()})},signIn:function(t){var n={o:sso,m:login,lm:mobile==t.type?1:0,captFlag:1,rtype:data,validatelm:e.getConfig(signIn.mobile.isMustUseMobileSignIn,!1)?1:0,isKeepAlive:!1,captchaApp:e.getConfig(captchaAppId,i360),userName:t.account,smDeviceId:i()};returnmobile==t.type?t.acctype=2:t.password=r(t.password),a.when().then(function(){return t.tokene.sync.getToken(t.account).done(function(e){t.token=e.token})}).then(function(){return(new c(a.extend(n,t),{},!0)).post().done(function(){u()})}).then(function(t){return e.sync.setCookie(t.s)}).then(function(){return e.getUserInfo(!1)})},signOut:function(t){var n=e.getConfig(supportHttps,l),r=https==e.getConfig(protocol,null).toLowerCase();void 0===t!0===t?t=e.getConfig(domainList,[]):a.isArray(t)(t=[t]);var i,s=[];return a.each(t,function(e,t){a.inArray(t,n)>

      英特尔器件的功耗使用英特尔的 EPE 功耗估算工具估算,并假设在以下最坏情况下:

      LED日光灯电源发热到一定程度会导致烧坏,关于这个问题,也见到过有人在行业论坛发过贴讨论过。本文将从....

      本白皮书探讨了如何在赛灵思 DSP48E2 Slice 上优化 INT8 深度学习运算,从而实现 1.75 倍的性能提升。赛灵思 DSP48E2 Slice 可用于在共享相同内核权重的同时实现并行 INT8 MACC。北京赛车八码滚雪球为高效地实现 INT, 需要采用 24 位输入宽度,这项优势只有赛灵思 UltraScale 和 UltraScale+ FPGA DSP Slice 能够提供支持。赛灵思非常适合用于深度学习应用中的 INT8 工作负载(例如图像分类)。赛灵思不断创新新的基于软/硬件的方法,以加快深度学习应用的发展。

网站地图