深度神經(jīng)網(wǎng)絡(luò)FPGA設(shè)計(jì)與實(shí)現(xiàn)
定 價(jià):35 元
- 作者:孫其功
- 出版時(shí)間:2020/10/1
- ISBN:9787560657431
- 出 版 社:西安電子科技大學(xué)出版社
- 中圖法分類:TP183
- 頁碼:248
- 紙張:膠版紙
- 版次:1
- 開本:16K
本書從深度神經(jīng)網(wǎng)絡(luò)和AI芯片研究現(xiàn)狀出發(fā),系統(tǒng)地論述了目前深度學(xué)習(xí)主流開發(fā)平臺(tái)和深度神經(jīng)網(wǎng)絡(luò)基于FPGA平臺(tái)實(shí)現(xiàn)加速的開發(fā)原理和應(yīng)用實(shí)例。全書主要包括5部分:第1~2章介紹了深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,并總結(jié)了深度學(xué)習(xí)主流開發(fā)平臺(tái)和AI芯片的研究現(xiàn)狀;第3~6章在對深度神經(jīng)網(wǎng)絡(luò)基礎(chǔ)層算子、FPGA進(jìn)行了介紹后,總結(jié)了FPGA神經(jīng)網(wǎng)絡(luò)開發(fā)基礎(chǔ)及RTL級(jí)開發(fā);第7章分析了基于FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)加速的實(shí)例;第8章介紹了基于OpenCL的FPGA神經(jīng)網(wǎng)絡(luò)計(jì)算加速開發(fā);第9章分析了前沿神經(jīng)網(wǎng)絡(luò)壓縮與加速技術(shù)。
本書可以為人工智能、計(jì)算機(jī)科學(xué)、信息科學(xué)、神經(jīng)網(wǎng)絡(luò)加速計(jì)算研究者或者從事深度學(xué)習(xí)、圖像處理的相關(guān)研究人員提供參考,也可作為相關(guān)專業(yè)本科生及研究生的教學(xué)參考書。
近幾年來,隨著計(jì)算機(jī)技術(shù)的發(fā)展以及硬件設(shè)備計(jì)算能力的提高,人工智能技術(shù)得到了飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)也由原來的淺層發(fā)展至深層,由此引出深度學(xué)習(xí)的概念。深度學(xué)習(xí)在圖像處理、語音識(shí)別、機(jī)器控制等領(lǐng)域取得了巨大的突破,很多公司都希望在人工智能領(lǐng)域有所成就,試圖抓住先機(jī),占領(lǐng)應(yīng)用市場,因此相關(guān)專業(yè)人才供不應(yīng)求。研究者一般使用多個(gè)GPU(Graphics Processing Unit,圖形處理器)或者計(jì)算機(jī)集群進(jìn)行深層復(fù)雜模型的研究與探索,從而解決更加復(fù)雜的問題,但卻忽略了能量消耗與計(jì)算資源的限制因素。雖然很多算法在GPU加速條件下可以實(shí)現(xiàn)不錯(cuò)的效果,但是距離工業(yè)界的實(shí)際要求還有很大的差距,很多復(fù)雜模型無法部署在小型設(shè)備上或者計(jì)算實(shí)時(shí)性無法滿足應(yīng)用需求,這也是困擾眾多工程師的主要難題。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)可以通過硬件描述語言(Verilog或VHDL)或C?/?C++?/?OpenCL進(jìn)行編程,它具有提供原始計(jì)算能力、設(shè)計(jì)靈活、安全可靠、高效率和低功耗的優(yōu)勢。目前一些公司和研究機(jī)構(gòu)把深度學(xué)習(xí)的模型遷移到FPGA上,以滿足工業(yè)和特殊領(lǐng)域的使用需求。FPGA在深度學(xué)習(xí)中的研究大致可以分為對特定的應(yīng)用程序進(jìn)行加速、對特定的算法進(jìn)行加速、對算法的公共特性進(jìn)行加速,以及帶有硬件模板的通用加速器框架設(shè)計(jì)。在芯片需求還未形成規(guī)模、算法需要不斷改進(jìn)的情況下,F(xiàn)PGA大大降低了從算法到芯片電路的調(diào)試成本,也是實(shí)現(xiàn)半定制人工智能芯片的最佳選擇之一。
我們依托于智能感知與圖像理解教育部重點(diǎn)實(shí)驗(yàn)室、智能感知與計(jì)算國際合作聯(lián)合實(shí)驗(yàn)室、智能感知與計(jì)算國際聯(lián)合研究中心以及西安電子科技大學(xué)-加速云深度學(xué)習(xí)聯(lián)合實(shí)驗(yàn)室,致力于深度學(xué)習(xí)理論研究及其硬件的應(yīng)用開發(fā)。本書基于以上的研究基礎(chǔ),為讀者分享相關(guān)的設(shè)計(jì)和開發(fā)思路,希望能夠?yàn)橄嚓P(guān)領(lǐng)域的工程師提供參考。本書的完成離不開團(tuán)隊(duì)的支持與幫助,特別感謝李洋、李秀芳、楊育婷、張若浛、陳潔等博士,以及鄒洪斌、楊康、樊龍飛、孫璆琛、姜升、蘇蓓、馮雨歆、陳亞楠等碩士研究生在寫作和工程開發(fā)與驗(yàn)證中的辛勤與努力,感謝李艾瑾、施玲玲等碩士研究生幫忙?,感謝書中所有被引用文獻(xiàn)的作者。本書的內(nèi)容和安排完全是作者的偏好,由于水平有限,書中可能還存在不妥之處,懇請廣大讀者批評指正。
第1章 深度學(xué)習(xí)及AI芯片 1
1.1 深度學(xué)習(xí)研究現(xiàn)狀 1
1.1.1 深度學(xué)習(xí)的概念 1
1.1.2 深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程 2
1.1.3 典型的深度神經(jīng)網(wǎng)絡(luò) 4
1.1.4 深度學(xué)習(xí)的典型應(yīng)用 5
1.2 AI芯片研究現(xiàn)狀 10
1.2.1 GPU 10
1.2.2 半制定FPGA 11
1.2.3 全定制ASIC 11
1.2.4 SoC 11
1.2.5 類腦芯片 12
第2章 深度學(xué)習(xí)開發(fā)平臺(tái) 13
2.1 深度學(xué)習(xí)平臺(tái)介紹 13
2.1.1 TensorFlow 13
2.1.2 Caffe 16
2.1.3 Pytorch 17
2.1.4 MXNet 19
2.1.5 CNTK 20
2.1.6 PaddlePaddle 21
2.1.7 Darknet 22
2.2 深度學(xué)習(xí)平臺(tái)對比 23
第3章 深度神經(jīng)網(wǎng)絡(luò)基礎(chǔ)層算子介紹 26
3.1 卷積算子 26
3.2 反卷積算子 29
3.3 池化算子 31
3.3.1 平均池化算子 31
3.3.2 最大池化算子 32
3.4 激活算子 33
3.5 全連接算子 34
3.6 Softmax算子 35
3.7 批標(biāo)準(zhǔn)化算子 36
3.8 Shortcut算子 37
第4章 FPGA基本介紹 39
4.1 FPGA概述 39
4.1.1 可編程邏輯器件 39
4.1.2 FPGA的特點(diǎn) 40
4.1.3 FPGA的體系結(jié)構(gòu) 40
4.2 FPGA系列及型號(hào)選擇 41
4.2.1 FPGA生產(chǎn)廠家 41
4.2.2 FPGA系列 42
4.2.3 基于應(yīng)用的FPGA型號(hào)選擇 44
4.3 FPGA性能衡量指標(biāo) 44
第5章 FPGA神經(jīng)網(wǎng)絡(luò)開發(fā)基礎(chǔ) 46
5.1 FPGA開發(fā)簡介 46
5.2 FPGA的結(jié)構(gòu)特性與優(yōu)勢 46
5.3 FPGA深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)加速計(jì)算的開發(fā)過程 48
5.3.1 神經(jīng)網(wǎng)絡(luò)模型計(jì)算量分析 48
5.3.2 神經(jīng)網(wǎng)絡(luò)模型訪問帶寬分析 51
5.3.3 加速硬件芯片選型 53
5.3.4 加速硬件系統(tǒng)設(shè)計(jì) 55
5.4 FPGA在深度學(xué)習(xí)方面的發(fā)展 58
第6章 FPGA神經(jīng)網(wǎng)絡(luò)計(jì)算的RTL級(jí)開發(fā) 60
6.1 搭建開發(fā)環(huán)境 60
6.1.1 開發(fā)環(huán)境的選擇 60
6.1.2 開發(fā)環(huán)境的搭建 61
6.2 RTL級(jí)開發(fā)的優(yōu)勢與劣勢 63
6.3 RTL級(jí)開發(fā)的基本流程 63
6.3.1 需求理解 65
6.3.2 方案評估 65
6.3.3 芯片理解 65
6.3.4 詳細(xì)方案設(shè)計(jì) 68
6.3.5 RTL級(jí)HDL設(shè)計(jì)輸入 79
6.3.6 功能仿真 81
6.3.7 綜合優(yōu)化 82
6.3.8 布局布線與實(shí)現(xiàn) 82
6.3.9 靜態(tài)時(shí)序分析與優(yōu)化 83
6.3.10 芯片編程與調(diào)試 83
6.4 RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速設(shè)計(jì)流程 83
6.5 RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速仿真 84
6.6 RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速時(shí)序優(yōu)化 84
第7章 基于FPGA實(shí)現(xiàn)YOLO V2模型計(jì)算加速實(shí)例分析 86
7.1 神經(jīng)網(wǎng)絡(luò)基本算子的FPGA實(shí)現(xiàn) 86
7.1.1 加速邏輯方案整體設(shè)計(jì) 86
7.1.2 卷積算子設(shè)計(jì) 89
7.1.3 全連接算子設(shè)計(jì) 97
7.1.4 池化算子設(shè)計(jì) 100
7.2 FPGA YOLO V2的頂層設(shè)計(jì) 103
7.2.1 YOLO V2模型簡介 103
7.2.2 YOLO V2模型結(jié)構(gòu) 105
7.2.3 YOLO V2的FPGA實(shí)現(xiàn)設(shè)計(jì) 107
7.3 FPGA YOLO V2的模塊設(shè)計(jì) 111
7.3.1 卷積 111
7.3.2 YOLO V2偏置、歸一化/縮放/激活 114
7.3.3 激活函數(shù) 116
7.4 FPGA YOLO V2的系統(tǒng)和RTL仿真 116
7.5 FPGA YOLO V2系統(tǒng)時(shí)序優(yōu)化 118
7.5.1 插入寄存器 118
7.5.2 并行化設(shè)計(jì) 120
7.5.3 均衡設(shè)計(jì) 124
7.5.4 減少信號(hào)扇出 126
7.5.5 優(yōu)化數(shù)據(jù)信號(hào)路徑 127
7.6 性能對比 128
7.6.1 S10的檢測流程 128
7.6.2 檢測結(jié)果 129
7.6.3 與GPU的性能對比 130
第8章 基于OpenCL的FPGA神經(jīng)網(wǎng)絡(luò)計(jì)算加速開發(fā) 132
8.1 OpenCL基礎(chǔ) 132
8.1.1 OpenCL簡介 132
8.1.2 OpenCL模型 133
8.1.3 命令事件 140
8.2 OpenCL FPGA開發(fā)流程 141
8.2.1 搭建OpenCL開發(fā)環(huán)境 141
8.2.2 開發(fā)流程 144
8.3 OpenCL程序優(yōu)化 160
8.3.1 數(shù)據(jù)傳輸優(yōu)化 160
8.3.2 內(nèi)存訪問優(yōu)化 161
8.3.3 數(shù)據(jù)處理優(yōu)化 163
8.3.4 其他優(yōu)化手段 170
8.3.5 矩陣乘法優(yōu)化實(shí)例 170
8.4 OpenCL FPGA實(shí)例 176
8.4.1 分類任務(wù) 176
8.4.2 目標(biāo)檢測 201
第9章 神經(jīng)網(wǎng)絡(luò)壓縮與加速技術(shù) 221
9.1 神經(jīng)網(wǎng)絡(luò)剪枝壓縮與權(quán)值共享方法 221
9.1.1 神經(jīng)網(wǎng)絡(luò)剪枝 222
9.1.2 權(quán)值共享 223
9.2 低秩估計(jì) 226
9.3 模型量化 227
9.3.1 二值化權(quán)重 227
9.3.2 三值化權(quán)重 228
9.3.3 二值化神經(jīng)網(wǎng)絡(luò) 229
9.3.4 多位神經(jīng)網(wǎng)絡(luò) 230
9.4 知識(shí)蒸餾 231
參考文獻(xiàn) 234