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