中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

廊坊企業(yè)建站模板流量推廣app

廊坊企業(yè)建站模板,流量推廣app,門戶網(wǎng)站 需求,游網(wǎng)站建設(shè)方案內(nèi)容論文來源:Li M , Liu Y , Liu X ,et al.The Deep Learning Compiler: A Comprehensive Survey[J]. 2020.DOI:10.1109/TPDS.2020.3030548. 這是一篇關(guān)于深度學(xué)習(xí)編譯器的綜述類文章。 什么是深度學(xué)習(xí)編譯器 深度學(xué)習(xí)(Deep Learning)編譯器將…

論文來源:Li M , Liu Y , Liu X ,et al.The Deep Learning Compiler: A Comprehensive Survey[J]. 2020.DOI:10.1109/TPDS.2020.3030548.

這是一篇關(guān)于深度學(xué)習(xí)編譯器的綜述類文章。

什么是深度學(xué)習(xí)編譯器

深度學(xué)習(xí)(Deep Learning)編譯器將深度學(xué)習(xí)框架描述的模型在各種硬件平臺上生成有效的代碼實現(xiàn),其完成的模型定義到特定代碼實現(xiàn)的轉(zhuǎn)換將針對模型規(guī)范和硬件體系結(jié)構(gòu)高度優(yōu)化。具體來說,它們結(jié)合了面向深度學(xué)習(xí)的優(yōu)化,例如層融合和操作符融合,實現(xiàn)高效的代碼生成。

此外,現(xiàn)有的編譯器還采用了來自通用編譯器(例如LLVM)的成熟工具鏈,對各種硬件體系結(jié)構(gòu)提供了更好的可移植性。

簡而言之,深度學(xué)習(xí)編譯器通過對深度學(xué)習(xí)模型和計算圖的優(yōu)化,以及對硬件資源的充分利用,提高了深度學(xué)習(xí)模型的性能和效率。這使得深度學(xué)習(xí)模型在邊緣設(shè)備和嵌入式系統(tǒng)上能夠更好地運行。

深度學(xué)習(xí)編譯器的基本架構(gòu)

與傳統(tǒng)編譯器類似,深度學(xué)習(xí)編譯器也采用分層設(shè)計,其通用設(shè)計架構(gòu)主要包括編譯器前端和編譯器后端,其中IR(中間語言)分布在前端和后端,它是程序的抽象,用于程序優(yōu)化。

深度學(xué)習(xí)模型在深度學(xué)習(xí)編譯器中被轉(zhuǎn)換為多級IR,其中高階IR駐留在前端,低階IR駐留在后端?;诟唠AIR,編譯器前端負(fù)責(zé)與硬件無關(guān)的轉(zhuǎn)換和優(yōu)化?;诘碗AIR,編譯器后端負(fù)責(zé)特定于硬件的優(yōu)化、代碼生成和編譯。

高階IR,也稱為graph IR,表示計算和控制流,與硬件無關(guān)。高階IR的設(shè)計挑戰(zhàn)是計算和控制流的抽象能力,能夠捕獲和表達不同的DL模型。高階IR的目標(biāo)是建立控制流和op(算子)與數(shù)據(jù)之間的依賴關(guān)系,以及為圖級優(yōu)化提供接口。它還包含用于編譯的豐富語義信息,并為定制算子提供可擴展性。

低階IR是為特定于硬件的優(yōu)化和針對不同硬件目標(biāo)的代碼生成而設(shè)計的。因此,低階IR應(yīng)該足夠細(xì)粒度,以反映硬件特征并表示特定于硬件的優(yōu)化。

前端將現(xiàn)有的Deep Learning框架中的模型作為輸入,然后將該模型轉(zhuǎn)換為計算圖表示(例如,graph IR)。前端需要實現(xiàn)多種格式轉(zhuǎn)換,以支持不同框架下的多種格式。計算圖優(yōu)化結(jié)合了通用編譯器的優(yōu)化技術(shù)和Deep Learning特定優(yōu)化技術(shù),減少了graph IR的冗余,提高了圖graph IR的效率。這樣的優(yōu)化可以分為:

  1. node節(jié)點級(例如,nop消除和零維張量消除)

  2. block塊級(代數(shù)簡化、算子融合、op下降)

  3. 數(shù)據(jù)流層(例如CSE、DCE、靜態(tài)內(nèi)存規(guī)劃和布局轉(zhuǎn)換)。

前端完成后,生成優(yōu)化的計算圖并傳遞給后端,后端將高階IR轉(zhuǎn)換為低階IR并執(zhí)行特定于硬件的優(yōu)化。一方面,它可以直接將高階IR轉(zhuǎn)換為第三方工具鏈,如LLVM IR,以利用現(xiàn)有的基礎(chǔ)設(shè)施進行通用優(yōu)化和代碼生成。另一方面,它可以利用DL模型和硬件特性的先驗知識,通過定制的編譯通道,實現(xiàn)更高效的代碼生成。通常應(yīng)用的特定于硬件的優(yōu)化包括硬件內(nèi)在映射、內(nèi)存分配和獲取、內(nèi)存延遲隱藏、并行化以及面向循環(huán)的優(yōu)化。

前端優(yōu)化

在構(gòu)建計算圖之后,前端應(yīng)用圖級優(yōu)化。許多優(yōu)化更容易在圖級識別和執(zhí)行,因為圖提供了計算的全局視圖。這些優(yōu)化只應(yīng)用于計算圖,而不是后端實現(xiàn)。因此,它們是獨立于硬件的,可以應(yīng)用于各種后端目標(biāo)。

前端優(yōu)化通常由passes定義,可以通過遍歷計算圖的節(jié)點并執(zhí)行圖轉(zhuǎn)換來應(yīng)用。前端提供了如下方法:

  1. 從計算圖中捕獲特定的特征;

  2. 重寫圖以進行優(yōu)化。

除了預(yù)定義的passes,開發(fā)人員還可以在前端定義定制的passes。一旦一個Deep Learning模型被導(dǎo)入并轉(zhuǎn)換為一個計算圖,大多數(shù)DL編譯器可以確定每個操作的輸入張量和輸出張量的形狀。

節(jié)點級優(yōu)化

計算圖的節(jié)點足夠粗粒度,可以在單個節(jié)點內(nèi)進行優(yōu)化。節(jié)點級優(yōu)化包括:

  1. 節(jié)點消除(消除不必要的節(jié)點)

  2. 節(jié)點替換(用其他低成本節(jié)點替換節(jié)點)

在通用編譯器中,Nop消除刪除占用少量空間但不指定操作的no-op指令;在DL編譯器中,Nop消除負(fù)責(zé)消除缺少足夠輸入的操作。例如,只有一個輸入張量的和節(jié)點可以被消除,填充寬度為零的填充節(jié)點可以被消除。

塊級優(yōu)化

代數(shù)簡化

代數(shù)簡化優(yōu)化包括:

  1. 代數(shù)識別

  2. 強度約簡,我們可以用更便宜的算子取代更昂貴的算子

  3. 常數(shù)折疊,用它可以用它們的值替換常量表達式。

算子融合

算子融合是DL編譯器不可缺少的優(yōu)化方法。它能夠更好地共享計算,消除中間分配,通過結(jié)合loop nests進一步優(yōu)化,并減少launch和同步開銷。

算子Sinking

算子Sinking這種優(yōu)化將轉(zhuǎn)置等操作置于批處理歸一化、ReLU、sigmoid和channel shuffle等操作之下。

通過算子Sinking這種優(yōu)化,許多相似的操作彼此之間移動得更近,為代數(shù)簡化創(chuàng)造了更多的機會。

數(shù)據(jù)流級優(yōu)化

通用子表達式消除(CSE)

如果表達式E的值之前已經(jīng)計算過,并且E的值在之前的計算之后沒有改變,那么它就是通用子表達式。

在這種情況下,E的值只計算一次,并且可以使用已經(jīng)計算出的E的值來避免在其他地方重新計算。深度學(xué)習(xí)編譯器在整個計算圖中搜索公共子表達式,并用之前的計算結(jié)果替換下面的公共子表達式。

死代碼消除(DCE)

如果一組代碼的計算結(jié)果或副作用沒有被使用,那么它就是死代碼。

DCE優(yōu)化會刪除死代碼。死代碼通常不是由程序員引起的,而是由其他圖優(yōu)化引起的。因此DCE和CSE是在其他圖優(yōu)化之后應(yīng)用的。

靜態(tài)內(nèi)存規(guī)劃

使用靜態(tài)內(nèi)存規(guī)劃優(yōu)化以盡可能重用內(nèi)存緩沖區(qū),通常有兩種方法:

  1. in-place內(nèi)存共享

  2. 標(biāo)準(zhǔn)內(nèi)存共享

in-place內(nèi)存共享使用相同的內(nèi)存作為操作的輸入和輸出,只在計算之前分配一個內(nèi)存副本。標(biāo)準(zhǔn)內(nèi)存共享重用以前操作的內(nèi)存,而不重疊。靜態(tài)內(nèi)存規(guī)劃是離線完成的,這允許應(yīng)用更復(fù)雜的規(guī)劃算法。

布局轉(zhuǎn)變

布局轉(zhuǎn)換試圖找到最佳的數(shù)據(jù)布局來存儲張量到計算圖中,然后將布局轉(zhuǎn)換節(jié)點插入到圖中。

注意,這里不執(zhí)行實際的轉(zhuǎn)換,而是在編譯器后端計算計算圖時執(zhí)行轉(zhuǎn)換。事實上,相同操作在不同的數(shù)據(jù)布局中的性能是不同的,最佳布局在不同的硬件上也是不同的。

后端優(yōu)化

特定于硬件的優(yōu)化

特定于硬件的優(yōu)化也稱為目標(biāo)相關(guān)優(yōu)化,用于獲得針對特定硬件的高性能代碼。應(yīng)用后端優(yōu)化的一種方法是將低層IR轉(zhuǎn)換為LLVM IR,利用LLVM基礎(chǔ)設(shè)施生成優(yōu)化的CPU/GPU代碼。另一種方法是使用DL領(lǐng)域知識設(shè)計定制優(yōu)化,更有效地利用目標(biāo)硬件。

以下有五種在現(xiàn)有DL編譯器中廣泛采用的方法:

硬件固有的映射

硬件內(nèi)在映射可以將一定的一組低層IR指令轉(zhuǎn)換為已經(jīng)在硬件上高度優(yōu)化的內(nèi)核。在TVM中,硬件本征映射采用可擴展張量化方法實現(xiàn),可聲明硬件本征的行為和本征映射的降低規(guī)則。這種方法使編譯器后端能夠?qū)⒂布崿F(xiàn)和高度優(yōu)化的手工微內(nèi)核應(yīng)用到特定的操作模式中,從而獲得顯著的性能提升。

內(nèi)存分配和獲取

內(nèi)存分配是代碼生成中的另一個挑戰(zhàn),特別是對于gpu和定制加速器。例如,GPU主要包含共享內(nèi)存空間(內(nèi)存大小有限,訪問時延較低)和本地內(nèi)存空間(容量大,訪問時延較高)。這樣的內(nèi)存層次結(jié)構(gòu)需要有效的內(nèi)存分配和獲取技術(shù)來改善數(shù)據(jù)局部性。為了實現(xiàn)這一優(yōu)化,TVM引入了內(nèi)存作用域的調(diào)度概念。內(nèi)存作用域調(diào)度原語可以將計算階段標(biāo)記為共享的或線程本地的。對于標(biāo)記為共享的計算階段,TVM生成具有共享內(nèi)存分配和協(xié)同數(shù)據(jù)獲取的代碼,并在適當(dāng)?shù)拇a位置插入內(nèi)存屏障以保證正確性。

內(nèi)存延遲隱藏

通過對執(zhí)行管道重新排序,內(nèi)存延遲隱藏也是在后端使用的一項重要技術(shù)。由于大多數(shù)DL編譯器支持CPU和GPU上的并行化,內(nèi)存延遲隱藏可以自然地通過硬件實現(xiàn)(例如,GPU上的扭曲上下文切換)。但是對于具有解耦訪問庫(DAE)體系結(jié)構(gòu)的TPU類加速器,后端需要執(zhí)行調(diào)度和細(xì)粒度同步以獲得正確和高效的代碼。為了獲得更好的性能和減輕編程負(fù)擔(dān),TVM引入了虛擬線程調(diào)度原語,允許用戶在虛擬多線程架構(gòu)上指定數(shù)據(jù)并行度。然后,TVM通過插入必要的內(nèi)存屏障,并將來自這些線程的操作穿插到單個指令流中,從而降低了這些實際上并行的線程,這形成了每個線程更好的執(zhí)行管道,以隱藏內(nèi)存訪問延遲。

面向循環(huán)優(yōu)化

面向循環(huán)的優(yōu)化也應(yīng)用于后端,為目標(biāo)硬件生成高效的代碼。由于Halide和LLVM已經(jīng)集成了這樣的優(yōu)化技術(shù),一些DL編譯器在后端利用了Halide和LLVM。面向循環(huán)優(yōu)化中應(yīng)用的關(guān)鍵技術(shù)包括循環(huán)融合、滑動窗口、平鋪、循環(huán)重排序和循環(huán)展開。

并行化

由于現(xiàn)代處理器通常支持多線程和SIMD并行性,編譯器后端需要利用并行性來最大化硬件利用率,以實現(xiàn)高性能。

Halide使用一個叫做parallel的調(diào)度原語來指定線程級別并行化的循環(huán)的并行化維度,并通過將標(biāo)記為parallel的循環(huán)維度與塊和線程的注釋進行映射來支持GPU并行化。它將一個大小為n的循環(huán)替換為一個寬為n的向量語句,該向量語句可以通過硬件內(nèi)在映射映射到特定于硬件的SIMD操作碼。

Stripe發(fā)展了一種多面體模型的變體,稱為嵌套多面體模型,該模型引入了并行多面體塊作為迭代的基本執(zhí)行元素。在此擴展之后,一個嵌套的多面體模型可以檢測平鋪和跨步級別之間的層次并行性。

自動調(diào)優(yōu)

由于在特定于硬件的優(yōu)化中參數(shù)調(diào)優(yōu)有巨大的搜索空間,因此有必要利用自動調(diào)優(yōu)來確定最佳參數(shù)配置。在A Comprehensive Survey[4]這篇論文中研究的DL編譯器中,TVM、TC和XLA支持自動調(diào)優(yōu)。通常,自動調(diào)優(yōu)實現(xiàn)包括Parameterization(參數(shù)化)、代價模型、搜索技術(shù)和加速四個關(guān)鍵部分。

Parameterization(參數(shù)化)

數(shù)據(jù)參數(shù)描述數(shù)據(jù)的規(guī)格,如輸入的形狀。目標(biāo)參數(shù)描述在優(yōu)化調(diào)度和代碼生成期間要考慮的特定于硬件的特征和約束。例如,對于GPU目標(biāo),需要指定共享內(nèi)存和寄存器大小等硬件參數(shù)。

優(yōu)化選項包括優(yōu)化調(diào)度和相應(yīng)的參數(shù),如面向循環(huán)的優(yōu)化和瓷磚大小。在TVM中,既考慮了預(yù)定義調(diào)度,也考慮了自定義調(diào)度,還考慮了參數(shù)。

代價模型

自動調(diào)優(yōu)中不同代價模型的比較如下:

  1. 黑箱模型:該模型只考慮最終的執(zhí)行時間,而不考慮編譯任務(wù)的特征。建立黑盒模型很容易,但是如果沒有任務(wù)特性的指導(dǎo),很容易導(dǎo)致更高的開銷和更少的最優(yōu)解。TC采用了這種模式。

  2. 基于ML的代價模型:基于ml的成本模型是一種使用機器學(xué)習(xí)方法預(yù)測性能的統(tǒng)計方法。它使模型能夠隨著新配置的探索而更新,這有助于實現(xiàn)更高的預(yù)測精度。TVM和XLA采用這種模型,分別是梯度樹提升模型(GBDT)和前饋神經(jīng)網(wǎng)絡(luò)。

  3. 預(yù)定義代價模型:基于預(yù)定義代價模型的方法,期望根據(jù)編譯任務(wù)的特點建立一個完美的模型,能夠評估任務(wù)的整體性能。與基于ML的模型相比,預(yù)定義模型在應(yīng)用時產(chǎn)生的計算開銷更少,但需要在每個新的DL模型和硬件上重新構(gòu)建模型,需要大量的工程工作。

http://www.risenshineclean.com/news/2798.html

相關(guān)文章:

  • 工業(yè)皮帶怎么做免費的網(wǎng)站企業(yè)官網(wǎng)怎么做
  • 洛陽做網(wǎng)站的看廣告收益的正規(guī)平臺
  • wordpress金融網(wǎng)站模板廣告推廣費用
  • 小程序推廣任務(wù)入口徐州seo企業(yè)
  • 建自己的網(wǎng)站用多少錢關(guān)鍵詞如何快速排名
  • 貴陽公司網(wǎng)頁網(wǎng)站建設(shè)seo工資
  • 網(wǎng)站資質(zhì)優(yōu)化百度空間登錄入口
  • b2b電子商務(wù)網(wǎng)站建設(shè)seo資料站
  • 漳州軟件開發(fā)公司寧波網(wǎng)站建設(shè)網(wǎng)站排名優(yōu)化
  • 畢業(yè)論文網(wǎng)站建設(shè)報告seo顧問賺錢嗎
  • 做爰視頻網(wǎng)站在線看合肥關(guān)鍵詞排名
  • 包頭人臉檢測系統(tǒng)廣州seo優(yōu)化排名公司
  • 動易網(wǎng)站后臺域名在線查詢
  • wordpress掛下載鏈接正規(guī)seo排名外包
  • 廣東省建設(shè)安全監(jiān)督站的網(wǎng)站識圖
  • 關(guān)于政府網(wǎng)站集約化建設(shè)的報告鎮(zhèn)江seo優(yōu)化
  • 界面做的比較好的網(wǎng)站推廣普通話宣傳語手抄報
  • 網(wǎng)站建設(shè)工資高嗎成都企業(yè)網(wǎng)站seo技術(shù)
  • 企業(yè)網(wǎng)站模板網(wǎng)頁模板百度網(wǎng)盤怎么用
  • 怎么用vs2010做網(wǎng)站以網(wǎng)紅引流促業(yè)態(tài)提升
  • 寧夏住房和城鄉(xiāng)建設(shè)廳門戶網(wǎng)站滄州seo公司
  • 管理培訓(xùn)機構(gòu)企業(yè)專業(yè)搜索引擎優(yōu)化
  • 濰坊做網(wǎng)站聯(lián)系方式seo的方法
  • wordpress get attachment泉州百度推廣排名優(yōu)化
  • 做爰視頻網(wǎng)站在線看拼多多女裝關(guān)鍵詞排名
  • 專門做創(chuàng)意桌椅的網(wǎng)站網(wǎng)站建設(shè)黃頁視頻
  • 一個用vue做的網(wǎng)站軟文范例大全500
  • 手機怎么創(chuàng)建自己的網(wǎng)頁seo優(yōu)化首頁
  • web個人網(wǎng)站設(shè)計方案互聯(lián)網(wǎng)
  • 做網(wǎng)站的系統(tǒng)設(shè)計網(wǎng)絡(luò)營銷團隊