電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2016年1月10日 星期日

人工智慧太厲害了,我們該怎麼辦? (Part II)

昨天概說了人工智慧過去和未來性 (註1),在技術面上著墨不多,所以今天來談談技術面。

首先是關於「摩爾定律」,我在半年前寫了一篇「後摩爾定律的世界和台灣的產業發展」(註2),有興趣的人可以參考一下。我當時說:

「說白一點,摩爾定律是錢砸出來的。摩爾定律的黃金時代,開始於個人電腦急速成長的時代,但個人電腦的效能在十年前就已經能夠滿足大多數個人,所以「世界」對於摩爾定律的期待逐漸降低,雖然智慧手機和平板的異軍突起,但主要是希望摩爾定律能夠提供更高的性能耗能比(power-performance),然而這幾年手機平板已趨於飽和,也沒看到真正個人所需要的高性能耗能比的應用(killer apps),再加上像Qualcomm、Samsung這樣的公司上在推出新的行動晶片上屢次因為晶片過熱而踢到鐵板,所以在既然沒有消費者的需求,晶片製造商也裹足不前的情況下,自然就會降低對於摩爾定律的挹注。」

「我想,在缺乏資金挹注的情況下,摩爾定律在技術上能延續的機率不高,即便不少研究者熱中於此。除非有真正大眾需要的應用,或是再度出現軍備競賽,否則很難改變摩爾定律的終結。」

但任何事都可能有例外,不能太鐵嘴,還好我最後有加上一個以「除非」開頭的句子。人工智慧是否能成為大眾真正需要的應用,或是用於軍事用途? 我想其可能性還不小,所以我在這幾個月跟一些業界朋友說,不要再搞那些傳統的消費電子產品了,要想想如何將「智慧」加進產品之中。

怎麼把「智慧」加進小型的裝置之中? 基本上,有下列方法:

(1)由小型裝置自己做
(2)藉由網路把工作送到集中式的伺服器去做
(3)藉由網路把計算工作送到周遭多台機器分工合作
(4)上述三種的組合

先說「自己做」行不行? 現在很多人手上的手機,能做多少事情? 其實手機可以做很多事情,只是會遇到過熱和電量不足的問題,但是這兩個問題影響較大的是較長時間使用的應用,如果我們要的是「即時性的智慧」,那麼問題應該比較像是「如果手機在五秒內全速執行,能夠解決那些問題」?

舉例來說,即將出現在手機市場上的Qualcomm旗艦處理機Snapdragon 820有多厲害呢? 據說(註3) 這顆晶片的 4核CPU比前一代S810的8核快35%,省30%的電,支援600Mbps的無線網路,其中的GPU也快了40%、省40%的電,還支援OpenCL 2.0。不只如此,他還有一顆名為Spectra的影像訊號處理機(image signal processor),可以加速影像處理和支援電腦視覺(computer vision)。

要自己做,可以,要想辦法把各種運算能力整合到晶片上。要讓手機晶片有智慧,不能只靠跑在CPU上的純軟體,一定不夠力的。有些應用可藉由GPGPU來加速以資料為主的運算(data-parallel computing),例如做機器學習的開源軟體,Mahout和Caffe,都可以用OpenCL程式碼跑在GPU上。另外,以影像和聲音為主的應用,則最好設法在源頭解決問題,也就是說在感測器紀錄影像或聲音之後馬上送到訊號處理機,使用專門特殊化的(specialized)計算架構來提升效率,其實電腦視覺也可算是初步的人工智慧。

從上述的例子,可以看到「特殊化」處理機的趨勢越來越明顯,因為用CPU跑純軟體太沒有效率。時下很多人討厭寫C程式,喜歡用像是Java, Javascript, Python之類的高階語言來開發應用,但是對於開發與效能息息相關的系統軟體的人來說,光是懂得寫C程式可能還不夠,要懂得multithread、OpenCL、CUDA才會善用多核心的CPU/GPU,要懂得訊號處理機的架構和專用語言才能發揮其能力,甚至要會使用「硬體描述語言」才能用FPGA來加速計算。

我預測未來這十年,是大家各憑本事、各顯神通,想盡辦法來打造智慧系統的黃金年代。我們將會看到百家爭鳴,在計算架構和軟體設計上不斷推陳出新,快速發展。當然,演算法也極為重要 -- 再厲害的運算能力,也挽救不了愚笨的演算法。而且,針對大系統所開發的演算法和軟體,不見得適用於小機器,例如把Google釋出的Tensorflow裝在小機器上,可能會發現它的效率不彰,所以各公司可尋找屬於自己的利基市場(niche)。

當然,如果不限定要帶在身上,智慧型裝置也可能出現在車上、電線桿上的監視錄影機。因為體積和電力供應較大,我們有機會將百倍於手機的運算能力放進這些裝置。所以某些人工智慧的應用,可能會先出現在這類裝置上,例如前幾天的CES 2016,我們看到NVIDIA和Qualcomm都推出車用的處理機(註4)(註5),來搶攻這類市場。

這是新興市場,我希望台灣的業界人士看到以上幾段會頗為振奮,尤其是那些在硬體公司寫系統軟體的朋友們,這是值得把握的機會。如果您能夠針對某個智慧型應用設計出又快又省電的系統,那就有機會逐鹿天下。不過呢,要把握機會,必須先搞清楚這些研發工作將會需要「緊密的垂直整合」,最好有一個人才濟濟的團隊,針對應用的需求規劃系統軟硬體,要有「軟體為主,硬體為輔」的思維,最好要找到軟硬兼備的系統架構師(system architect)來領導研發工作,如我在這篇專訪上談到的(註6) 。

當然,我們也可如第二種方法,「藉由網路把工作送到集中式的伺服器去做」,來提升小型設備的智慧。但首先,網路傳輸需要時間,不利於即時性的應用;其次是隱私性和安全性的問題,我們未必希望讓大公司那麼清楚的知道我們的一舉一動,所以也可能不希望把全部的工作送到集中式的伺服器去做;再來,極為耗費運算資源的工作,除非Google能夠由此獲的廣告利益,否則它未必願意提供免費的伺服器資源來幫大眾做這個,所以並非所有應用都會有免費服務。

同時,在資料中心做人工智慧的運算,更需要高效率的加速技術。因此現今很多大公司都在積極找高手來加速需要大量運算的服務,例如微軟有個專門以FPGA加速資料中心服務的研究團隊Catapult,陸續發表加速搜尋引擎和機器學習的技術(註7)。

第三種方法與第二種方法的差別,在於利用較近的機器做計算來縮短時間,選擇能夠信任的機器來保護隱私,以及以互助會的模式來分享互惠資源。我們做過這類模式的相關研究,也實際建構出系統,例如這篇將Android程式中大量數據處理的工作轉移其他機器的作法(註8)。雖然目前還缺乏需要這種模式的高運算量行動應用,不過我相信在未來身邊需要人工智慧的時候,應該會有這類的需求和做法。

實際的作法,也可能是以上三種方法的排列組合。至於如何排列組合,就考驗系統架構師的能力。台灣現在很缺系統架構師的人才,缺到業界連如何善用系統架構師、去哪裡找這些人、如何培養這種人都不知道。以前做代工不需要這種人才就算了,如果現在還不知道,那就難做了。現在業界有不少地方都說要做人工智慧,但我奉勸想加入這類團隊的朋友,先看看帶頭大哥懂不懂,有沒有兩把刷子再說。

(註1) 人工智慧太厲害了,我們該怎麼辦?
臉書版: https://www.facebook.com/shihhaohung/posts/1072464976129323
部落格: http://hungsh-ntucsie.blogspot.tw/2016/01/blog-post.html

(註2) 後摩爾定律的世界和台灣的產業發展
臉書版: https://www.facebook.com/shihhaohung/posts/968793609829794
部落格: http://hungsh-ntucsie.blogspot.tw/2015/07/blog-post_13.html
轉載於Inside: http://www.inside.com.tw/2015/07/14/post-moores-law-and-the-industry-development-in-taiwan

(註3) Qualcomm's Snapdragon 820 INSANE Specs & Features DETAILED
http://www.knowyourmobile.com/samsung/qualcomm-snapdragon-820/23126/qualcomm-snapdragon-820-release-date-specs-features-android-n-launch

(註4) NVIDIA推出車用人工智慧電腦NVIDIA DRIVE PX 2,號稱性能比 Macbook Pro強150倍http://www.techbang.com/posts/40654-nvidia-at-ces-not-flagship-graphics-card-but-strong-for-a-taxi-containing-artificial-intelligence-supercomputers-nvidia-drive-px-2

(註5)
【CES 2016】高通發表 Snapdragon 820A 車用處理器,具機器智能神經學習系統
http://technews.tw/2016/01/08/qualcomm-snapdragon-820a-automotive-processor/

(註6) 深化產學合作!向沒有能力領導創新的大企業說掰
http://www.bnext.com.tw/article/view/id/38432

(註7) Project Catapult
http://research.microsoft.com/en-us/projects/catapult/

(註8) Shih-Hao Hung, Tien-Tzong Tzeng, Gyun-De Wu, Jeng-Peng Shieh. A Code Offloading Scheme for Big-Data Processing in Android Applications, Software—Practice and Experience, first published online May 2014.
http://onlinelibrary.wiley.com/doi/10.1002/spe.2265/abstract

沒有留言:

張貼留言