本書主要討論機器學習、神經(jīng)形態(tài)計算和神經(jīng)網(wǎng)絡的理論及應用,專注于機器學習加速器和硬件開發(fā)。本書從傳統(tǒng)的微處理架構(gòu)發(fā)展歷程入手,介紹在后摩爾定律和后丹納德微縮定律下,新型架構(gòu)的發(fā)展趨勢和影響執(zhí)行性能的各類衡量指標。然后從應用領域、ASIC和特定領域架構(gòu)三個角度展示了設計特定的硬件實現(xiàn)所需考慮的諸多因素。接著結(jié)合機器學習開發(fā)過程及其性能提升方法(如模型壓縮、編碼、近似、優(yōu)化等)介紹硬件實現(xiàn)的細節(jié)。zui后給出機器學習硬件實現(xiàn)的大量案例,展示機器如何獲得思維能力。本書適合有一定機器學習基礎并希望了解更多技術發(fā)展趨勢的讀者閱讀。
1. 涵蓋多種機器學習硬件和平臺,以及各類機器學習硬件加速器解決方案,讀者可根據(jù)需要將這些解決方案應用于合適的機器學習算法。2. 對現(xiàn)有研究成果和產(chǎn)品進行回顧,分析不同的機器學習模型,并通過FPGA和ASIC方法解釋目標機器學習模型的設計。3. 對硬件設計的未來方向進行展望,涉及傳統(tǒng)微處理器、GPU、FPGA和ASIC等,幫助讀者了解現(xiàn)代研究趨勢,進而實現(xiàn)自己的設計。
PREFACE
前 言
2012年,機器學習被應用于圖像識別,并提供了很高的推理準確性。此外,還開發(fā)了一個機器學習系統(tǒng),可以在國際象棋和圍棋游戲中挑戰(zhàn)人類專家,并成功地擊敗了世界級的專業(yè)人士。半導體技術的進步提高了完成深度學習任務所需的執(zhí)行性能和數(shù)據(jù)存儲容量。不僅如此,互聯(lián)網(wǎng)還提供了大量的數(shù)據(jù),可以被應用于神經(jīng)網(wǎng)絡模型的訓練。研究環(huán)境的改善為機器學習領域帶來了突破性進展。
深度學習在世界各地的應用越來越廣泛,特別是在互聯(lián)網(wǎng)服務和社會基礎設施的管理方面。深度學習的神經(jīng)網(wǎng)絡模型在開源的基礎設施和高性能計算系統(tǒng)上運行,使用專用的圖形處理單元(GPU)。然而,GPU會消耗大量的電力(300W),因此數(shù)據(jù)中心在應用大量的GPU時,必須管理電力消耗和產(chǎn)生的熱能以降低運營成本。高昂的運營成本使人們難以使用GPU,即使是在有云服務的情況下。此外,雖然我們應用了開源軟件工具,但機器學習平臺是由特定的CPU和GPU供應商控制的。我們不能從各種產(chǎn)品中進行選擇,而且?guī)缀鯖]有什么多樣性可言。但多樣性是必要的,不僅對于軟件程序如此,對于硬件設備也是如此。2018年是深度學習的特定領域架構(gòu)(DSA)的開端之年,各種初創(chuàng)公司開發(fā)了自己的深度學習處理器,與此同時還出現(xiàn)了硬件多樣性。
本書介紹了不同的機器學習硬件和平臺,描述了各種類型的硬件架構(gòu),并提供了未來硬件設計的方向。書中涵蓋各類機器學習模型,包括神經(jīng)形態(tài)計算和神經(jīng)網(wǎng)絡模型,例如深度學習。此外,還介紹了開發(fā)深度學習的一般周期設計過程。本書對多核處理器、數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)和特定應用集成電路(ASIC)等示例產(chǎn)品也進行了介紹,并總結(jié)了硬件架構(gòu)設計的關鍵點。雖然本書主要關注深度學習,但也對神經(jīng)形態(tài)計算進行了簡要描述。書中還考慮了硬件設計的未來方向,并對傳統(tǒng)微處理器、GPU、FPGA和ASIC的未來發(fā)展進行了展望。為了展示這一領域的當前趨勢,本書描述了當前的機器學習模型及其平臺,使讀者能夠更好地了解現(xiàn)代研究趨勢,并考慮未來的設計,進而有自己的想法。
為了展示相關技術的基本特征,附錄介紹了作為基本深度學習方法的前饋神經(jīng)網(wǎng)絡模型,并提供了一個硬件設計實例。此外,附錄還詳細介紹了高級神經(jīng)網(wǎng)絡模型,使讀者能夠考慮不同的硬件來支持這種模型。最后,附錄還介紹了與深度學習相關的各國研究趨勢和各類社會問題。
全書概要
第1章提供了一個深度學習基礎的例子,并解釋了其應用。本章介紹了訓練(學習)這是機器學習的核心部分,包括它的評估以及驗證方法。工業(yè)4.0是一個應用實例,這是一個先進的行業(yè)定義,支持客戶適應性和優(yōu)化工廠生產(chǎn)線的需求。此外,還介紹了區(qū)塊鏈在機器學習中的應用。區(qū)塊鏈是一個有形和無形財產(chǎn)的賬本系統(tǒng),該系統(tǒng)將被用于深度學習的各種目的。
第2章介紹用于機器學習的基本硬件基礎設施,如微處理器、多核處理器、DSP、GPU和FPGA,包括微架構(gòu)及其編程模型。本章還討論了最近在通用計算機器中使用GPU和FPGA的原因,以及為什么微處理器在提高執(zhí)行性能時遇到了困難。本章還解釋了市場趨勢在應用前景方面的變化。此外,還簡要介紹了評估執(zhí)行性能的指標。
第3章首先描述了一個形式化的神經(jīng)元模型,然后討論了神經(jīng)形態(tài)計算模型和神經(jīng)網(wǎng)絡模型,這兩個模型是最近腦啟發(fā)計算的主要實現(xiàn)方法。神經(jīng)形態(tài)計算包括大腦的脈沖時序依賴可塑性(STDP)特征,這似乎在學習中起著關鍵作用。此外,本章還解釋了用于脈沖傳輸?shù)牡刂?事件表示(AER)。關于神經(jīng)網(wǎng)絡,我們對淺層神經(jīng)網(wǎng)絡和深層神經(jīng)網(wǎng)絡(有時被稱為深度學習)都進行了簡單的解釋。如果你想了解深度學習任務,那么附錄A可以作為一份簡介。
第4章介紹了ASIC和特定領域架構(gòu)。算法被描述為對應用的表示,形成了傳統(tǒng)計算機上的軟件。本章接著介紹了應用程序設計(不僅是軟件開發(fā))所涉及的局部性、死鎖屬性、依賴性以及(到計算機核心的)時間和空間映射等特征。好的硬件架構(gòu)有好的設計,可以有效地利用這些因素。死鎖屬性和依賴性由一般資源系統(tǒng)統(tǒng)一解釋。此外,本章還解釋了設計約束。最后,在Alex Net的案例中分析了推理和訓練方面的深度學習任務。
第5章簡要解釋了機器學習模型神經(jīng)網(wǎng)絡模型的開發(fā)過程,以及編碼后的模型如何通過Python腳本語言的虛擬機器在計算系統(tǒng)上工作。此外,還解釋了向量化、SIMD化和內(nèi)存訪問對齊等代碼優(yōu)化技術。這些技術提高了數(shù)據(jù)級的并行性這是數(shù)據(jù)密集型計算的一個指標。這些技術也提高了執(zhí)行性能,就像在深度神經(jīng)網(wǎng)絡任務中所表現(xiàn)的那樣。除此之外,本章還介紹了計算統(tǒng)一設備架構(gòu)(CUDA)。CUDA是英偉達公司的通用編程基礎設施,用于數(shù)據(jù)密集型計算,包括深度學習任務。你將看到一個基于GPU的系統(tǒng)是如何工作的。
第6章解釋了提高執(zhí)行性能的方法,主要包含模型壓縮、數(shù)值壓縮、編碼、零值跳過、近似和優(yōu)化六種方法。模型壓縮包括剪枝、dropout、dropconnect、蒸餾、主成分分析(PCA)和權重共享。數(shù)值壓縮包括量化、低精度數(shù)值表示、切邊和剪裁。編碼解釋了游程編碼和霍夫曼編碼。零值跳過包括壓縮稀
Shigeyuki Takano,目前在一家頂尖的汽車公司擔任工程師,從事深度學習處理器的開發(fā)。曾在三洋半導體(Sanyo Semiconductor)公司從事數(shù)字信號處理器的開發(fā);還曾任職于多玩國(Dowango)公司,從事硬件視頻轉(zhuǎn)碼器原型的開發(fā)和實現(xiàn)。此外,他正在慶應義塾大攻讀計算機工程博士學位,研究領域為處理器體系結(jié)構(gòu),特別是針對領域特定的體系結(jié)構(gòu)。
CONTENTS
目 錄
譯者序
前言
第1章 簡介 1
1.1 機器學習的曙光 1
1.1.1 Jeopardy!中的IBM Watson
挑戰(zhàn) 1
1.1.2 ImageNet挑戰(zhàn) 2
1.1.3 谷歌AlphaGo挑戰(zhàn)職業(yè)
圍棋選手 2
1.2 機器學習及其應用 3
1.2.1 定義 3
1.2.2 應用 3
1.3 學習及其性能指標 4
1.3.1 學習前的準備 5
1.3.2 學習方法 7
1.3.3 性能指標和驗證 8
1.4 例子 11
1.4.1 工業(yè)4.0 11
1.4.2 交易(區(qū)塊鏈) 12
1.5 機器學習的總結(jié) 15
1.5.1 與人工智能的區(qū)別 15
1.5.2 炒作周期 15
第2章 傳統(tǒng)的微架構(gòu) 16
2.1 微處理器 16
2.1.1 處理器核心的微架構(gòu) 16
2.1.2 微處理器的編程模型 17
2.1.3 微處理器的復雜性 18
2.1.4 超標量處理器的優(yōu)點和
缺點 20
2.1.5 寄存器文件的規(guī)模 20
2.1.6 分支預測及其懲罰 20
2.2 多核處理器 21
2.2.1 眾核的概念 21
2.2.2 編程模型 21
2.3 數(shù)字信號處理器 22
2.3.1 DSP的概念 22
2.3.2 DSP微架構(gòu) 23
2.4 圖形處理單元 24
2.4.1 GPU的概念 24
2.4.2 GPU微架構(gòu) 24
2.4.3 GPU上的編程模型 26
2.4.4 將GPU應用于計算系統(tǒng) 26
2.5 現(xiàn)場可編程門陣列 27
2.5.1 FPGA的概念 27
2.5.2 FPGA微架構(gòu) 27
2.5.3 FPGA設計流程 28
2.5.4 將FGPA應用于計算系統(tǒng) 29
2.6 特定領域架構(gòu)的前景 30
2.6.1 過去的計算機行業(yè) 30
2.6.2 機器學習硬件的歷史 31
2.6.3 重新審視機器學習硬件 32
2.7 執(zhí)行性能的衡量指標 34
2.7.1 延遲和吞吐量 34
2.7.2 每秒的操作數(shù) 35
2.7.3 能耗和功耗 36
2.7.4 能效 37
2.7.5 利用情況 39
2.7.6 數(shù)據(jù)重用 40
2.7.7 面積 41
2.7.8 成本 41
第3章 機器學習及其實現(xiàn) 43
3.1 神經(jīng)元及其網(wǎng)絡 43
3.2 神經(jīng)形態(tài)計算 45
3.2.1 脈沖時序依賴可塑性和
學習 45
3.2.2 神經(jīng)形態(tài)計算硬件 46
3.2.3 地址-事件表示 48
3.3 神經(jīng)網(wǎng)絡 49
3.3.1 神經(jīng)網(wǎng)絡模型 50
3.3.2 以前和現(xiàn)在的神經(jīng)網(wǎng)絡 52
3.3.3 神經(jīng)網(wǎng)絡硬件 53
3.4 用于模擬實現(xiàn)的內(nèi)存單元 57
第4章 應用、ASIC和特定領域架構(gòu) 58
4.1 應用 58
4.1.1 應用的概念 58
4.2 應用的特征 59
4.2.1 局部性 59
4.2.2 死鎖 60
4.2.3 依賴性 62
4.2.4 時間和空間操作 64
4.3 特定應用的集成電路 65
4.3.1 設計約束 65
4.3.2 模塊化結(jié)構(gòu)和大規(guī)模生產(chǎn) 69
4.3.3 牧村波動 70
4.3.4 設計流程 71
4.4 特定領域架構(gòu) 71
4.4.1 特定領域架構(gòu)簡介 71
4.4.2 特定領域語言 72
4.5 機器學習硬件 73
4.6 深度學習上的推理分析和訓練
分析 74
4.6.1 深度學習上的推理分析 74
4.6.2 深度學習上的訓練分析 76
第5章 機器學習模型開發(fā) 79
5.1 開發(fā)過程 79
5.1.1 開發(fā)周期 79
5.1.2 交叉驗證 80
5.1.3 軟件棧 81
5.2 編譯器 82
5.2.1 ONNX 82
5.2.2 NNVM 83
5.2.3 TensorFlow XLA 83
5.3 代碼優(yōu)化 83
5.3.1 提取數(shù)據(jù)級并行 83
5.3.2 內(nèi)存訪問優(yōu)化 84
5.4 Python腳本語言和虛擬機 85
5.4.1 Python和優(yōu)化 85
5.4.2 虛擬機 86
5.5 計算統(tǒng)一設備架構(gòu) 87
第6章 性能提升方法 89
6.1 模型壓縮 89
6.1.1 剪枝 89
6.1.2 dropout 93
6.1.3 dropconnect 94
6.1.4 蒸餾 94
6.1.5 主成分分析 96
6.1.6 權重共享 97
6.2 數(shù)值壓縮 99
6.2.1 量化和數(shù)值精度 100
6.2.2 對內(nèi)存占用和推理準確性
的影響 103
6.2.3 切邊和剪裁 109
6.3 編碼 110
6.3.1 游程編碼 110
6.3.2 霍夫曼編碼 111
6.3.3 壓縮的效果 113
6.4 零值跳過 116
6.4.1 零值跳過的概念 116
6.4.2 CSR和CSC的稀疏表示 116
6.4.3 零值跳過的用例 119
6.5 近似 121
6.5.1 近似的概念 121
6.5.2 激活函數(shù)近似 121
6.5.3 乘法器的近似 123
6.6 優(yōu)化 125
6.6.1 模型優(yōu)化 125
6.6.2 數(shù)據(jù)流優(yōu)化 126
6.7 性能提升方法的總結(jié) 128
第7章 硬件實現(xiàn)的案例研究 130
7.1 神經(jīng)形態(tài)計算 130
7.1.1 模擬邏輯電路 130
7.1.2 數(shù)字邏輯電路 131
7.2 深度神經(jīng)網(wǎng)絡 135
7.2.1 模擬邏輯電路 135
7.2.2 DSP 137
7.2.3 FPGA 139
7.2.4 ASIC 145
7.3 量子計算 175
7.4 研究案例的總結(jié) 175
7.4.1 神經(jīng)形態(tài)計算的案例
研究 181
7.4.2 深度神經(jīng)網(wǎng)絡的案例
研究 181
7.4.3 神經(jīng)形態(tài)計算和深度神經(jīng)
網(wǎng)絡硬件之間的比較 182
第8章 硬件實現(xiàn)的關鍵 183
8.1 市場增長預測 183
8.1.1 IoT市場 183
8.1.2 機器人市場 184
8.1.3 大數(shù)據(jù)和機器學習市場 184
8.1.4 藥物研發(fā)中的人工智能
市場 185
8.1.5 FPGA市場 185
8.1.6 深度學習芯片市場 185
8.2 設計和成本之間的權衡 186
8.3 硬件實現(xiàn)策略 188
8.3.1 策略規(guī)劃的要求 188
8.3.2 基本策略 191
8.3.3 替代因子 193
8.4 硬件設計要求概述 193
第9章 結(jié)論 194
附錄A 深度學習基礎 195
A.1 等式模型 195
A.1.1 前饋神經(jīng)網(wǎng)絡模型 196
A.1.2 激活函數(shù) 196
A.1.3 輸出層 197
A.1.4 學習和反向傳播 197
A.1.5 參數(shù)初始化 201
A.2 用于深度學習的矩陣操作 201
A.2.1 矩陣表示及其布局 202
A.2.2 用于學習的矩陣操作
序列 203
A.2.3 學習優(yōu)化 203
A.2.4 偏置-方差問題 203
附錄B 深度學習硬件建模 205
B.1 深度學習硬件的概念 205
B.1.1 參數(shù)空間與傳播之間的
關系 205
B.1.2 基本的深度學習硬件 206
B.2 深度學習硬件上的數(shù)據(jù)流 206
B.3 機器學習硬件架構(gòu) 207
附錄C 高級神經(jīng)網(wǎng)絡模型 208
C.1 CNN變體 208
C.1.1 卷積架構(gòu) 208
C.1.2 卷積的后向傳播 210
C.1.3 卷積的變體 213
C.1.4 深度卷積對抗生成
網(wǎng)絡 215
C.2 RNN變體 215
C.2.1 RNN架構(gòu) 215
C.2.2 LSTM和GRU單元 216
C.2.3 公路網(wǎng)絡 218
C.3 自編碼器變體 218
C.3.1 堆式去噪自編碼器 218
C.3.2 梯形網(wǎng)絡 219
C.3.3 變分自編碼器 220
C.4 殘差網(wǎng)絡 221
C.4.1 殘差網(wǎng)絡的概念 221
C.4.2 殘差網(wǎng)絡效應 221
C.5 圖神經(jīng)網(wǎng)絡 222
C.5.1 圖神經(jīng)網(wǎng)絡的概念 222
附錄D 國家研究、趨勢和投資 224
D.1 中國 224
D.1.1 下一代人工智能發(fā)展
計劃 224
D.2 美國 225
D.2.1 SyNAPSE計劃 225
D.2.2 UPSIDE計劃 225
D.2.3 MICrONS計劃 225
D.3 歐洲 225
D.4 日本 226
D.4.1 內(nèi)政及通信省 226
D.4.2 文部科學省 226
D.4.3 日本經(jīng)濟貿(mào)易產(chǎn)業(yè)省 226
D.4.4 內(nèi)務省 227
附錄E 機器學習對社會的影響 228
E.1 產(chǎn)業(yè) 228
E.1.1 過去的產(chǎn)業(yè) 228
E.1.2 下一個產(chǎn)業(yè) 230
E.1.3 開源的軟件和硬件 230
E.1.4 社會企業(yè)和共享經(jīng)濟 231
E.2 機器學習與我們 231
E.2.1 機器學習可替代的領域 231
E.2.2 產(chǎn)業(yè)整合 232
E.2.3 一個簡化的世界 232
E.3 社會與個人 233
E.3.1 將編程引入教育 233
E.3.2 價值改變 233
E.3.3 社會支持 235
E.3.4 犯罪 235
E.4 國家 236
E.4.1 警察和檢察官 236
E.4.2 行政、立法和司法 236
E.4.3 軍事 236
參考文獻 237