希臘神話中,Chimera是一種巨大的噴火混血動物,由不同的動物部位組成;現(xiàn)在它被用來描述任何想象力豐富、難以置信或令人眼花繚亂的東西。
筆者最近從Quadric那里接觸到Chimera GPNPU(通用神經(jīng)處理器),真是“產(chǎn)品”如其名。
Quadric公司成立于2017年,最初計劃基于其新創(chuàng)Chimera GPNPU架構(gòu)提供推理邊緣芯片 (針對物聯(lián)網(wǎng)“邊緣”推理應(yīng)用的芯片)。
他們的第一塊芯片被快速驗證,一些早期用戶已經(jīng)在進行試驗。但最近,Quadric公司決定將Chimera GPNPU授權(quán)為IP,向更廣泛的客戶群體展示他們的技術(shù)。
下圖是利用Chimera GPNPU實現(xiàn)面部識別和認證的簡化示意圖,我們就以此作為切入點看下為什么Chimera GPNPU如此“充滿想象力”和“令人眼花繚亂”。
假設(shè)所有這些功能都在智能相機SoC中實現(xiàn),一個攝像機/傳感器為左邊的第一個功能塊提供視頻流。這個應(yīng)用很可能會用于未來幾代的門鈴攝像頭中。
觀察兩個粉紅色的“Face Detect”和“Face Authentication”功能塊,它們是通過人工智能/機器學(xué)習(xí)(AI/ML)推理實現(xiàn)的。
在過去幾年中,這種類型的推理發(fā)展極為迅速,從學(xué)術(shù)研究到早期部署,現(xiàn)在幾乎成為軟件開發(fā)中的一個必不可少的元素。
將推理(基于視覺、聲音等形式)作為創(chuàng)建應(yīng)用程序的構(gòu)建塊之一,這種想法我們可以認為是“軟件2.0”。
但這實現(xiàn)起來并不容易,SoC傳統(tǒng)應(yīng)對軟件2.0挑戰(zhàn)的方式如下(a)所示。
從(a)圖中可以看到,神經(jīng)處理器單元(NPU)、矢量數(shù)字信號處理器(DSP)和實時中央處理器(CPU)為三個獨立的核心。
要實現(xiàn)前面的面部識別和認證流程,使用常規(guī)方法,前兩個功能塊(Resize和Channel unpack)相關(guān)的處理將在DSP核心上執(zhí)行。
然后,DSP生成的數(shù)據(jù)將被送到NPU核心上運行神經(jīng)網(wǎng)絡(luò)“Face Detect”模型;NPU的輸出再送給CPU核心,CPU將運行一個“NMS”算法來決定使用哪個算法效果最好。
然后,DSP將使用CPU識別的邊界框在圖像上執(zhí)行更多的任務(wù),如“Crop + Gray Scale”和“Resize”。最后,這些數(shù)據(jù)將送到NPU核心上運行“Face Authenticate”模型。
用上述方法實現(xiàn)后,我們可能會發(fā)現(xiàn)沒有達到想要的吞吐率。如何找出性能瓶頸在哪里?另外,三個核心之間交換數(shù)據(jù)產(chǎn)生了多少功耗?
真正的潛在問題是,擁有三個獨立的處理器核心會使整個設(shè)計過程變得繁瑣。
例如,硬件設(shè)計人員必須決定要為每個核心分配多少內(nèi)存,以及在功能塊之間需要多大的緩沖區(qū)。同時,軟件開發(fā)人員需要決定如何在內(nèi)核之間劃分算法。這很痛苦,因為程序員不愿意花大量時間考慮所運行目標平臺的硬件細節(jié)。
另一個問題是ML模型正在迅速發(fā)展,誰都不知道未來幾年會有怎樣的ML模型。
所有這些問題都會導(dǎo)致ML部署無法盡可能快地加速,因為針對這種類型的常規(guī)目標平臺進行開發(fā),對于編程、調(diào)試和性能調(diào)優(yōu)等方面來說,都是一件非常痛苦的事情。
再回到Chimera GPNPU,它由前面圖(b)部分的粉色區(qū)域表示。
GPNPU將DSP、CPU和NPU的屬性結(jié)合在單個核心中,作為一個傳統(tǒng)的CPU/DSP的組合,它可以運行C/ C++代碼,具有完整的32位標量+向量指令集架構(gòu)(ISA),同時可以用作一個NN圖處理器,運行8位推理優(yōu)化的ML代碼。這種方法通過在同一個引擎上運行兩種類型的代碼,獨特地解決了信號傳輸?shù)奶魬?zhàn)。
我們可以認為Chimera GPNPU是經(jīng)典的馮·諾依曼RISC機和收縮陣列/2D矩陣架構(gòu)的混合體。
Chimera GPNPU的一個關(guān)鍵優(yōu)勢是它能夠適應(yīng)不斷發(fā)展和日益復(fù)雜的ML網(wǎng)絡(luò)。現(xiàn)在東西變得越來越復(fù)雜,需要在NN的體系結(jié)構(gòu)中做更多的條件控制流,可以是CNN, RNN, DNN等等。
傳統(tǒng)的NPU通常是硬連接的加速器,不能條件執(zhí)行。例如有一個專用加速器,用戶不能在第14層的某個地方停下來檢查條件或中間結(jié)果,然后分支判斷并做各種面向控制流的事情。
在這些情況下,必須在NPU和CPU之間來回移動數(shù)據(jù),這將對性能和功耗產(chǎn)生沖擊。而使用一個Chimera GPNPU,我們可以在NN和控制代碼之間在時鐘基礎(chǔ)上來回切換。
這里還有很多需要討論,比如Chimera GPNPU在執(zhí)行卷積層(這是CNN的核心)方面的出色表現(xiàn),以及它們的TOPS(每秒萬億次操作)評分,都令筆者非常興奮。這里不再詳細闡述,有需要的讀者可以咨詢Quadric公司。
最后,筆者想快速概述一下Quadric軟件開發(fā)工具包(SDK),如下所示。
歸根結(jié)底,一切都是由軟件驅(qū)動的。使用TensorFlow、PyTorch、Caffe等框架生成的經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)圖/模型被送入Apache TVM(一個用于CPU、GPU和ML加速器的開源機器學(xué)習(xí)編譯器框架),生成一個Relay輸出(Relay是TVM框架的高級中間表示)。
中繼表示的轉(zhuǎn)換和優(yōu)化由Chimera CGC執(zhí)行,它將轉(zhuǎn)換和優(yōu)化后的神經(jīng)網(wǎng)絡(luò)輸出為C++代碼。Chimera LLVM C++ Compiler將這些代碼與開發(fā)人員的C++應(yīng)用程序代碼合并,所有這些輸出為一個可執(zhí)行文件,運行在目標硅/SoC中的Chimera GPNPU上。
注意,Quadric SDK是作為預(yù)打包的Docker映像交付的,用戶可以下載并在自己的系統(tǒng)上運行。Quadric很快將把這個SDK托管在Amazon Web Services (AWS)上,從而允許用戶通過他們的Web瀏覽器訪問它。
讓筆者特別感興趣的是,Quadric的工作人員正在開發(fā)一個圖形用戶界面(GUI),它可以讓開發(fā)人員拖放包含CPU/DSP代碼和NPU模型的管道構(gòu)建塊,將它們拼接在一起,并將所有內(nèi)容編譯成一個ChimeraGPNPU image。這種無代碼開發(fā)方法將使大量開發(fā)人員能夠創(chuàng)建含有Chimera GPNPU的芯片。
審核編輯:劉清
-
SoC系統(tǒng)
+關(guān)注
關(guān)注
0文章
52瀏覽量
10640 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8323瀏覽量
132166 -
數(shù)字信號處理器
+關(guān)注
關(guān)注
5文章
448瀏覽量
27305 -
NPU
+關(guān)注
關(guān)注
2文章
252瀏覽量
18482
原文標題:結(jié)合CPU、DSP、NPU功能為一體的新型混合處理器——Chimera GPNPU
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論