陳天奇等人提出TVM:深度學習自動優化代碼生成器

2020-12-06 36kr

TVM 是由華盛頓大學在讀博士陳天奇等人提出的深度學習自動代碼生成方法,去年 8 月機器之心曾對其進行過簡要介紹。該技術能自動為大多數計算硬體生成可部署優化代碼,其性能可與當前最優的供應商提供的優化計算庫相比,且可以適應新型專用加速器後端。近日,這項研究的論文《TVM: End-to-End Optimization Stack for Deep Learning》終於完成,內容包含新方法的介紹與討論,以及 TVM 在英偉達、AMD 的 GPU、樹莓派及一些 FPGA 上的性能評估。

(項目連結:https://github.com/dmlc/tvm)

深度學習模型可以識別圖像、處理自然語言,以及在部分具有挑戰性的策略遊戲中擊敗人類。在其技術發展的過程中,現代硬體穩步推進的計算能力扮演了不可或缺的作用。很多目前最為流行的深度學習框架,如 TensorFlow、MXNet、Caffe 和 PyTorch,支持在有限類型的伺服器級 GPU 設備上獲得加速,這種支持依賴於高度特化、供應商特定的 GPU 庫。然而,專用深度學習加速器的種類越來越多,這意味著現代編譯器與框架越來越難以覆蓋所有的硬體。

顯而易見,以現有的點到點方式實現不同深度學習框架對所有種類的硬體進行後端支持是不現實的。我們的最終目標是讓深度學習負載可以輕鬆部署到所有硬體種類中,其中不僅包括 GPU、FPGA 和 ASIC(如谷歌 TPU),也包括嵌入式設備,這些硬體的內存組織與計算能力存在著顯著的差異(如圖 1 所示)。考慮到這種需求的複雜性,開發一種能夠將深度學習高級程序降低為適應任何硬體後端的低級優化代碼的優化框架是最好的方法。

目前的深度學習框架依賴於計算圖的中間表示來實現優化,如自動微分和動態內存管理 [3,7,4]。然而,圖級別的優化通常過於高級,無法有效處理硬體後端算子級別的轉換。另一方面,目前深度學習框架的算子級別庫通常過於僵化,難以輕鬆移植到不同硬體設備上。為了解決這些問題,我們需要一個可實現從計算圖到算子級別的優化,為各種硬體後端帶來強大性能的編譯器框架。



圖 1:CPU、GPU 與類 TPU 加速器需要不同的片上存儲架構和計算基元。在生成優化代碼時我們必須考慮這一問題。



圖 2:TVM 堆棧圖。目前的堆棧支持多種深度學習框架以及主流 CPU、GPU 以及專用深度學習加速器。

優化的四大基本挑戰

深度學習的優化編譯器需要同時展示高級別與低級別的優化,在論文中,研究人員總結了在計算圖級別與張量算子級別上的四大基本挑戰:

  • 高級數據流複寫:不同的硬體設備可能具有截然不同的內存層次結構,因此,融合算子與優化數據布局的策略對於優化內存訪問至關重要。

  • 跨線程內存復用:現代 GPU 與專用加速器的內存可被多個計算核心共享,傳統的無共享嵌套並行模式已不再是最優方法。為優化內核,在共享內存負載上的線程合作很有必要。

  • 張量計算內部函數:最新的硬體帶來了超越向量運算的新指令集,如 TPU 中的 GEMM 算子和英偉達 Volta 架構中的 Tensor Core。因此在調度過程中,我們必須將計算分解為張量算術內部函數,而非標量或向量代碼。

  • 延遲隱藏(Latency Hiding):儘管在現代 CPU 與 GPU 上,同時擁有多線程和自動緩存管理的傳統架構隱藏了延遲問題,但專用的加速器設計通常使用精簡控制與分流,這為編譯器堆棧的調度帶來了複雜性。所以,調度仍需仔細,以隱藏內存訪問延遲。

TVM:一個端到端優化堆棧(見圖 2),該端到端優化編譯器堆棧可降低和調整深度學習工作負載,以適應多種硬體後端。TVM 的設計目的是分離算法描述、調度和硬體接口。該原則受到 Halide [22] 的計算/調度分離思想的啟發,而且通過將調度與目標硬體內部函數分開而進行了擴展。這一額外分離使支持新型專用加速器及其對應新型內部函數成為可能。TVM 具備兩個優化層:計算圖優化層,用於解決第一個調度挑戰;具備新型調度基元的張量優化層,以解決剩餘的三個挑戰。通過結合這兩種優化層,TVM 從大部分深度學習框架中獲取模型描述,執行高級和低級優化,生成特定硬體的後端優化代碼,如樹莓派、GPU 和基於 FPGA 的專用加速器。該論文做出了以下貢獻:

  • 我們構建了一個端到端的編譯優化堆棧,允許將高級框架(如 Caffe、MXNet、PyTorch、Caffe2、CNTK)專用的深度學習工作負載部署到多種硬體後端上(包括 CPU、GPU 和基於 FPGA 的加速器)。

  • 我們發現了提供深度學習工作負載在不同硬體後端中的性能可移植性的主要優化挑戰,並引入新型調度基元(schedule primitive)以利用跨線程內存重用、新型硬體內部函數和延遲隱藏。

  • 我們在基於 FPGA 的通用加速器上對 TVM 進行評估,以提供關於如何最優適應專用加速器的具體案例。

我們的編譯器可生成可部署代碼,其性能可與當前最優的特定供應商庫相比,且可適應新型專用加速器後端。



圖 3:兩層卷積神經網絡的計算圖示例。圖中每個節點表示一次運算,它消耗一或多個張量,並生成一或多個張量。張量運算可以通過屬性進行參數化,以配置其行為(如 padding 或 stride)。



論文:TVM: End-to-End Optimization Stack for Deep Learning

論文連結:https://arxiv.org/abs/1802.04799

論文摘要:可擴展框架,如 TensorFlow、MXNet、Caffe 和 PyTorch 是目前深度學習領域中最流行和易用的框架。但是,這些框架只對窄範圍的伺服器級 GPU 進行優化,要把工作負載部署到其他平臺,如手機、嵌入式設備和專用加速器(如 FPGA、ASIC),則需要大量手動工作。我們提出了 TVM,一個端到端的優化堆棧,具備圖形級和算子級的優化,以為多種硬體後端提供深度學習工作負載的性能可移植性。我們討論了 TVM 所解決的深度學習優化挑戰:高級算子融合(operator fusion)、多線程低級內存重用、任意硬體基元的映射,以及內存延遲隱藏。實驗結果證明 TVM 在多個硬體後端中的性能可與適應低功耗 CPU 和伺服器級 GPU 的當前最優庫相比。我們還通過針對基於 FPGA 的通用深度學習加速器的實驗,展示了 TVM 對新型硬體加速器的適應能力。該編譯器基礎架構已開源。


相關焦點

  • 自動生成硬體優化內核:陳天奇等人發布深度學習編譯器TVM
    有了 TVM,業界與學界開發者們可以快速、輕鬆地在各個系統(包括手機、嵌入式設備與低功耗晶片)上部署深度學習應用程式,同時無須擔心資源與速度的限制。「TVM 作為神經網絡和硬體後端之間的共同層,消除了為每類設備或伺服器優化各自基礎架構的需要。」TVM 項目負責人陳天奇表示,「我們的框架允許開發人員快速、輕鬆地部署和優化大量硬體設備上的深度學習系統。」
  • 陳天奇的tvm更新了:VTA,開源AI晶片棧
    陳天奇 發表於 tvm社區 量子位 搬運 | 公眾號 QbitAI華盛頓大學陳天奇博士近日在tvm社區介紹了VTA(Versatile Tensor Accelerator)項目,量子位全文搬運如下。然而,當我們的合作真正開始的時候,才發現問題比原來想的要困難的多:深度學習晶片的主要問題遠遠超過了硬體本身。深度學習硬體真正的目標,是希望大家都可以把自己的深度學習的模型跑在AI晶片上。而加速器帶來的特殊定製導致對於每個加速器,我們都需要重新設計一套驅動,以及上面的軟體棧—-包含編譯,優化和部署模塊。
  • 陳天奇任 CTO,華盛頓大學TVM團隊創業,獲390萬美元種子輪融資
    作為機器學習領域知名的青年華人學者,陳天奇加入創業公司的消息引起了業內極大的關注。今日,OctoML 宣布完成 390 萬美元種子輪融資,主要面向缺少源或知識來構建優化深度學習模型的群體。 本輪融資由麥德羅納風險投資集團領投,Amplify Partners 參投。
  • 陳天奇:深度學習編譯技術的現狀和未來
    作者:陳天奇傳統的深度學習框架採用人工優化算子,然後建立運行時圖解釋器來解決內存分配調度等問題。深度學習編譯器技術路線一般指在優化過程中採用了自動或者半自動的代碼生成用以替代人工優化。深度學習編譯器無疑是最近非常熱門的話題。本文主要探討深度學習編譯技術的現狀和未來。
  • 陳天奇創業公司首個SaaS產品:快速構建部署ML應用,跨平臺優化
    去年,知名人工智慧青年學者、華盛頓大學博士陳天奇參與創建了 ML 創業公司 OctoML。該公司致力於打造一個可擴展、開放、中立的端到端棧,用於深度學習模型的優化和部署。這不,他們推出了首個 SaaS 產品 Octomizer,其能夠幫助開發者或數據科學家更方便、更省事省力地將 ML 模型部署到設備上。
  • MIT Taco項目:自動生成張量計算的優化代碼,深度學習加速效果提高...
    通常,程式設計師通過編寫自定義代碼來優化和避免零條目,但這種代碼通常編寫起來複雜,而且通常適用範圍狹窄。雷鋒網發現,在ACM的系統、程序、語言和應用會議(SPLASH)上,麻省理工學院、法國替代能源和原子能委員會的研究人員和Adobe研究院的研究者們最近提出了一個針對稀疏數據自動生成優化代碼的系統。
  • 從ACM班、百度到亞馬遜,深度學習大牛李沐的開掛人生
    作為一經推出便大受追捧的 MXNet 深度學習框架的主要貢獻者之一,李沐功不可沒。值得注意的是,這個由 DMLC(Distributed Machine Learning Community)打造的深度學習框架,創建者都是中國人,以陳天奇、李沐、解浚源等為代表。現在,包括 AWS 在內的很多企業都將 MXNet 作為主流支持框架。
  • 2017中國AI英雄風雲榜技術創新人物候選人之陳天奇
    陳天奇,華盛頓大學計算機系博士生,深度學習編譯器TVM發明人。陳天奇,華盛頓大學計算機系博士生,此前畢業於上海交通大學ACM班,研究方向為大規模機器學習。
  • 阿里將 TVM 融入 TensorFlow,在 GPU 上實現全面提速
    雷鋒網 AI 研習社將原文編譯整理如下:背景神經機器翻譯(NMT)是一種端到端的自動翻譯方法,可能克服傳統的基於短語的翻譯系統的缺點。最近,阿里巴巴集團正致力於在全球電子商務中部署 NMT 服務。為了提高推理性能,我們已經進行了一些優化,包括圖級別的 op 融合、循環不變節點外提(loop invariant node motion)。我們觀察到一個特殊問題:batch 矩陣相乘是 Transformer 中的一個關鍵問題,目前它在 cuBLAS 中的實現並未得到很好的優化。
  • 機器學習和深度學習最佳作品
    ,儘管存在幾種自動優化技術,但是當應用於不同類型的問題時,它們具有不同的優缺點,常見機器學習模型的超參數優化問題,就如何將其應用於機器學習算法方面,介紹了幾種最新的優化技術。在基準數據集上進行了實驗,以比較不同優化方法的性能,通過有效地識別適當的超參數配置,幫助行業用戶,數據分析師和研究人員更好地開發機器學習模型。在基準數據集上進行了實驗,以比較不同優化方法的性能。
  • 陳天奇:機器學習科研的十年
    MSRA 回來之後,在實驗室薛老師的建議下,我選擇了一個現在看來正確而又錯誤的方向 -- 深度學習。那是 AlexNet 出現之前兩年,深度學習的主流熱點是非監督學習和限制玻爾茲曼機。沒有導師的指導,沒有工具,當時我靠著實驗室的兩塊顯卡和自己寫的 CUDA 代碼開始了死磕深度學習的兩年半。實驗室的學長問我,你準備要幹啥,我說:「我要用卷積 RBM 去提升 ImageNet 的分類效率。」
  • 華盛頓大學成立SAML實驗室:陳天奇參與,探索跨系統堆棧多層問題
    陳天奇本人在微博上介紹說,實驗室將有整合系統、體系結構、機器學習和程序語言4個方向的團隊推進深度學習算法、系統的硬體和協同設計研究和TVM等開源項目。△ 陳天奇微博截圖四個方向華盛頓大學為什麼想建立這個實驗室?
  • 深度學習在醫學影像中的研究進展及發展趨勢
    隨後,Chen H等人提出RED-CNN降噪模型,將殘差網絡與卷積自動編碼器相結合,通過跳躍連接形成深度網絡,實現低劑量CT圖像的降噪。同年,Kang E等人首先對低劑量CT圖像進行方向小波變換,然後將深度卷積神經網絡模型應用於小波係數圖像,實現降噪,並使用殘差學習架構加快網絡訓練速度,提高性能。
  • 零基礎入門深度學習(六):圖像分類任務之LeNet和AlexNet
    :0001 導讀本課程是百度官方開設的零基礎入門深度學習課程,主要面向沒有深度學習技術基礎或者基礎薄弱的同學,幫助大家在深度學習領域實現從0到1+的跨越。ResNet:Kaiming He等人在2015年提出了ResNet[5],通過引入殘差模塊加深網絡層數,在ImagNet數據集上的識別錯誤率降低到3.6%,超越了人眼識別水平。ResNet的設計思想深刻的影響了後來的深度神經網絡的設計。
  • 華為深度學習框架MindSpore正式開源:自動微分不止計算圖
    自動微分:不止計算圖自動微分是深度學習框架的靈魂,有了它我們寫模型就只需要關注前向傳播,將所有複雜的求導、反傳過程都留給框架。一般而言,自動微分指一種自動求某個函數其導數的方法。在機器學習中,這些導數可以更新權重。在更廣泛的自然科學中,這些導數也能用於各種後續計算。
  • 內核融合:GPU深度學習的「加速神器」
    【按:在深度學習「紅透」半邊天的同時,當前很多深度學習框架卻面臨著共同的性能問題:被頻繁調用的代數運算符嚴重影響模型的執行效率。本文中,微軟亞洲研究院研究員薛繼龍將為大家介紹能夠輕鬆玩轉計算性能的「加速神器」——內核融合,探討內核融合在加速深度學習上的主要方法以及當前面臨的主要挑戰。】
  • 為孩子起個名,用深度學習技術創建寶寶名字生成器
    毫無疑問,交給深度學習技術!注1:也許並不存在主格決定論,其科學性就跟星座差不多。但是,這依然是個很有趣的問題!本文將展示如何用機器學習技術創建寶寶名字生成器(更準確地說是預測器),它能夠根據對一個人(或一個人未來)的描述給出一個名字,比如:我的孩子會在新澤西州出生。她長大會成為谷歌的軟體工程師,喜歡騎行和買咖啡。
  • 12倍端到端加速,陳天奇創業公司OctoML提克服二值網絡瓶頸新方法
    選自medium作者:Josh Fromm機器之心編譯機器之心編輯部去年,TVM 開發團隊陳天奇等人創建了 OctoML這些改進一部分是由新的算法和架構創新所推動的,但對於深度學習任務來說,不斷擴展的算力和內存也使其取得了重大進展。隨著 ML 準確率的提升,模型所需要的算力和內存也不斷增加。早在 2016 年,我們就可以看出模型大小和準確率之間的關係了。
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    》中,我們已經講到,2016 年是深度學習大潮衝擊 NLP 的一年,通過去年一年的努力,深度學習在 NLP 領域已經站穩了腳跟。其中,對話交互系統已經成為一個重要的應用研究領域,2017 年的自然語言對話系統,將開創一個新的人機互動時代。
  • 「深度學習」這十年:52篇大神級論文再現AI榮與光
    過去十年中有哪些有影響力的深度學習論文?從「深度學習三巨頭」到何愷明,從谷歌到MIT,52篇神級論文帶大家回顧深度學習這十年。戳右邊連結上新智元小程序了解更多! 隨著2020年的到來,人類進入了一個嶄新的十年。回顧過去10年,深度學習領域取得的巨大進步。