2018年3月1日 星期四

NeuroPilot 人工智慧平台究竟是什麼?

資料來源﹕點按這裡

2018年起,人工智慧進入了快車道!而聯發科技攜 NeuroPilot 人工智慧平台也登上了這趟開往 AI 時代的列車。NeuroPilot 是什麼意思?這個平台的內部構造如何?與其他人工智慧方案有何不同?在今天的文章裡,小編將逐一向大家揭曉。


NeuroPilot 名字來源

談起 NeuroPilot,我們需要先從它的大哥 CorePilot 說起。大約四五年前,為更好地提升手機性能和降低功耗,很多手機處理器開始採用大小核異構架構。聯發科技早在2014年領先開發出 CorePilot™ 技術,可動態偵測每個核心的工作負載量,智慧調節每個核心的任務分配,使高性能的大核以及節能的小核相互協調。進入人工智慧時代,聯發科技把從大小核時代積累的異構運算經驗應用到 NeuroPilot 上,演變為在 CPU、GPU 和 APU 間做異構運算,提升 AI 運算效能。所以,NeuroPilot 可以說是一個以異構運算為基礎的人工智能平台。

 英文小知識:Pilot 的中文解釋是引航員、導向器;Core 是核心的意思;
      Neuro 是神經網絡的意思。那麼,CorePilot 和 NeuroPilot
      的意思就不言自明了吧。


NeuroPilot 平台大拆解

NeuroPilot 平台大致可分為三個層級,最頂層是各種應用程序(APP),中間層用於程序編寫和異構運算,最底層是各種硬體處理器。其實,你可以把它想像成一個漢堡包,底層用於支撐;中間是餡料,可以根據口味不同實現各種客制化;頂層則是用於覆蓋和感知,勾起人們的食用(使用)慾望。


最頂層(應用層)
 
最頂層是我們日常就能接觸的一些應用,包括臉部識別、面部美化、場景檢測、手勢檢測、語音識別等等。這些應用有的是能從軟體商店(App Store)裡直接下載的,比如美圖類軟件;有的是預建(Pre-built)式應用程序,比如人臉解鎖或人臉支付等。相較於軟件商店裡面的通用型應用程序,pre-built 應用有很強的個性化需求(比如安全性),所以需要採用預建的方式跟特定軟件做深度整合方能實現。
聯發科技 NeuroPilot 平台既能支持軟件商店裡面的應用(App-store Applications),也支持預建式應用(Pre-built Applications)。要支持這兩類應用,需要在架構上做一些優化和設計,那麼NeuroPilot 是如何做到的呢?讓我們繼續往下深挖。

 
中間層(軟體層)
 
這一層主要由算法軟體構成,包括高中低階 API, 神經網絡運行(NN Runtime), 異構運行(Heterogeneous Runtime)。
首先,軟體商店裡面的應用通常都是基於高級別的 API 進行程序編寫的,我們稱之為 AI framewrok,像 Google 的tensorflow、 Facebook 的caffe2、Amazon 的 MXNet、Sony 的 NNabla 等。聯發科技的 NeuroPilot 支持市面上主流且常用的所有 AI framework,這樣我們的合作夥伴們就能夠很方便地在 NeuroPilot 平台上進行程序開發啦,同時也能夠很好地與雲端對接。
對於預建式應用程序而言,既包含一些通用功能,也有一些客製化功能,而且廠商希望應用程序能夠比較容易地複製到其他平台去,即同一個 APP 能部署到不同的操作系統平台上。基於這樣的需求,NeuroPilot 加入了 NN Runtime 這一層級,除了把通用AI 應用的運算概念裝在裡面外,還提供一些客制化接口,以滿足廠商的客制化需求,這樣既確保了廠商客制化的AI 指令不被外人獲悉,也能讓這些客制化指令更有效運行,還可以很容易地實現一些通用功能。
再往下,是異構運算層(Heterogeneous Runtime)。為什麼 AI 還需要異構運算呢?這是因為 CPU、GPU、APU 都可以進行 AI 運算,那麼當一個 AI 任務來臨時,要把任務丟給哪個處理器去做呢?這就需要異構功能了。


CPU 是中央處理器,主要負責控制相關的功能。

GPU 是圖形處理器,主要負責運算功能。

APU 是AI 處理器,主要負責AI 相關應用,對整個AI 運算做特殊的加速。













正所謂術業有專攻,從上面的介紹可以看到,不同的處理器擁有不同的功能與特性,所以分工明確是件很重要的事情。比如 CPU 什麼都能做,但做什麼東西都很費力,效率十分差,而 AI processor 雖只負責 AI 方面的東西,但執行起 AI 任務時,效率卻是最好的。

異構運算能夠根據工作的特質進行明確的分工,把不同的工作分配給 APU、CPU、GPU,讓它們能夠最大地發揮各自所長,實現最優的效能。


最底層 (硬體層) 

這層就不多說了,主要是異構運算所調配的各個處理器——CPU、GPU、APU。


完整的工具包讓 NeuroPilot 更開放

不同於以往的交鑰匙方案,人工智慧時代,聯發科技採用平台策略。NeuroPilot 是個開放的平台,開放給所有的合作夥伴,甚至一些非專業的使用者也可以用 NueroPilot 做 AI 應用的開發。為了讓所有人都能很容易地使用 NeuroPilot,除了把上述提到的架構設計好之外,工具包也要非常完整。比如有的合作夥伴開發了一個軟體,卻發現實際運行時有些地方跟當初預想的不一樣,這時就需要工具包幫忙做除錯(debug)的工作。

NeuroPilot 提供從最上層系統級到中間 runtime 層級到最底層的工具包。系統層級的工具包主要負責排查 AI 任務在 CPU、APU、GPU 間的工作分配是否合理。如果你想讓CPU 執行 AI,系統卻讓 GPU 做了這項工作,這時工具包就會糾除這個錯誤。而 runtime 中間層的工具包主要負責排查各運算單元裡面的運行情況是否正常。通過這些工具包,採用 NeuroPilot 平台的合作夥伴能夠非常容易地進行系統除錯工作。


通用架構,跨平台不是夢

不同於市場上其他的 AI 平台,聯發科技 NeuroPilot 可以跨平台和跨產品線,這就需要 NeuroPilot 具有跨操作系統的通用架構。雖然架構表層看起來長得一模一樣,但在底層是可以供開發者實現一些差異化的。也就是說,在安卓平台開發的應用,可以不做任何修改就可以直接搬到 Linux 上運行,即只需編寫一次程序,就可以應用到各個平台上,從而大幅減少開發商的資源投入。






































以上就是關於聯發科技 NeuroPilot 人工智能平台的詳細介紹,看完後,有沒有覺得自己的 AI 智商多了好幾斤。

如果已經頭暈的你,記住下面這句話就可以啦。

「聯發科技 NeuroPilot 是一個以異構運算為基礎的、整合軟硬體、完整、開放的人工智能平台,致力將終端人工智慧(Edge AI)帶入各種跨平台設備。