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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

?

?

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

論文分析

1. Fast Algorithms for Convolutional Neural Networks

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

處理時間和TFLOPS比較

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

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

?

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

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

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

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

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

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

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

對比的指標包括GOP/s,能源效率GOP/s/W。這個可以通過FPGA的開發(fā)平臺進行評估。

在AlexNet上進行對比,與其他平臺相比,在ZYNQ上的銷量有10x以上的提高。

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

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

3.?Efficient Sparse-Winograd Convolutional Neural Networks

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

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

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

其中做稀疏化的公式為:

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

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

?

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

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

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

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

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

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

?

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

?

?

?

?

?

?

?

?

?

?

總結(jié)

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

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