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