全球首個(gè)軟硬件推理平臺(tái):NVDLA 編譯器正式開源
2017 年,英偉達(dá)發(fā)布了深度學(xué)習(xí)加速器 NVDLA,全稱 NVIDIA DeepLearning Accelerator,以推動(dòng)在定制硬件設(shè)計(jì)中采用高效的 AI 推理。
在英偉達(dá)的開發(fā)套件 Jetson AGX Xavier 中,它能為 AI 模型提供 7.9 TOPS/W 的最佳峰值效率。
而最近,英偉達(dá)在 GitHub 上開源了 NVDLA 編譯器的源代碼,這是世界上首個(gè)軟硬件推理平臺(tái)的完整開源代碼。系統(tǒng)架構(gòu)師和軟件開發(fā)者們,現(xiàn)在已可訪問這個(gè)軟硬件推理平臺(tái)。
使用 NVDLA 進(jìn)行物體檢測
在本文中,將詳細(xì)介紹網(wǎng)絡(luò)圖形編譯器,是如何提升了專用硬件加速器的性能,并介紹在云端,如何構(gòu)建和運(yùn)行自定義 NVDLA 軟硬件設(shè)計(jì)。
NVDLA 編譯器的性能和效率
編譯器是 NVDLA 軟件棧的關(guān)鍵組件。它能生成優(yōu)化的執(zhí)行圖,將預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型層中定義的任務(wù),映射到 NVDLA 中的各個(gè)執(zhí)行單元。
一方面能最大限度地利用計(jì)算硬件,另一方面盡可能地減少數(shù)據(jù)移動(dòng)。
NVDLA 核心硬件有六個(gè)專門的硬件單元,可以實(shí)現(xiàn)同時(shí)調(diào)度,或者在流水線配置中實(shí)現(xiàn)調(diào)度。
NVDLA 架構(gòu)圖
此外,它還具有小型和大型硬件配置文件。其中大型配置文件含有一些高級(jí)特性,如芯片上的 SRAM 接口、連接微控制器的能力。
NVDLA 小型配置文件模型
硬件架構(gòu)是模塊化的,它被設(shè)計(jì)成可自由伸縮的形態(tài),小到嵌入式物聯(lián)網(wǎng)設(shè)計(jì),大到使用NVDLA 單元陣列的大型數(shù)據(jù)中心,都能完美適用。
編譯器可以根據(jù)多項(xiàng)因素進(jìn)行調(diào)優(yōu):NVDLA 硬件配置、系統(tǒng)的 CPU 和內(nèi)存控制配置,以及應(yīng)用程序的自定義神經(jīng)網(wǎng)絡(luò)用例等等。
NVDLA 是如何提升性能的
在大型的 NVDLA 設(shè)計(jì)上,層融合和管道調(diào)度之類的編譯器優(yōu)化,表現(xiàn)性能良好,可廣泛應(yīng)用于多種神經(jīng)網(wǎng)絡(luò)架構(gòu),能提供高達(dá) 3 倍的性能效益。
這種優(yōu)化后的靈活性,是實(shí)現(xiàn)跨大型網(wǎng)絡(luò)模型(如ResNet-50)和小型網(wǎng)絡(luò)模型(如 MobileNet)的性能優(yōu)化的重要原因。
對(duì)于較小的 NVDLA 設(shè)計(jì),編譯器優(yōu)化(如 Memory tiling )也是提高性能效率的關(guān)鍵。
Memory tiling 設(shè)計(jì)能在權(quán)重和激活數(shù)據(jù)之間,平衡芯片上緩沖區(qū)的使用,從而最小化芯片外存儲(chǔ)的流量和能耗。
用戶還可以自由地創(chuàng)建定制的圖層,并根據(jù)自己的特殊用例進(jìn)行調(diào)優(yōu),或者使用最新的算法進(jìn)行實(shí)驗(yàn)。
為了方便對(duì)比,可以根據(jù)下面的性能數(shù)字,評(píng)估 NVDLA 大型模型的預(yù)期性能。測量數(shù)據(jù)來自 Jetson AGX Xavier 開發(fā)工具上的一個(gè) NVDLA 核心捕獲。
使用 RISC-V 和 FireSim 在云端設(shè)計(jì)
通過這個(gè)編譯器版本,NVDLA 用戶可以訪問集成、增添和探索 NVDLA 平臺(tái)所需的軟件和硬件源代碼。
如果想要嘗試入手,建議的方式是直接使用 NVDLA 上的 YOLOv3 ,以及云端的 RISC-V 和 FireSim 進(jìn)行物體檢測。
在使用 FireSim- NVADLA 時(shí),可按照 FireSim 的說明操作,直到能夠運(yùn)行單節(jié)點(diǎn)模擬為止。
使用指南:http://docs.fires.im/en/1.5.0/index.html
按照教程中的步驟操作,在「設(shè)置FireSim Repo」一節(jié)中,驗(yàn)證是否正使用 FireSim -NVADLA 存儲(chǔ)庫,具體的操作代碼如下:
- git clone https://github.com/CSL-KU/firesim-nvdla
- cd firesim-nvdla
- ./build-setup.sh fast
使用 NVDLA 運(yùn)行單節(jié)點(diǎn)模擬之后,按照 NVDLA 教程中的步驟可以立即啟動(dòng) YOLOv3。(地址:https://github.com/CSL-KU/firesim-nvdla#running-yolov3-on-nvdla)
這套編譯器已經(jīng)被 SiFive 這類初創(chuàng)公司所使用,并從中得到了受益。
SiFive 使用 NVDLA 進(jìn)行深度學(xué)習(xí)推理
據(jù)悉,SiFive 在一年前首次在自己的平臺(tái)上開始使用 NVDLA,而經(jīng)過了性能優(yōu)化的開源 NVDLA 編譯器,能夠創(chuàng)建特定領(lǐng)域的優(yōu)化 SoC 設(shè)計(jì),為 IoT Edge 中的 AI 現(xiàn)代計(jì)算需求做足準(zhǔn)備。
項(xiàng)目開源地址:
https://github.com/nvdla/sw/releases/tag/v1.2.0-OC