(一) 摘要(完成)

為了讓大語言模型能在資源受限的嵌入式設備上運行,我們重寫了模型的矩陣乘法運算子,並利用TVM compiler中的BYOC (Bring Your Own Codegen) 技術,將優化後的運算子整合至模型的計算圖中,大幅提升計算效率。優化過的模型與原版相比,運行速度提升xx倍。

(二) 研究動機與研究問題(完成)

隨著深度學習技術的快速發展,跨平台部署深度學習模型已成為一項重大的挑戰。由於每種硬體加速器 (如: GPU、NPU、XPU ) 都有各自繁雜的軟體生態,即使是硬體供應商,為了在自家設備上順利運行深度神經網路 (DNN) 模型,也需要在軟體上投入巨大的開發和維護成本。為了改善這一問題,開發者迫切地需要自動化工具來生成針對硬體優化的程式碼,從而擺脫繁瑣的手工調整過程。

image.png

圖1: 深度學習編譯器的優勢。

TVM deep learning compiler是目前最受矚目的深度學習編譯器系統之一。做為一個開源框架,TVM讓開發者接入自家硬體加速器,並打包成一個runtime module,後續只需要關注自家程式碼生成器 (Codegen)的工作即可,由於編譯器的其他模組能重複使用,開發與維護的成本也因此大幅降低。

而我們打算深入研究TVM中的BYOC (Bring Your Own Codegen) 技術,它能讓我們把自己設計的外部運算子整合至TVM 的編譯流程裡,從而提升模型的執行效能。我們將著重於以下幾個目標:

(三) TVM運作流程圖(完成)

image.png

圖2: TVM and BYOC流程圖。

上圖為將深度學習模型部屬到target端的流程圖。其中紅色標記的BYOC是我們的專題著重研究的部分。

在這份流程圖裡,我們首先使用Whisper-tiny作為輸入模型(圖中的第一步介紹記得改),並採用 ONNX作為前端。接著將模型轉換為TVM的中間表示(IR),即Relax,並執行Operator Fusion等一系列高階優化。接下來,我們把計算圖拆分為可以在TVM或外部加速器上執行的子圖,以提高性能與適應不同的硬體環境。

對於可以在TVM上執行的子圖,我們採用TVM的內建編譯器進行加速;至於需要外部加速器執行的子圖,則是使用BYOC框架來整合外部加速器的編譯器進行加速。最後,將兩部分打包成一個運行時模組,並在Banana Pi RISC-V平台上運行。

(四) 研究方法及步驟

  1. 欲優化之LLM模型:Whisper-tiny