0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

算法優(yōu)化福音:算子自動優(yōu)化工具AutoKernel正式開源啦

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-08 22:28 ? 次閱讀
文章轉載于: Tengine開發(fā)者社區(qū)
作者:小O妹

算子自動優(yōu)化的發(fā)展趨勢
隨著AI技術的快速發(fā)展,深度學習在各個領域得到了廣泛應用。深度學習模型能否成功在終端落地應用,滿足產品需求,一個關鍵的指標就是神經網絡模型的推理性能。于是,一大波算法工程師為了算法的部署轉崗算子優(yōu)化工程師。然而,優(yōu)化代碼并不是一件簡單的事,它要求工程師既要精通計算機體系架構,又要熟悉算法的計算流程,于是,稍微有經驗的深度學習推理優(yōu)化工程師都成了各家公司爭搶的“香餑餑”。人才少,需求多,算子優(yōu)化自動化是未來的大趨勢。
AutoKernel是什么?

最近,一個致力于降低優(yōu)化門檻,提升優(yōu)化開發(fā)效率的算子自動優(yōu)化工具AutoKernel開源了。

AutoKernel是一個高性能算子自動優(yōu)化工具,可以自動優(yōu)化調度策略、生成底層優(yōu)化代碼,大幅減少各硬件芯片算子開發(fā)成本,提升算子優(yōu)化效率,讓工程師更快實現(xiàn)深度學習算法在各硬件芯片上的高性能部署。
AutoKernel的定位
為了方便大家進一步理解AutoKernel,我們需要先了解一下深度學習推理計算平臺的層級。

深度學習的推理計算平臺可以分為以下幾個層級:
1、最上層對接各個深度學習訓練框架訓練出來的算法模型(Tensorflow, Caffe, Pytorch, Mxnet等);
2、 Hign-level IR是計算圖(Computation Graph)層級。神經網絡可以理解為計算圖(graph),一個計算圖由多個算子(opterator)節(jié)點組成,這些節(jié)點可以是卷積算子(Convolution), 池化算子(Pooling), 全連接算子(Fc)等。這個層級可以進行一些圖層級的優(yōu)化,算子融合,子圖切分的操作等;
3、接下來就是算子(Operator/Kernel)層級。這個層級需要支持每個硬件后端的每個算子實現(xiàn)。目前的高性能算子計算庫主要是由資深HPC工程師(高性能計算優(yōu)化工程師)進行手工開發(fā)。AutoKernel就是算子層級的一個自動優(yōu)化工具,自動生成適應不同后端的算子優(yōu)化代碼;
4、最后是各硬件后端:GPU, ARM CPU, X86 CPU, NPU等。
AutoKernel目前屬于算子層級的自動優(yōu)化工具。
AutoKernel如何實現(xiàn)部署優(yōu)化?
部署優(yōu)化之前,我們先了解一下AutoKernel的三大特性:
·低門檻: 無需底層優(yōu)化匯編的知識門檻
·簡單易用: 提供docker環(huán)境,無需安裝環(huán)境,plugin一鍵集成到推理框架
·高效率: 無需手寫優(yōu)化匯編,一鍵生成優(yōu)化代碼,一鍵部署
作為算子層級的一個自動優(yōu)化工具,AutoKernel支持將自動優(yōu)化的算子代碼集成進部署推理框架,主要流程分為兩步:
1. 生成:編寫算法描述和調度策略,生成相應后端的優(yōu)化算子代碼;
2. 部署:將生成的優(yōu)化算子代碼通過插件plugin的形式集成進推理框架Tengine。

AutoKernel的算子生成模塊(Op Generator)使用了業(yè)界廣泛使用的自動代碼生成項目Halide。Halide是一個DSL(domain specific language) 編程語言,它將算法和硬件后端分離。本模塊輸入Halide語言的算法描述和優(yōu)化調度策略,指定硬件后端,就可以自動生成優(yōu)化代碼。為了減少開發(fā)者配置環(huán)境的遇到問題,AutoKernel提供了docker鏡像,docker里面已經安裝好Halide, 并且配置好Halide的Python的API,方便開發(fā)者使用。
AutoKernel的部署模塊Autokernel Plugin是一個相對獨立的插件,只依賴于Tengine的算子頭文件,不依賴于Tengine庫。它實現(xiàn)了將AutoKernel Generator生成優(yōu)化的算子代碼,以Plugin的形式集成進Tengine推理框架中,實現(xiàn)自動優(yōu)化算子的一鍵部署。整個過程不需要重新編譯Tengine庫,只需要獨立編譯Plugin的動態(tài)庫,在運行時加載Autokernel Plugin的庫,就能調用自動生成的算子實現(xiàn)。下面的圖展示了使用AutoKernel前后的變化,只需要在運行時添加一行代碼,加載autokernel plugin的動態(tài)庫:

AutoKernel還有一個模塊叫AutoSearch,該模塊通過強化學習/機器學習/遺傳算法搜索出相應后端的最優(yōu)算子的調度策略參數(shù)。該模塊目前仍在開發(fā)中。
AutoKernel使用教程
下圖是展示了在Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz的電腦上的優(yōu)化效果,無需手工擼代碼,無需編寫繁雜冗長的底層匯編代碼,只需十幾行簡潔的調度代碼, 就能性能優(yōu)化200+倍~

推薦閱讀

更多Tengine相關內容請關注Tengine-邊緣AI推理框架專欄。

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1787

    文章

    46061

    瀏覽量

    235030
  • AIoT
    +關注

    關注

    8

    文章

    1350

    瀏覽量

    30385
收藏 人收藏

    評論

    相關推薦

    優(yōu)化 FPGA HLS 設計

    優(yōu)化 FPGA HLS 設計 用工具用 C 生成 RTL 的代碼基本不可讀。以下是如何在不更改任何 RTL 的情況下提高設計性能。 介紹 高級設計能夠以簡潔的方式捕獲設計,從而
    發(fā)表于 08-16 19:56

    傾斜光柵的魯棒性優(yōu)化

    直接納入優(yōu)化過程,例如參數(shù)變化分析儀。該工具結合了同一系統(tǒng)的多次迭代,在優(yōu)化過程中實現(xiàn)了評價函數(shù)的表示和自動計算,如平均效率。在這個用例中,我們通過稍微改變填充因子來
    發(fā)表于 08-12 18:38

    神經網絡優(yōu)化算法有哪些

    神經網絡優(yōu)化算法是深度學習領域中的核心技術之一,旨在通過調整網絡中的參數(shù)(如權重和偏差)來最小化損失函數(shù),從而提高模型的性能和效率。本文將詳細探討神經網絡優(yōu)化算法的基本原理、主要方法、
    的頭像 發(fā)表于 07-03 16:01 ?280次閱讀

    寶塔面板Docker一鍵安裝:部署GPTAcademic,開發(fā)私有GPT學術優(yōu)化工具

    人工智能的浪潮中,GPT模型因其強大的自然語言處理能力備受矚目。然而,為了更好地應用于學術領域,許多人希望能部署自己私有的GPT學術優(yōu)化工具。本文將詳細介紹如何通過寶塔面板和Docker一鍵安裝
    的頭像 發(fā)表于 07-02 11:58 ?2044次閱讀
    寶塔面板Docker一鍵安裝:部署GPTAcademic,開發(fā)私有GPT學術<b class='flag-5'>優(yōu)化工具</b>

    OpenHarmony之開機優(yōu)化

    一丶環(huán)境信息 源碼版本:OpenHarmony-4.1-Release 板子型號:dayu200(RK3568) 二丶Bootchart工具 在開機優(yōu)化時,我們需要借助Bootchart工具,當前
    發(fā)表于 07-01 16:39

    ClickHouse內幕(3)基于索引的查詢優(yōu)化

    ClickHouse基于索引的查詢算子優(yōu)化方式。 在整個查詢計劃中Sort、Distinct、聚合這3個算子相比其他算子比如:過濾、projection等有如下幾個特點:1.
    的頭像 發(fā)表于 06-11 10:46 ?725次閱讀
    ClickHouse內幕(3)基于索引的查詢<b class='flag-5'>優(yōu)化</b>

    深度學習編譯工具鏈中的核心——圖優(yōu)化

    等,需要調整優(yōu)化網絡中使用的算子算子組合,這就是深度學習編譯工具鏈中的核心——圖優(yōu)化。圖優(yōu)化
    的頭像 發(fā)表于 05-16 14:24 ?487次閱讀
    深度學習編譯<b class='flag-5'>工具</b>鏈中的核心——圖<b class='flag-5'>優(yōu)化</b>

    如何對MD5加密算法優(yōu)化?

    有人針對程序安全啟動過程,進行MD5算法優(yōu)化嘛。目前采用標準算法,時間稍長,如果有人做過優(yōu)化的話,可以分享一下,謝謝。
    發(fā)表于 02-18 08:20

    【技術干貨】PID算法原理分析及優(yōu)化

    本期為大家分享經典控制算法之一的 PID控制方法。 PID控制方法從提出至今已有百余年歷史,其由于結構簡單、易于實現(xiàn)、魯棒性好、可靠性高等特點,在機電、冶金、機械、化工等行業(yè)中應用廣泛。下面就跟著
    發(fā)表于 12-22 15:38

    微波腔體在微帶環(huán)行器中的設計與優(yōu)化

    [摘 要] 本文介紹了微波腔體在微帶環(huán)行器產品中的設計與優(yōu)化,文中通過使用仿真軟件HFSS作為優(yōu)化工具,具體用到了HFSS中本征模求解器來進行腔體諧振頻率的仿真,很好的避免了腔體效應對電路電氣性能的影響,達到了優(yōu)化的目的。
    的頭像 發(fā)表于 12-18 10:33 ?880次閱讀
    微波腔體在微帶環(huán)行器中的設計與<b class='flag-5'>優(yōu)化</b>

    ADI高性能電源管理產品:最快和最精確的穩(wěn)壓器設計和優(yōu)化工具

    電子發(fā)燒友網站提供《ADI高性能電源管理產品:最快和最精確的穩(wěn)壓器設計和優(yōu)化工具.pdf》資料免費下載
    發(fā)表于 11-27 11:01 ?0次下載
    ADI高性能電源管理產品:最快和最精確的穩(wěn)壓器設計和<b class='flag-5'>優(yōu)化工具</b>

    PID算法原理分析及優(yōu)化

    歡迎來到森木磊石「技術微課堂」,本期為大家分享經典控制算法之一的PID控制方法。PID控制方法從提出至今已有百余年歷史,其由于結構簡單、易于實現(xiàn)、魯棒性好、可靠性高等特點,在機電、冶金、機械、化工
    的頭像 發(fā)表于 11-08 08:23 ?1317次閱讀
    PID<b class='flag-5'>算法</b>原理分析及<b class='flag-5'>優(yōu)化</b>

    使用Speos optimization優(yōu)化工具快速優(yōu)化設計

    優(yōu)化是一個有助于找到一個光學系統(tǒng)的最佳解決方案的實驗過程,它主要是利用參數(shù)的變化而試圖達到預期的結果。
    的頭像 發(fā)表于 10-31 09:11 ?535次閱讀
    使用Speos optimization<b class='flag-5'>優(yōu)化工具</b>快速<b class='flag-5'>優(yōu)化</b>設計

    Vitis加速庫:廣泛且性能優(yōu)化開源

    Vitis 統(tǒng)一軟件平臺包括一組廣泛的、性能優(yōu)化開源庫,這些庫提供了即開即用的加速功能,并且對現(xiàn)有應用實現(xiàn)最小化代碼更改或零更改。
    的頭像 發(fā)表于 10-30 17:23 ?562次閱讀
    Vitis加速庫:廣泛且性能<b class='flag-5'>優(yōu)化</b>的<b class='flag-5'>開源</b>庫

    基于PIC單片機的AES算法優(yōu)化設計

    電子發(fā)燒友網站提供《基于PIC單片機的AES算法優(yōu)化設計.pdf》資料免費下載
    發(fā)表于 10-30 09:46 ?0次下載
    基于PIC單片機的AES<b class='flag-5'>算法</b><b class='flag-5'>優(yōu)化</b>設計