撐起移動AI江山的浮點計算,到底是如何工作的?

naojiti發表於2019-01-25

如果要為手機行業的未來尋找一個技術錨點,AI絕對當之無愧。

不僅廠商們紛紛孵化出了眾多或真或假的手機AI軟硬體解決方案,消費者決策也開始越來越多地向手機的AI應用傾斜。與此同時,AI也讓手機效能的理解和認知門檻變得越來越高高了。

比如在眾多AI手機硬體評測中,普遍堆砌著一大堆玄幻的技術名詞和數值。具體強在哪裡,能夠優化哪些功能,別說普通消費者,很多程式設計師都未必能說出個所以然。

舉個例子,移動AI晶片的指標中,都離不開浮點數的運算能力,也就是FLOPS(floating point operations per second,每秒計算的浮點數目多少),作為評估手機效能強弱的標準之一。

那麼,浮點運算究竟是怎樣工作的?為什麼會成為手機AI效能的評測標準?又將對我們的生活起到什麼幫助?還真是雲裡霧裡捉摸不透。

今天我們就來嘗試用說人話的方式回答一下這些問題,通過浮點計算這個小切口,窺視一下手機AI技術版圖的冰山一角。

什麼是浮點計算?

首先有必要解釋一下,什麼是浮點計算。

通俗來說,就是一種可以通用表示所有數字的科學計數法。它的表示形式為0.*****×10^***,其中小數點前面是定點小數,後面則是一個定點整數(10的N次方)。比如傳統的1024整數,浮點數就表示成0.1024×10^4。

不難發現,浮點數可以表示出任意一個整數和小數,並且比普通格式的計數方式數位更長,因此計算難度和精度也更高。而利用浮點數進行的運算就是浮點運算。

浮點運算到底有多重要呢?這麼說吧,目前所有的計算機處理器都採用的是浮點運算,手機AI晶片也是以浮點運算能力為基礎展開的。

這種運算能力究竟蘊含著怎樣的能量?又是如何取代定點計算成功上位的?

天選之子:浮點計算髮展史

要搞清楚浮點運算的應用價值,有必要回溯一下,這種計算方式是怎麼來的。

最早將“浮點運算”作為計算機處理引擎概念,是萊昂納多·託雷斯和奎韋多在1914年提出的。直到1938年,第一個使用二進位制浮點數的計算機Z1才正式誕生。1942年,第一個帶有浮點運算硬體單元的計算機Z4出現。到了1946年,貝爾實驗室推出的Mark V,已經可以實現十進位制浮點數運算。

在接下來的數十年間,帶有浮點運算硬體的“科學計算機”開始風靡。1985年,浮點運算的標準IEEE754問世。

而1989年英特爾i 486的推出,正式奠定了浮點運算在計算機歷史上的基礎地位,開始作為標準功能被應用在個人計算機上,處理器的浮點運算能力也成為重要的晶片效能評價指標,代表著硬體製作技術的不斷進步。

進入AI時代,隨著機器學習在電腦及手機等硬體端的普及,浮點運算更是有了新的用武之地。

各種主打AI功能的手機晶片,比如蘋果A11、華為麒麟系列、高通845、谷歌PVC等等,都是以浮點運算作為基本運算單元。預計未來,還有更多的AI功能會以浮點運算展開,直接影響手機AI的發展程式和感官體驗。

那麼,為什麼在處理AI任務時,浮點運算更加遊刃有餘呢?恐怕還要從它的特殊能力說起。

焦不離孟:為什麼移動AI離不開浮點運算?

浮點運算之所以成為手機AI晶片的標配,與新運算需求和傳統硬體之間的矛盾是分不開的。

我們知道,AI任務大多是通過機器學習演算法模仿神經網路來完成的,需要更大的算力和能效來支撐大型矩陣運算。

而傳統CPU的運算邏輯,是進行多組運算並統籌全域性,一次帶動不同部類的系統工作,類似於多面手。在面對神經網路這樣龐大、單一、重複的高併發任務指令時,就有點難以負荷。因此,浮點運算能力更高的GPU就取代CPU,成為AI晶片的首選。

其次,AI手機晶片不僅要更快地處理資料,保證使用中不卡頓,還要能夠支撐大量多媒體技術應用,對手機畫面進行更好的渲染和呈現,這種手機功能的升級需求,傳統的定點運算力不從心,只能交給數位更長、精度更大的浮點運算。

總之,更多的深度學習任務、更大的算力需求、更高的計算精度,加上硬體本身的迭代升級,共同推動浮點運算成為移動AI效能的關鍵指標。

拉開差距:浮點運算的差異在哪裡?

儘管市面上的AI晶片都擁有浮點計算能力,但最終的呈現效果卻各不相同。

有的AI手機能夠帶你裝X帶你飛,有的則處理簡單的識別任務都要等到天荒地老。它們之間的浮點運算能力又有哪些區別呢?

簡單來說,評估AI晶片運算能力的指標主要有三個:

1.吞吐率(throughput)。處理AI任務需要支撐大規模的並行運算,而吞吐率就直接決定著晶片計算速度。這有點像水管,直徑越大,可以同時對外流出的水就更多。

2.FLOPS。即每秒所執行的浮點運算次數。為了衡量吞吐率,就可以折算到具體的浮點運算元量上來。原則上來說,FLOPS越高,單位時間內處理的資料量越大,表現出的影像數量峰值也就越高,從而可以顯示出更加細膩的影像。

3.精度。那麼,是不是隻要看FLOPS值就可以判斷效能高低了呢?並不是。浮點數還會根據精度分為多種型別,以滿足不同的計算需求,比如單精度、雙精度、擴充套件雙精度。

精度會根據任務場景、成本控制、產品線定位等來設計和應用,不同維度上的比較往往失於片面。比如英偉達就在geforce產品線中遮蔽了大部分的雙精度單元,卻在tesla產品線中全部開啟。

總而言之,浮點運算效能對於3D圖形處理和大規模並行任務的表現起到了至關重要的作用。

但其對手機效能的影響大小,取決於硬體設計、處理效率、資料精度等要素的綜合做功。

從理論到應用:浮點運算能給使用者帶來什麼?

說了這麼多技術上的東西,不難發現,浮點運算能力並不是只看數值就能夠判斷出來的。

而對於絕大多數人來說,可能也根本不care複雜的技術概念和參數列。消費者能夠感知到的功能和實際價值,才是真正的意義所在。

那麼落地到具體應用上,浮點運算究竟給端側AI帶來了哪些價值呢?主要體現在三個方面:

首先是帶來了全新的視覺體驗升級。

如今的手機新品釋出會,要是不講點機器視覺的應用,比如拍照識花、視訊美顏、虛擬現實、人臉識別、遊戲渲染等等,都不配被成為AI手機。而這些功能的實現,都離不開浮點運算保質保量的影像處理能力。

另一個改變則是浮點運算對終端算力的加持,減少了AI任務對雲端計算的過度依賴。

在端側就能夠完成一部分機器學習、神經網路方面的計算,一方面可以解決計算的延遲問題,讓手機可以實時處理AI任務,執行更加流暢;另一方面,使用者的資訊無需全部上傳到雲端處理,安全性更有保障。

而更大的價值在於,浮點運算能力的提升,還能夠幫助手機解鎖更多的AI想象力。

浮點的計算速度本身就比定點運算要慢,如果能力欠佳,在面對神經網路和卷積運算的算力要求時,就會力不從心,不僅運算緩慢,還需要大量耗能。又慢又耗電,還要將各種各樣的AI功能都載入到一部手機裡,絕對是一場災難。

幸好,移動晶片浮點運算能力的不斷提升,正在打破手機端的算力桎梏,比如新的TPU就可以在神經網路運算上達到高計算吞吐量,同時能耗和物理空間都很小。

當運算能力不再是問題,移動端AI應用開發的活力也將被徹底釋放,更多創意能夠在手機端開花結果,可以被普通使用者所感知到的AI功能自然也就越來越多。

未來腦洞:浮點運算譜寫的手機功能狂想曲

這裡不妨一起開一下腦洞,浮點運算能力的提升,有可能幫助哪些手機AI應用駛上快車道?

目前看來,至少在以下三個方面存在無限可能:

1.流資料處理。浮點運算能力直接影響處理器的多媒體、3D圖形處理,從而改變大量多媒體技術應用的體驗。

比如實時大規模的資料運算能力,讓人臉識別、人像分割、視訊風格化、虛擬現實等技術在端側進行,更高耦合度的有趣應用(比如annimoji、虛擬主播等)也從理論變為現實,作用於視訊、直播、攝影等功能,創造出新的功能亮點。

2.識別功能。手機AI功能的另一個特點,則是識別和決策能力,比如識別文字(翻譯)、圖片(攝影)、商品(購物)、情緒(互動)、場景(主動服務)等等。

浮點運算能力的進一步提升,將讓手機的智慧化、人格化成為可能,從工具進化成真正的智慧伴侶。

3.IoT。更進一步,越來越多的智慧硬體進入AI互動模式,如果手機的計算傳輸效率被攻破,那麼完全可以作為眾多IoT裝置的大腦中樞,讓智慧硬體互動圍繞手機端展開。

用手機操作和管理智慧家電、無人汽車、體聯網裝置等,將為產業創造出新的價值點。

總體而言,浮點計算的進一步發展,帶給手機的核心改變在於,AI任務所需要的大規模並行運算將不再是問題。

澎湃的算力為廠商和開發者搭建了新的想象力舞臺。如何利用好這一紅利,放飛腦洞創造新應用,構想出未知功能,或許是接下來各個玩家拉開競爭差距的關鍵機遇。

再多說兩句……

當然,在看重浮點運算能力之時,不能忽略這樣一個現狀:浮點運算只是移動AI基礎能力的一個組成部分。它與處理器能力、記憶體的多少、演算法的優劣,甚至作業系統、應用開發等等因素綜合做功,才最終決定一部手機的AI輸出能力。

因此,對於手機廠商來說,除了單點效能的提升之外,也需要在生產成本、開發者生態、市場教育等方面同時發力,最大限度促進移動應用的AI化,才能最終讓算力的提升真正釋放到移動端軟硬體上,化為真實可感的使用者體驗及產業價值增長點。

到那個時候,使用者也就不需要再為複雜的數值和技術名詞所苦惱,直接從體驗上就能感知到不同手機之間的巨大差異。

從這個角度看,浮點計算背後所隱藏的,不僅是AI的真實價值,更是手機產業的新起跑線。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2564804/,如需轉載,請註明出處,否則將追究法律責任。

相關文章