文章轉載于: Tengine開發者社區
作者:小O妹
算子自動優化的發展趨勢
隨著AI技術的快速發展,深度學習在各個領域得到了廣泛應用。深度學習模型能否成功在終端落地應用,滿足產品需求,一個關鍵的指標就是神經網絡模型的推理性能。于是,一大波算法工程師為了算法的部署轉崗算子優化工程師。然而,優化代碼并不是一件簡單的事,它要求工程師既要精通計算機體系架構,又要熟悉算法的計算流程,于是,稍微有經驗的深度學習推理優化工程師都成了各家公司爭搶的“香餑餑”。人才少,需求多,算子優化自動化是未來的大趨勢。
AutoKernel是什么?
最近,一個致力于降低優化門檻,提升優化開發效率的算子自動優化工具AutoKernel開源了。
AutoKernel是一個高性能算子自動優化工具,可以自動優化調度策略、生成底層優化代碼,大幅減少各硬件芯片算子開發成本,提升算子優化效率,讓工程師更快實現深度學習算法在各硬件芯片上的高性能部署。
AutoKernel的定位
為了方便大家進一步理解AutoKernel,我們需要先了解一下深度學習推理計算平臺的層級。
深度學習的推理計算平臺可以分為以下幾個層級:
1、最上層對接各個深度學習訓練框架訓練出來的算法模型(Tensorflow, Caffe, Pytorch, Mxnet等);
2、 Hign-level IR是計算圖(Computation Graph)層級。神經網絡可以理解為計算圖(graph),一個計算圖由多個算子(opterator)節點組成,這些節點可以是卷積算子(Convolution), 池化算子(Pooling), 全連接算子(Fc)等。這個層級可以進行一些圖層級的優化,算子融合,子圖切分的操作等;
3、接下來就是算子(Operator/Kernel)層級。這個層級需要支持每個硬件后端的每個算子實現。目前的高性能算子計算庫主要是由資深HPC工程師(高性能計算優化工程師)進行手工開發。AutoKernel就是算子層級的一個自動優化工具,自動生成適應不同后端的算子優化代碼;
4、最后是各硬件后端:GPU, ARM CPU, X86 CPU, NPU等。
AutoKernel目前屬于算子層級的自動優化工具。
AutoKernel如何實現部署優化?
部署優化之前,我們先了解一下AutoKernel的三大特性:
·低門檻: 無需底層優化匯編的知識門檻
·簡單易用: 提供docker環境,無需安裝環境,plugin一鍵集成到推理框架
·高效率: 無需手寫優化匯編,一鍵生成優化代碼,一鍵部署
作為算子層級的一個自動優化工具,AutoKernel支持將自動優化的算子代碼集成進部署推理框架,主要流程分為兩步:
1. 生成:編寫算法描述和調度策略,生成相應后端的優化算子代碼;
2. 部署:將生成的優化算子代碼通過插件plugin的形式集成進推理框架Tengine。
AutoKernel的算子生成模塊(Op Generator)使用了業界廣泛使用的自動代碼生成項目Halide。Halide是一個DSL(domain specific language) 編程語言,它將算法和硬件后端分離。本模塊輸入Halide語言的算法描述和優化調度策略,指定硬件后端,就可以自動生成優化代碼。為了減少開發者配置環境的遇到問題,AutoKernel提供了docker鏡像,docker里面已經安裝好Halide, 并且配置好Halide的Python的API,方便開發者使用。
AutoKernel的部署模塊Autokernel Plugin是一個相對獨立的插件,只依賴于Tengine的算子頭文件,不依賴于Tengine庫。它實現了將AutoKernel Generator生成優化的算子代碼,以Plugin的形式集成進Tengine推理框架中,實現自動優化算子的一鍵部署。整個過程不需要重新編譯Tengine庫,只需要獨立編譯Plugin的動態庫,在運行時加載Autokernel Plugin的庫,就能調用自動生成的算子實現。下面的圖展示了使用AutoKernel前后的變化,只需要在運行時添加一行代碼,加載autokernel plugin的動態庫:
AutoKernel還有一個模塊叫AutoSearch,該模塊通過強化學習/機器學習/遺傳算法搜索出相應后端的最優算子的調度策略參數。該模塊目前仍在開發中。
AutoKernel使用教程
下圖是展示了在Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz的電腦上的優化效果,無需手工擼代碼,無需編寫繁雜冗長的底層匯編代碼,只需十幾行簡潔的調度代碼, 就能性能優化200+倍~
推薦閱讀
- YOLO之外的另一選擇,手機端97FPS的Anchor-Free目標檢測模型NanoDet現已開源~
- AI編譯優化--業務實踐
更多Tengine相關內容請關注Tengine-邊緣AI推理框架專欄。
審核編輯:符乾江
-
人工智能
+關注
關注
1791文章
46859瀏覽量
237582 -
AIoT
+關注
關注
8文章
1389瀏覽量
30574
發布評論請先 登錄
相關推薦
評論