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