Re: [問題] iphoneX的「神經網路引擎」是什麼?

作者: Lizaron (Lizaron)   2017-09-14 02:34:03
認真回
雖然小弟不在Apple工作
但目前也在美國從事相關領域的研發
以下只是憑個人經驗的猜測
神經網路引擎應該是用來做神經網路的inference
並沒有像有些推文有提到的training的部分(這目前還是Nvidia GPU的強項)
一個精準的network目前在GPU Cluster上都要Train幾天甚至幾個禮拜了
也就是說這個網路(基本上只是一個模擬神經的數學模型)中間的參數是事先trained好
在application端直接拿來用而已
而inference指的就是App會使用的那次
比如說你照一張狗的照片 跑過一次trained好的網路(也就是inference)
手機就會知道這個是狗
另外其實神經網路的運算早就有一段時間了
像之前FB看你的照片猜你幾歲
或是你可以直接對手機講話 手機會直接幫你轉成文字
或是像推文提到目前最紅的影像辨識
在目前的手機上早就有了
既然目前都能算了
為什麼還要有另外一個專門算神經網路的引擎呢?
那是因為目前使用神經網路的App通常都是在你要他inference的時候才會開始算
(比如說你講話的時候會先在手機上按一下)
所以用CPU或是手機上的GPU算並沒有什麼太大的問題
雖然相比training inference跑的很快
但在手機的功耗限制與運算資源有限的情況下還是一個很大的挑戰
複雜的網路一次inference就算在手機上的GPU還是要跑超過一秒的
為了支援FaceID這種隨時要待命偵測你的臉的程式
如果用原本的方法就顯得相當笨
不只算的慢又耗電
所以才會特別設計一個神經網路引擎
如果他是一個類似Google TPU的架構
除了沒有指令集的負擔之外
可以拔掉很多很耗電又用不到的記憶體暫存
還能控制運算精度(像google是直接用8-bit integer而不是預設的32-bit floating point)
除了算得快又省電
當然目前看起來只有FaceID會用到
但將來IOS App開發者就能好好利用這個引擎開發一些很酷炫的功能
這又是另一個故事了

Links booklink

Contact Us: admin [ a t ] ucptt.com