TVM介紹
為解決深度學習框架和硬件後端適配問題,華盛頓大學的陳天奇等人提出了TVM.
TVM是一個端到端的全棧編譯器,包括統一的IR堆棧和自動代碼生成方法,其主要功能是優化在CPU、GPU和其他定製AI芯片上執行的AI模型,通過自動轉換計算圖,實現計算模式的融合和內存利用率最大化,並優化數據佈局,完成從計算圖到算子級別的優化,提供從前端框架到AI芯片、端到端的編譯優化。通過TVM,只需要花費少量工作即可在移動端、嵌入式設備上運行AI模型。
TVM和其他框架的對比:
Mobile Nrural Network:MNN是阿里開發的一個輕量級的深度神經網絡推理引擎,可以方便地部署在移動端與嵌入式系統中,並在端側加載深度神經網絡模型進行推理預測。目前,MNN已經在阿里巴巴的手機淘寶、手機天貓、優酷等20多個App中使用,覆蓋直播、短視頻、搜索推薦、商品圖像搜索、互動營銷、權益發放、安全風控等場景。此外,IoT等場景下也有若干應用。
NCNN:這是騰訊開發的一個為手機端極致優化的高性能神經網絡前向計算框架。ncnn 從設計之初深刻考慮手機端的部署和使用。無第三方依賴,跨平台,手機端 cpu 的速度快於目前所有已知的開源框架。基於 ncnn,開發者能夠將深度學習算法輕鬆移植到手機端高效執行,開發出人工智能 APP,將 AI 帶到你的指尖。ncnn 目前已在騰訊多款應用中使用,如 QQ,Qzone,微信,天天P圖等。可以部署在linux上,不過系統必須是64位。
TVM:它旨在縮小以生產力為中心的深度學習框架與以性能和效率為重點的硬件後端之間的差距。 TVM與深度學習框架一起使用,以提供對不同後端的端到端編譯。提供基於編譯方法的跨平台部署神經網絡方案。
為什麼需要TVM
雖然硬件廠商提供了硬件庫函數實現新指令和算子對應的內核(如計算密集型內核),而且,這些庫函數在預定義內核中也可以使用新指令實現高性能,但當涉及新的AI模型或需要進一步提高模型性能時,這種方法的靈活性顯示不足,而且,算子和硬件算子庫緊密耦合,導致算子不可分解(即算子的原子性),從而妨礙了算子的進一步優化,使其難以在硬件平台上高效執行。因此,更好的做法是通過TVM的定製化處理,使新指令和算子易於集成和使用,並可以複用TVM現有的分析和轉換Pass完成編譯任務。