日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

Winograd,GEMM算法综述(CNN中高效卷积实现)(下)

發(fā)布時(shí)間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winograd,GEMM算法综述(CNN中高效卷积实现)(下) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?

? ? ? ? ? ? ? ?CNN高效卷積實(shí)現(xiàn)算法和應(yīng)用綜述(下)

論文分析

1. Fast Algorithms for Convolutional Neural Networks

分析的第一篇文章是16年CVPR,由于是CVPR中第一次將Winograd算法引入,大篇幅介紹了Winograd算法的原理,矩陣的操作,轉(zhuǎn)化,沒(méi)有做任何優(yōu)化,直接按照矩陣公式操作的。其中與FFT進(jìn)行了比較。現(xiàn)在看來(lái),在追求快速和高的FLOPS指標(biāo)下,完成相同任務(wù)的MACC操作數(shù)越少,則越高效。這個(gè)在CNN的網(wǎng)絡(luò)Pruning中是一個(gè)重要指標(biāo),相同時(shí)間,增加FLOPS,網(wǎng)絡(luò)Parameter Size為目的。FFT并不占優(yōu)勢(shì)。作者比較了cuDNN和Winograd算法的TFLOPS的比較。其中Winograd算法F(2x2,3x3)在上一篇綜述中已經(jīng)詳細(xì)分析了理論。不懂的請(qǐng)查看上一篇綜述文章(高效卷積實(shí)現(xiàn)算法和應(yīng)用綜述(上))。https://blog.csdn.net/qq_32998593/article/details/86177151

處理時(shí)間和TFLOPS比較

從上表可以看出,Winograd算法的TFLOPS比cuDNN的計(jì)算性能高,相同的網(wǎng)絡(luò),處理時(shí)間更低。

從上圖可以看出,Winograd算法比cuDNN的GEMM算法擁有更高的計(jì)算能力,更低的操作數(shù)。

?

2.?Evaluating Fast Algorithms for Convolutional Neural Networks on FPGAs

下面是商湯中Winograd算法FPGA實(shí)現(xiàn),17年發(fā)表在FCCM中的論文。

用更多的加法來(lái)替代乘法,傳統(tǒng)的卷積實(shí)現(xiàn),需要6層循環(huán),而采用Winograd算法,只需要4層循環(huán)。

采用原始的卷積操作,需要6層for循環(huán)運(yùn)算。而采用Winograd算法,在里面的兩層,只需要調(diào)用Winograd(X,F,Y)這個(gè)計(jì)算模塊,就能直接計(jì)算出卷積參數(shù)。少了60%以上的乘法操作。在FPGA實(shí)現(xiàn)中,首先就要避免直接計(jì)算乘法,盡量用移位來(lái)代替。在乘法資源如此昂貴的FPGA上,這個(gè)Winograd算法能夠減少乘法操作,當(dāng)然很受業(yè)界歡迎。帶來(lái)了一大部分科研人員致力于Winograd算法在FPGA的高效實(shí)現(xiàn)。

作者利用line buffer架構(gòu),將輸入的數(shù)據(jù)進(jìn)行緩存,同時(shí)將每一組kernel從cache上取出來(lái),放進(jìn)設(shè)計(jì)好的PE模塊中進(jìn)行Winograd矩陣乘法。

這里具體的目的就是按模塊劃分好各個(gè)功能,然后利用片上的line buffer,也就是BlockRAM來(lái)進(jìn)行緩存,每6行就拿去做Winograd卷積,然后Stride為4。PE為一個(gè)專門的Winograd卷積模塊。如下圖所示為具體的操作:

每一個(gè)矩陣的轉(zhuǎn)換需要的矩陣是固定的(A,B,G)是離線的,將矩陣的乘法分為4步,為了節(jié)省片上的BRAM,先對(duì)input和filter進(jìn)行轉(zhuǎn)換,這里面是采用的LUT進(jìn)行,由于轉(zhuǎn)換矩陣B和G的特點(diǎn),只需要進(jìn)行位運(yùn)算。第二步,進(jìn)行EWMM計(jì)算,第三步,計(jì)算Y的轉(zhuǎn)換矩陣,最后,按通道累加得到對(duì)應(yīng)的output。

對(duì)比的指標(biāo)包括GOP/s,能源效率GOP/s/W。這個(gè)可以通過(guò)FPGA的開(kāi)發(fā)平臺(tái)進(jìn)行評(píng)估。

在AlexNet上進(jìn)行對(duì)比,與其他平臺(tái)相比,在ZYNQ上的銷量有10x以上的提高。

在VGG的實(shí)現(xiàn)對(duì)比上,與其他原始的實(shí)現(xiàn)相比,采用Winograd卷積算法的實(shí)現(xiàn)由將近8.7x的提升。

與GPU相比,也在效率上有一定提高。(PS:比計(jì)算峰值,吞吐量,TOPs比不過(guò)GPU,但是一旦牽扯到電源消耗,Watt數(shù),就比GPU有很大的提高。不在一個(gè)數(shù)量級(jí)的電源效率。)

3.?Efficient Sparse-Winograd Convolutional Neural Networks

這是MIT韓松指導(dǎo)的論文,發(fā)表在ICLR 2018年會(huì)議上,延續(xù)了他的風(fēng)格,做剪枝,網(wǎng)絡(luò)的稀疏化,減少了計(jì)算過(guò)程中的乘法次數(shù)。將稀疏性引入卷積轉(zhuǎn)換上。

將剪枝后的稀疏性用在Winograd卷積實(shí)現(xiàn)上,充分減少乘法的次數(shù),將近10.4x,6.8x和10.8x的減少。如果在傳統(tǒng)算法上進(jìn)行ReLU和Prune,在未變換之前,Activation Layer和Kernel Layer是稀疏的,當(dāng)進(jìn)行變換后,在做EWMM時(shí),一樣的是非稀疏的乘法,沒(méi)減少乘法次數(shù)。而作者將變化在ReLU和Prune之前,使得經(jīng)過(guò)稀疏操作的矩陣就是能夠直接進(jìn)行Winograd算法的矩陣,減少了乘法次數(shù)。

具體的內(nèi)容可以在論文中去查看。這個(gè)圖解釋的非常清楚,相同的稀疏方法加在不同的地方,對(duì)結(jié)果的不同影響。

其中做稀疏化的公式為:

最終VGG在CIFAR10上的精度比較,可以看出在大密度剪枝的情況下,最終的分類精度沒(méi)有掉太多。且?guī)?lái)的13.3x的計(jì)算負(fù)載降低。減少了權(quán)值的數(shù)量,減少了乘法次數(shù)。

其他數(shù)據(jù)集上的比較,ImageNet,CIFAR100,Resnet的實(shí)現(xiàn)等,可以查看該論文。

?

4.?Towards a Uniform Template-based Architecture for Accelerating 2D and 3D CNNs on FPGA

這是一篇在FPGA 2018 頂會(huì)上發(fā)表的一篇論文,作者將Winograd算法的2D卷積擴(kuò)展到3D卷積,在FPGA上實(shí)現(xiàn)。建立了統(tǒng)一的計(jì)算模板。具體示意圖如圖所示。

將矩陣的轉(zhuǎn)換,卷積的操作,全部作為整體,這樣會(huì)減少更多的乘法次數(shù),會(huì)節(jié)省FPGA上的乘法器資源。

這個(gè)卷積的實(shí)現(xiàn),對(duì)比第二篇論文,即商湯在FPGA上的實(shí)現(xiàn)圖,可以看出兩篇文章的for循環(huán)的層數(shù)都是相同的,本文在3D的Winograd算法進(jìn)行了優(yōu)化,做了更多的處理,使得原本的2D矩陣乘法能夠擴(kuò)展到3D上。其實(shí)現(xiàn)過(guò)程更加復(fù)雜。

具體的實(shí)現(xiàn)過(guò)程如上圖所示。將矩陣的轉(zhuǎn)置,矩陣的乘法,先在模板中進(jìn)行變換,最后在PE中進(jìn)行Winograd最后的element-wise matrix multiplication。其實(shí)可以看出,這個(gè)模塊和商湯的那篇文章很像,整個(gè)流水和處理的結(jié)構(gòu)都很相似。

從最后的評(píng)估結(jié)果可以看出,性能都有很大的提升。在1.0 TOPS以上去了。更多的內(nèi)容可以查看論文。

?

在關(guān)于Winograd算法,GEMM等高效卷積實(shí)現(xiàn)的算法分析在上一篇綜述中,請(qǐng)參閱上一篇綜述。上一篇綜述文章地址。https://blog.csdn.net/qq_32998593/article/details/86177151

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Winograd,GEMM算法综述(CNN中高效卷积实现)(下)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。