隨著大模型的發(fā)展與應(yīng)用,深度學習編譯器的內(nèi)涵和外延逐步擴展。與傳統(tǒng)編譯器相比,深度學習編譯器增加了特定于人工智能模型實現(xiàn)的設(shè)計與優(yōu)化。本書共12章。第1章從深度學習的起源、發(fā)展與爆發(fā)出發(fā),引出深度學習模型的基礎(chǔ)概念、深度學習應(yīng)用的開發(fā)流程和深度學習框架。第2章介紹深度學習運算特征、深度學習硬件平臺和深度學習編譯技術(shù),通過分析典型深度學習編譯器的架構(gòu),給出深度學習編譯器的一般架構(gòu)。第3章介紹面向深度學習應(yīng)用開發(fā)的編程模型和編程接口。第4章從計算圖的構(gòu)成、分類、轉(zhuǎn)換和分析4個角度,介紹深度學習編譯器前端的工作流程。第5章從中間表示的概念、分類和設(shè)計3個角度,分析深度學習編譯器中間表示的設(shè)計方法和重要作用。第6~12章介紹深度學習編譯優(yōu)化,包括自動微分、計算圖優(yōu)化、內(nèi)存分配與優(yōu)化、算子選擇與生成、代碼生成與優(yōu)化、自動并行及模型推理等。
本書可作為計算機科學與技術(shù)專業(yè)、軟件工程專業(yè)的教學參考書,也可供人工智能大模型性能優(yōu)化人員參考。
面向深度學習應(yīng)用領(lǐng)域的深度學習編譯器是充分調(diào)度算力、發(fā)揮硬件潛力的樞
紐,是解決深度學習大模型在硬件平臺上訓練和部署任務(wù)的關(guān)鍵系統(tǒng)軟件
人工智能是引領(lǐng)未來的戰(zhàn)略性技術(shù),是新一輪科技革命和產(chǎn)業(yè)變革的核心驅(qū)動力,同時也是發(fā)展新質(zhì)生產(chǎn)力的主要陣地。然而,人工智能大模型的參數(shù)規(guī)模越來越大,大模型的訓練和推理過程消耗的計算資源也越來越多。為了高效地完成大模型訓練和推理的計算任務(wù),人們不斷研發(fā)性能更高、結(jié)構(gòu)更復雜的計算加速器件,對深度學習編譯器的需求也愈加迫切。面向深度學習應(yīng)用領(lǐng)域的深度學習編譯器是充分調(diào)度算力、發(fā)揮硬件潛力的樞紐,是解決深度學習大模型在硬件平臺上訓練和部署任務(wù)的關(guān)鍵系統(tǒng)軟件。
對初學深度學習編譯器優(yōu)化的讀者來說,編者建議按章節(jié)順序仔細閱讀,循序漸進地理解深度學習編譯器設(shè)計的思路。而對具有一定深度學習應(yīng)用優(yōu)化基礎(chǔ)的讀者,可按需求選擇性閱讀。
本書由先進編譯實驗室科研人員,在長期國產(chǎn)編譯器開發(fā)及大量編譯優(yōu)化技術(shù)實踐的基礎(chǔ)上完成。先進編譯實驗室長期致力于編譯優(yōu)化、程序優(yōu)化等工作,先后承研國家重大專項、核高基專項、973計劃、863計劃、自然科學基金等相關(guān)課題,在國產(chǎn)編譯器研發(fā)、編譯系統(tǒng)優(yōu)化、基礎(chǔ)數(shù)學庫、圖形圖像庫、算子優(yōu)化庫、二進制翻譯與移植等相關(guān)領(lǐng)域已經(jīng)形成若干領(lǐng)先成果,曾獲國家科學技術(shù)進步獎一等獎、省部級科學技術(shù)進步獎一等獎等獎項。
深度學習編譯是一個博大精深且正在快速發(fā)展的領(lǐng)域,許多深度學習編譯優(yōu)化技術(shù)是實踐中不斷嘗試與積淀的。本書的寫作初衷旨在分享編者在深度學習編譯領(lǐng)域的學習心得,雖然編者已盡全力確認書中的每個細節(jié),但限于編者水平,書中難免存在缺點和不足之處,甚至可能存在錯誤,殷切希望各位讀者能夠批評、指正,提出寶貴的意見,以便再版修正。
2024年11月先進編譯實驗室
高偉 先進編譯實驗室成員,博士,主要研究領(lǐng)域為高性能計算和先進編譯技術(shù)。
韓林 先進編譯實驗室成員,教授,博士生導師,主要研究領(lǐng)域為高性能計算和先進編譯技術(shù)。
李嘉楠 先進編譯實驗室成員,博士研究生,主要研究領(lǐng)域為高性能計算和先進編譯技術(shù)。
第1章深度學習簡介
1.1深度學習的起源、發(fā)展與爆發(fā)
1.1.1深度學習的起源
1.1.2深度學習的發(fā)展
1.1.3深度學習的爆發(fā)
1.2深度學習模型的基礎(chǔ)概念
1.2.1深度學習模型的組成
1.2.2深度學習模型的運行
1.2.3深度學習模型的分類
1.3深度學習應(yīng)用的開發(fā)流程
1.3.1通用開發(fā)流程
1.3.2特定領(lǐng)域典型應(yīng)用的開發(fā)流程
1.4深度學習框架
1.4.1發(fā)展歷程
1.4.2典型框架
1.4.3核心組件
第2章深度學習編譯簡介
2.1深度學習運算特征
2.1.1深度學習中的矩陣運算
2.1.2大規(guī)模矩陣運算面臨的挑戰(zhàn)
2.2深度學習硬件平臺
2.2.1深度學習硬件技術(shù)架構(gòu)
2.2.2深度學習硬件應(yīng)用挑戰(zhàn)
2.3深度學習編譯技術(shù)
2.3.1典型深度學習編譯器
2.3.2深度學習編譯器的結(jié)構(gòu)
第3章編程模型與編程接口
3.1編程模型
3.1.1任務(wù)劃分
3.1.2數(shù)據(jù)分布
3.1.3通信和同步
3.1.4任務(wù)映射
3.1.5兼容性及發(fā)展趨勢
3.2編程接口
3.2.1基于C/C 的接口
3.2.2基于Python的接口
3.2.3Python調(diào)用C/C 的綁定技術(shù)
第4章前端
4.1計算圖構(gòu)成
4.1.1數(shù)據(jù)節(jié)點
4.1.2計算節(jié)點
4.1.3控制節(jié)點
4.1.4依賴邊
4.2計算圖分類
4.2.1靜態(tài)計算圖
4.2.2動態(tài)計算圖
4.3計算圖轉(zhuǎn)換
4.3.1動靜結(jié)合技術(shù)
4.3.2動靜統(tǒng)一技術(shù)
4.4計算圖分析
4.4.1類型系統(tǒng)
4.4.2類型推導
4.4.3類型轉(zhuǎn)換
4.4.4形狀推導
第5章中間表示
5.1中間表示的概念
5.2中間表示的分類
5.2.1線性中間表示
5.2.2圖中間表示
5.2.3混合中間表示
5.3中間表示的設(shè)計
5.3.1單層中間表示設(shè)計
5.3.2兩層中間表示設(shè)計
5.3.3多層中間表示設(shè)計
第6章自動微分
6.1自動微分的概念
6.2自動微分的模式
6.2.1前向模式
6.2.2反向模式
6.3自動微分的實現(xiàn)
6.3.1基本表達式法
6.3.2操作符重載法
6.3.3源碼轉(zhuǎn)換法
第7章計算圖優(yōu)化
7.1算子融合
7.1.1融合規(guī)則
7.1.2融合策略
7.1.3內(nèi)存融合
7.1.4并行融合
7.1.5動態(tài)融合
7.2混合精度改寫
7.3數(shù)據(jù)布局轉(zhuǎn)換
7.4其他圖優(yōu)化方法
7.4.1常量折疊
7.4.2公共子表達式消除
7.4.3代數(shù)化簡
第8章內(nèi)存分配與優(yōu)化
8.1內(nèi)存分配
8.2內(nèi)存復用
8.2.1原地置換
8.2.2內(nèi)存共享
8.3張量遷移
8.3.1遷移機制
8.3.2遷移優(yōu)化
8.4重計算
8.4.1靜態(tài)圖重計算
8.4.2動態(tài)圖重計算
8.4.3快速注意力機制
第9章算子選擇與生成
9.1算子選擇
9.2算子生成
9.2.1基于機器學習的算子生成
9.2.2基于多面體變換的算子生成
第10章代碼生成與優(yōu)化
10.1過程間優(yōu)化
10.2循環(huán)優(yōu)化
10.2.1循環(huán)展開
10.2.2循環(huán)合并
10.2.3循環(huán)分布
10.2.4循環(huán)剝離
10.2.5循環(huán)分段
10.2.6循環(huán)分塊
10.2.7循環(huán)交換
10.3語句級優(yōu)化
10.3.1冗余語句刪除
10.3.2公共子表達式消除
10.4指令級優(yōu)化
10.4.1指令流水
10.4.2超標量
10.4.3超長指令字
10.5自動并行化
10.5.1自動向量化
10.5.2自動張量化
10.5.3自動OpenMP并行化
10.6訪存優(yōu)化
10.6.1寄存器優(yōu)化
10.6.2內(nèi)存優(yōu)化
第11章自動并行
11.1并行劃分
11.1.1數(shù)據(jù)并行劃分
11.1.2模型并行劃分
11.1.3序列并行劃分
11.1.4混合并行劃分
11.2并行策略
11.2.1搜索空間
11.2.2代價模型
11.2.3搜索算法
11.3通信優(yōu)化
11.3.1通信優(yōu)化基礎(chǔ)
11.3.2通信優(yōu)化策略
第12章模型推理
12.1模型部署
12.1.1部署工具
12.1.2部署方式
12.2模型壓縮
12.2.1量化
12.2.2剪枝
12.2.3知識蒸餾
12.3推理加速
12.3.1圖優(yōu)化
12.3.2算法優(yōu)化
12.3.3運行時優(yōu)化
參考文獻