成員合影(左起)程昕 蘇天祺 薛睿鑫
二、他們做了什么
他們俱樂部參加了第五屆集成電路創(chuàng)新創(chuàng)業(yè)大賽(海云捷迅杯),針對MobileNet V1的硬件加速器進(jìn)行優(yōu)化。一路過關(guān)斬將,熬夜調(diào)通代碼,更新迭代結(jié)果在華東分賽區(qū)獲得二等獎。最后絞盡腦汁進(jìn)行優(yōu)化,終于在全國總決賽獲得海云捷迅杯一等獎(企業(yè)大獎)。
俱樂部成員程昕為他們的優(yōu)化方案起名叫“基于稀疏卷積與層融合的流水線優(yōu)化方案”。優(yōu)化手段分別放在量化、排序、傳輸、計算、流水線這五個方面。通過優(yōu)化,他們將原3000ms的預(yù)測時間,壓縮到接近800ms,速度提升超過3.5倍。
最后的推理效果和時間效果如圖(若將第二層卷積放在arm上進(jìn)行,速度會慢一點但是精度會高一些)
所有卷積在FPGA上進(jìn)行,速度快,精度稍低(左圖);第二層卷積在ARM上進(jìn)行,速度稍慢,但是精度高(右圖)
三、他們的作品
他們的任務(wù)是需要針對基于MobileNet V1的SSD目標(biāo)檢測算法加速器進(jìn)行優(yōu)化,以達(dá)到快速的目標(biāo)檢測效果。
1.整體架構(gòu)
Data (數(shù)據(jù))經(jīng)UpSizer和BusMatrix進(jìn)行仲裁,存儲到相應(yīng)的SRAM中,他們將PingPong Buffer取代原SRAM,用來實現(xiàn)數(shù)據(jù)傳輸和計算的并行;重新設(shè)計卷積模塊,并將卷積結(jié)果直接傳入BiasRelu單元,二者采用層融合的方式連接,以便提高數(shù)據(jù)讀寫和傳輸效率。
(整體的架構(gòu)圖)
2.卷積重構(gòu)
他們采用row-wise,weight stationary的方式重新設(shè)計卷積模塊,并將乘法的并行度提高到96(3×32)使得網(wǎng)絡(luò)可以同時計算32個卷積核的一行數(shù)據(jù),以加快卷積的計算速度并提高片上數(shù)據(jù)的復(fù)用性。
(普通卷積的計算數(shù)據(jù)流)
(逐點卷積的計算數(shù)據(jù)流)
3.流水線優(yōu)化
為了進(jìn)一步提高計算流水,他們將卷積(Conv)和偏移、激活(BiasReLU)融合起來并加入PingPong Buffer。
4.量化方案
他們也對量化過程進(jìn)行優(yōu)化,并在推理前對完成對數(shù)據(jù)的量化并保存結(jié)果。以減少權(quán)重的重復(fù)量化。
(量化過程示意圖)
5.硬件架構(gòu)
上述架構(gòu)的硬件設(shè)計如圖所示。他們設(shè)計的硬件單元包括包含32個Conv Core;每個Conv Core包括3個8bits乘法器和3個32bits加法器;Psum Processing負(fù)責(zé)累加并存儲卷積計算的中間值。
6.優(yōu)化結(jié)果
經(jīng)過他們的優(yōu)化,在不同卷積層的加速達(dá)到了最高39倍加速比,平均4.5倍加速比。并且將整體的目標(biāo)識別速度提升到了最快836ms!
普通卷積層(左)和逐點卷積層加速比
四、海云捷迅對他們的評價
對于愛卡絲俱樂部,重慶海云捷迅科技有限公司資深架構(gòu)師萬毅做出如下評價:
南京大學(xué)的獲獎團(tuán)隊,首先對模型demo耗時的地方做了詳細(xì)的定量分析,準(zhǔn)確的找出了影響性能的問題所在,并根據(jù)分析結(jié)果,系統(tǒng)的提出和實現(xiàn)了改進(jìn)措施。在量化策略、數(shù)據(jù)搬運、卷積實現(xiàn)、剪枝、并行化方面都做了有效的工作,同時文檔、匯報ppt、代碼注釋也做的完善和仔細(xì),測試效果經(jīng)過評測達(dá)到了較好的效果,參賽的團(tuán)隊做了很多行之有效的工作,是一個優(yōu)秀的團(tuán)隊。
——重慶海云捷迅科技有限公司資深架構(gòu)師 萬毅
五、他們的獲獎心得
愛卡絲俱樂部整個暑假都埋頭苦干,終于一路披荊斬棘,最后拿到了想要的名次。讓我們來聽聽各個成員的參賽心得吧!
蘇天祺:在這次比賽中,每位成員都有著很強(qiáng)的責(zé)任感和任務(wù)意識,大家主動給自己分配了需要學(xué)習(xí)的內(nèi)容,所以即使是初次接觸,我們的準(zhǔn)備也足夠。而且凡是遇到困難,我們都會相互討論并且請教有經(jīng)驗的學(xué)長和老師,比賽氣氛簡直不要太好!
程昕:我們每周都會開會啊,大家一股腦把問題拋出來然后相互討論,我們就會碰撞出很多的火花。我們也會給自己規(guī)定時間軸(雖然經(jīng)常做不完),但是給自己一個ddl,自己就有很多的動力!
薛睿鑫:其實我們初賽過后,性能并不是很好,但是大家也都不氣餒,也沒放棄,那個STP一直連不上,簡直要崩潰了,但是一遍一遍的嘗試,一遍一遍的請教相關(guān)老師,終于出了結(jié)果,我們都非常高興。