基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速器關(guān)鍵技術(shù)研究
發(fā)布時(shí)間:2021-10-19 04:35
近些年來,卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)成為機(jī)器學(xué)習(xí)領(lǐng)域最為流行的模型之一,在圖像分類、目標(biāo)檢測、語義分割等各個(gè)領(lǐng)域都得到廣泛應(yīng)用并取得突破性進(jìn)展;诰矸e神經(jīng)網(wǎng)絡(luò)的人工智能應(yīng)用,分為訓(xùn)練和推理兩個(gè)階段的任務(wù),兩個(gè)任務(wù)都是計(jì)算密集型的,目前主要在高性能處理器或集群上運(yùn)行,如服務(wù)器CPU和GPU。然而,過高的功耗不僅增加了數(shù)據(jù)中心的運(yùn)營成本,還限制了人工智能應(yīng)用在嵌入式設(shè)備、邊緣計(jì)算設(shè)備等低功耗應(yīng)用場景下的部署。因此,具有高能效比的卷積神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)成為新的研究熱點(diǎn)。FPGA(現(xiàn)場可編程門陣列)具有高性能、高能效比、高靈活性等特點(diǎn),非常適合作為加速器設(shè)計(jì)平臺。本文針對基于FPGA平臺的卷積神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)中的關(guān)鍵技術(shù)展開研究,包括不同的任務(wù)、不同的實(shí)現(xiàn)算法、不同的應(yīng)用場景、不同的設(shè)計(jì)和實(shí)現(xiàn)方法。面向卷積神經(jīng)網(wǎng)絡(luò)的推理任務(wù),本文第二章研究了基于常規(guī)空間卷積的加速器設(shè)計(jì),深入分析了執(zhí)行推理任務(wù)時(shí)每一層的計(jì)算特點(diǎn)和訪存特點(diǎn),并提出了加速器設(shè)計(jì)的并行框架,可以在任務(wù)級、層級、循環(huán)級和操作級四個(gè)層次上挖掘算法的并行性。執(zhí)行網(wǎng)絡(luò)模型推理任務(wù)時(shí),針對不同的網(wǎng)絡(luò)模型需要定制不同的加速器。我們提出了設(shè)計(jì)空間搜索算...
【文章來源】:國防科技大學(xué)湖南省 211工程院校 985工程院校
【文章頁數(shù)】:117 頁
【學(xué)位級別】:博士
【部分圖文】:
人臉檢測和識別應(yīng)用流程
FPGA是Field-Programmable Gate Array(現(xiàn)場可編程門陣列)的縮寫,是一種可編程的集成半導(dǎo)體器件。可編程性是指器件在制造完成之后,可以通過編程的方式重新定義內(nèi)部單元的功能和連接關(guān)系,來搭建任意功能的數(shù)字電路或系統(tǒng)。FPGA內(nèi)部主要包含三類資源:可編程邏輯單元、可編程布線資源和輸入輸出單元。其中可編程邏輯單元用于搭建具有特定功能的邏輯模塊;可編程布線資源用于連接不同邏輯模塊,搭建特定功能的電路;輸入輸出單元分則用于將片內(nèi)的電路連接到片外,形成完整的數(shù)字系統(tǒng)。圖1.2展示了一個(gè)典型的FPGA內(nèi)部結(jié)構(gòu)圖?删幊踢壿媶卧(CLB)按照二維網(wǎng)格排列,輸入輸出單元(I/O)分布在網(wǎng)格的外圍,可編程邏輯單元之間、可編程邏輯單元與輸入輸出單元之間通過可編程布線資源互連。FPGA內(nèi)部豐富的可編程布線資源占用了大量的芯片面積。因此,與ASIC(專用集成電路)相比,FPGA具有芯片面積大、功耗較高、運(yùn)行頻率低等不足。另一方面,這些豐富的可編程布線資源使得FPGA具有ASIC不能比擬的高靈活性。ASIC的設(shè)計(jì)、驗(yàn)證和流片,需要投入大量的金錢和時(shí)間成本,基于FPGA的設(shè)計(jì)可以提供更低成本的解決方案和更短的上市時(shí)間。同時(shí),FPGA的靈活性和可編程性可以快速適應(yīng)不斷變化的應(yīng)用需求,只需要加載新的比特流對邏輯重新編寫即可。目前,在人工智能領(lǐng)域的研究還處于發(fā)展階段,算法更新迭代的速度非?。基于FPGA的敏捷設(shè)計(jì)可以快速跟進(jìn)新的算法需求,因此,利用FPGA進(jìn)行人工智能應(yīng)用的加速研究是實(shí)現(xiàn)高性能處理的有效途徑。
圖1.3中給出了一個(gè)卷積層的偽代碼描述,包含六層循環(huán):輸出通道層、輸入通道層、輸出特征圖像的行方向、輸出特征圖像的列方向、卷積窗口的行方向和卷積窗口的列方向。采用常規(guī)空間卷積方式的加速器主要通過循環(huán)展開的手段提高并行性,獲得加速比。受限于FPGA芯片的計(jì)算資源,允許展開的循環(huán)粒度是有限的。另一方面,卷積層中特征圖像的數(shù)據(jù)量可能會超過FPGA的片上存儲容量,目前的加速器多采用圖像分塊的方法來解決。在加速器設(shè)計(jì)時(shí),循環(huán)展開方式、循環(huán)展開粒度、圖像分塊方法、圖像分塊的大小等參數(shù)構(gòu)成了設(shè)計(jì)空間。需要建立加速器模型和有效的設(shè)計(jì)空間搜索算法,找到最優(yōu)的參數(shù)組合,在滿足帶寬約束下最大程度的提高加速器的吞吐率性能。采用常規(guī)空間卷積算法實(shí)現(xiàn)的加速器有很多[36][37][38][39],我們選擇幾個(gè)典型的工作介紹其設(shè)計(jì)思路。Zhang等人設(shè)計(jì)的加速器中對輸出通道層和輸入通道層兩層循環(huán)進(jìn)行了展開,并提出了Roofline模型用于指導(dǎo)設(shè)計(jì)空間搜索[40]。加速器基于32位單精度浮點(diǎn)運(yùn)算部件并采用HLS實(shí)現(xiàn),在Alex Net模型上執(zhí)行推理任務(wù)的吞吐率性能為61.6GOP/s。Qiu等人通過實(shí)驗(yàn)驗(yàn)證的方法分析了網(wǎng)絡(luò)模型參數(shù)的數(shù)值精度對于網(wǎng)絡(luò)模型推理性能的影響,其結(jié)論是:網(wǎng)絡(luò)模型參數(shù)采用低位寬低精度的定點(diǎn)數(shù)值表示,可以達(dá)到與浮點(diǎn)數(shù)值表示非常接近的推理性能[41]。與浮點(diǎn)運(yùn)算部件相比,定點(diǎn)運(yùn)算部件可以節(jié)省硬件資源開銷,因此可以分配更多的運(yùn)算部件,更大程度地挖掘算法的并行性。3除了輸出通道層和輸入通道層兩層循環(huán),Qiu等人設(shè)計(jì)的加速器還對卷積窗口的行方向和列方向做了充分展開;8-16位定點(diǎn)運(yùn)算部件并采用RTL硬件設(shè)計(jì)實(shí)現(xiàn),加速器在VGG16模型上執(zhí)行推理任務(wù)的吞吐率性能達(dá)到了137.0GOP/s。Ma等人設(shè)計(jì)的加速器采用了同樣的循環(huán)展開策略,此外,還通過循環(huán)交換的方法,改善了數(shù)據(jù)訪存效率[42]。借助計(jì)算資源更豐富的Altera Arria10系列芯片,所實(shí)現(xiàn)的加速器在VGG16模型上執(zhí)行推理任務(wù)的吞吐率性能達(dá)到了645.3GOP/s。
本文編號:3444161
【文章來源】:國防科技大學(xué)湖南省 211工程院校 985工程院校
【文章頁數(shù)】:117 頁
【學(xué)位級別】:博士
【部分圖文】:
人臉檢測和識別應(yīng)用流程
FPGA是Field-Programmable Gate Array(現(xiàn)場可編程門陣列)的縮寫,是一種可編程的集成半導(dǎo)體器件。可編程性是指器件在制造完成之后,可以通過編程的方式重新定義內(nèi)部單元的功能和連接關(guān)系,來搭建任意功能的數(shù)字電路或系統(tǒng)。FPGA內(nèi)部主要包含三類資源:可編程邏輯單元、可編程布線資源和輸入輸出單元。其中可編程邏輯單元用于搭建具有特定功能的邏輯模塊;可編程布線資源用于連接不同邏輯模塊,搭建特定功能的電路;輸入輸出單元分則用于將片內(nèi)的電路連接到片外,形成完整的數(shù)字系統(tǒng)。圖1.2展示了一個(gè)典型的FPGA內(nèi)部結(jié)構(gòu)圖?删幊踢壿媶卧(CLB)按照二維網(wǎng)格排列,輸入輸出單元(I/O)分布在網(wǎng)格的外圍,可編程邏輯單元之間、可編程邏輯單元與輸入輸出單元之間通過可編程布線資源互連。FPGA內(nèi)部豐富的可編程布線資源占用了大量的芯片面積。因此,與ASIC(專用集成電路)相比,FPGA具有芯片面積大、功耗較高、運(yùn)行頻率低等不足。另一方面,這些豐富的可編程布線資源使得FPGA具有ASIC不能比擬的高靈活性。ASIC的設(shè)計(jì)、驗(yàn)證和流片,需要投入大量的金錢和時(shí)間成本,基于FPGA的設(shè)計(jì)可以提供更低成本的解決方案和更短的上市時(shí)間。同時(shí),FPGA的靈活性和可編程性可以快速適應(yīng)不斷變化的應(yīng)用需求,只需要加載新的比特流對邏輯重新編寫即可。目前,在人工智能領(lǐng)域的研究還處于發(fā)展階段,算法更新迭代的速度非?。基于FPGA的敏捷設(shè)計(jì)可以快速跟進(jìn)新的算法需求,因此,利用FPGA進(jìn)行人工智能應(yīng)用的加速研究是實(shí)現(xiàn)高性能處理的有效途徑。
圖1.3中給出了一個(gè)卷積層的偽代碼描述,包含六層循環(huán):輸出通道層、輸入通道層、輸出特征圖像的行方向、輸出特征圖像的列方向、卷積窗口的行方向和卷積窗口的列方向。采用常規(guī)空間卷積方式的加速器主要通過循環(huán)展開的手段提高并行性,獲得加速比。受限于FPGA芯片的計(jì)算資源,允許展開的循環(huán)粒度是有限的。另一方面,卷積層中特征圖像的數(shù)據(jù)量可能會超過FPGA的片上存儲容量,目前的加速器多采用圖像分塊的方法來解決。在加速器設(shè)計(jì)時(shí),循環(huán)展開方式、循環(huán)展開粒度、圖像分塊方法、圖像分塊的大小等參數(shù)構(gòu)成了設(shè)計(jì)空間。需要建立加速器模型和有效的設(shè)計(jì)空間搜索算法,找到最優(yōu)的參數(shù)組合,在滿足帶寬約束下最大程度的提高加速器的吞吐率性能。采用常規(guī)空間卷積算法實(shí)現(xiàn)的加速器有很多[36][37][38][39],我們選擇幾個(gè)典型的工作介紹其設(shè)計(jì)思路。Zhang等人設(shè)計(jì)的加速器中對輸出通道層和輸入通道層兩層循環(huán)進(jìn)行了展開,并提出了Roofline模型用于指導(dǎo)設(shè)計(jì)空間搜索[40]。加速器基于32位單精度浮點(diǎn)運(yùn)算部件并采用HLS實(shí)現(xiàn),在Alex Net模型上執(zhí)行推理任務(wù)的吞吐率性能為61.6GOP/s。Qiu等人通過實(shí)驗(yàn)驗(yàn)證的方法分析了網(wǎng)絡(luò)模型參數(shù)的數(shù)值精度對于網(wǎng)絡(luò)模型推理性能的影響,其結(jié)論是:網(wǎng)絡(luò)模型參數(shù)采用低位寬低精度的定點(diǎn)數(shù)值表示,可以達(dá)到與浮點(diǎn)數(shù)值表示非常接近的推理性能[41]。與浮點(diǎn)運(yùn)算部件相比,定點(diǎn)運(yùn)算部件可以節(jié)省硬件資源開銷,因此可以分配更多的運(yùn)算部件,更大程度地挖掘算法的并行性。3除了輸出通道層和輸入通道層兩層循環(huán),Qiu等人設(shè)計(jì)的加速器還對卷積窗口的行方向和列方向做了充分展開;8-16位定點(diǎn)運(yùn)算部件并采用RTL硬件設(shè)計(jì)實(shí)現(xiàn),加速器在VGG16模型上執(zhí)行推理任務(wù)的吞吐率性能達(dá)到了137.0GOP/s。Ma等人設(shè)計(jì)的加速器采用了同樣的循環(huán)展開策略,此外,還通過循環(huán)交換的方法,改善了數(shù)據(jù)訪存效率[42]。借助計(jì)算資源更豐富的Altera Arria10系列芯片,所實(shí)現(xiàn)的加速器在VGG16模型上執(zhí)行推理任務(wù)的吞吐率性能達(dá)到了645.3GOP/s。
本文編號:3444161
本文鏈接:http://sikaile.net/shoufeilunwen/xxkjbs/3444161.html
最近更新
教材專著