【AI編譯器原理】系列來啦!我們要從入門到放棄!
隨著深度學習的應用場景的不斷泛化,深度學習計算任務也需要部署在不同的計算設備和硬件架構(gòu)上;同時,實際部署或訓練場景對性能往往也有著更為激進的要求,例如針對硬件特點定制計算代碼。
這些需求在通用的AI框架中已經(jīng)難已得到滿足。由于深度學習計算任務在現(xiàn)有的AI框架中往往以DSL(Domain Specific Language)的方式進行編程和表達,這本身使得深度學習計算任務的優(yōu)化和執(zhí)行天然符合傳統(tǒng)計算機語言的編譯和優(yōu)化過程。因此,【AI編譯器】深度學習的編譯與優(yōu)化就是將當前的深度學習計算任務通過一層或多層中間表達進行翻譯和優(yōu)化,最終轉(zhuǎn)化成目標硬件上的可執(zhí)行代碼的過程。本系列將圍繞現(xiàn)有【AI編譯器】中的編譯和優(yōu)化工作的內(nèi)容展開介紹。
系列內(nèi)容
AI是最新的電力,大約在一百年前,我們社會的電氣化改變了每個主要行業(yè),從交通運輸行業(yè)到制造業(yè)、醫(yī)療保健、通訊等方面,我認為如今我們見到了AI明顯的令人驚訝的能量,帶來了同樣巨大的轉(zhuǎn)變。顯然,AI的各個分支中,發(fā)展的最為迅速的就是深度學習。因此現(xiàn)在,深度學習是在科技世界中廣受歡迎的一種技巧。
通過《AI框架核心技術(shù)》這個系列內(nèi)容,以及這門課程后面的幾門課程,你將獲取并且掌握的技能:
-
在《AI框架基礎》第一門課程中,您將了解到AI框架的具體作用,可以提供給開發(fā)者一個編寫神經(jīng)網(wǎng)絡模型的庫和提供豐富的API。以及近幾年AI框架快速發(fā)展的歷史和變遷。在這門課程的結(jié)尾,您將了解到不同的編程范式對AI框架的影響和對用戶習慣的影響。
-
《傳統(tǒng)編譯器》會粗略地回顧傳統(tǒng)編譯器中的前端、后端、IR中間表達等主要的概念,并對目前主流的兩大編譯器GCC和LLVM進行簡單的展開,去了解GCC的編譯流程和編譯方式,并回顧LLVM的整體架構(gòu)。
-
《AI 編譯器》是本節(jié)的概覽重點,去了解本章的主要內(nèi)容 AI 編譯器的整體架構(gòu),包括他的發(fā)展階段,目前主要的組成模塊,整體的技術(shù)演進方向等概念性的內(nèi)容,因為近年來AI編譯器發(fā)展迅猛,可以橫向去了解AI編譯器整體技術(shù)。
-
《前端優(yōu)化》前端優(yōu)化作為 AI編譯器 的整體架構(gòu)主要模塊,主要優(yōu)化的對象是計算圖,而計算圖是通過AI框架產(chǎn)生的,值得注意的是并不是所有的AI框架都會生成計算圖,有了計算圖就可以結(jié)合深度學習的原理知識進行圖的優(yōu)化。
-
《后端優(yōu)化》后端優(yōu)化作為AI編譯器跟硬件之間的相連接的模塊,更多的是算子或者Kernel進行優(yōu)化,而優(yōu)化之前需要把計算圖轉(zhuǎn)換稱為調(diào)度樹等IR格式,然后針對每一個算子/Kernel進行循環(huán)優(yōu)化、指令優(yōu)化和內(nèi)存優(yōu)化等技術(shù)。
-
《多面體技術(shù)》多面體不屬于新的技術(shù),反而是傳統(tǒng)編譯器的一種優(yōu)化手段,得益于深度學習中的主要特征(循環(huán)、張量),因此多面體技術(shù)可以發(fā)揮更大的作用,對循環(huán)展開、內(nèi)存映射等優(yōu)化工作。
-
《PyTorch圖模式》會以實際的AI框架 PyTorch 2.0為主線,去把其主打特性 Dynamo 和 AOTAutograd 進行展開,并回顧 PyTorch 對圖模式的嘗試,了解現(xiàn)今最熱門的AI框架如何進行編譯器優(yōu)化的。
希望這個系列能夠給大家、朋友們帶來一些些幫助,也希望自己能夠繼續(xù)堅持完成所有內(nèi)容哈!
然這里不是打廣告,而是希望跟所有關(guān)注開源項目的好朋友一起探討研究,共同促進學習討論,也歡迎各位專家和朋友多拍拍磚,多提點意見。相關(guān)的材料都開源在這里:
https://github.com/chenzomi12/DeepLearningSystem/tree/main/Compiler
具體大綱
1 編譯器基礎
-
課程概述 video
2. 傳統(tǒng)編譯器
-
開源編譯器的發(fā)展 video
-
GCC編譯過程和原理 video
-
LLVM設計架構(gòu) video
-
(上) LLVM IR詳解 video
-
(中) LLVM前端和優(yōu)化層 video
-
(下) LLVM后端代碼生成 video
3. AI 編譯器
4. 前端優(yōu)化
-
內(nèi)容介紹 video
-
計算圖層IR video
-
算子融合策略 video
-
(上) 布局轉(zhuǎn)換原理 video
-
(下) 布局轉(zhuǎn)換算法 video
-
內(nèi)存分配算法 video
-
常量折疊原理 video
-
公共表達式消除 video
-
死代碼消除 video
-
代數(shù)簡化原理 video
5. 后端優(yōu)化
-
AI編譯器后端優(yōu)化介紹 video
-
算子分為計算與調(diào)度 video
-
算子優(yōu)化手工方式 video
-
算子循環(huán)優(yōu)化 video
-
指令和內(nèi)存優(yōu)化 video
-
Auto-Tuning原理 video
6. PyTorch2.0
-
PyTorch2.0 特性串講 video
-
TorchScript 靜態(tài)圖嘗試 video
-
Torch FX 與 LazyTensor 特性 video
-
TorchDynamo 來啦 video
-
AOTAutograd 原理 video
-
Dispatch 機制 video
完結(jié),撒花!
【AI編譯器】深度學習的編譯與優(yōu)化就是將當前的深度學習計算任務通過一層或多層中間表達進行翻譯和優(yōu)化,最終轉(zhuǎn)化成目標硬件上的可執(zhí)行代碼的過程。本系列將圍繞現(xiàn)有【AI編譯器】中的編譯和優(yōu)化工作的內(nèi)容展開介紹。
浙公網(wǎng)安備 33010602011771號