AI+AR
人工智能(AI)与增强现实(AR)的概念在最近乃是当红炸子鸡,火遍大江南北。AI 与 AR 的概念区别不小,但是也有不少交集。目前,AI 最热门的应用就是在计算机视觉(Computer Vision,CV)领域,而 AR 的实现(图像渲染)自然也离不开 CV 。举个例子吧!《龙珠》想必大家都看过(如果你没看过说明你很年轻!大叔很羡慕你!),里面的战斗力探测眼镜就是 AI + AR 的一个极好例子:战斗力探测眼镜用基于 CV 的 AI 首先做物体识别,把眼镜视野里面的战斗对象与背景区分开,然后用一套AI算法去评估该对象的战斗力,最后把战斗力标注到眼镜视野里的目标周围(什么?战斗力只有5?),从而实现 AR 。
《龙珠》里的战斗力探测眼镜是AI+AR应用的一个极好例子
HoloLens 与 HPU
如今,实现战斗力探测的 AI + AR 技术已经不再为赛亚人所独有,地球人也拥有了这项技术!例如,微软的 HoloLens 在已公布的 AI + AR 设备中可谓佼佼者,凭借微软的金字招牌以及酷炫的演示动画吸引了无数科技爱好者的眼球。
目前,用于 AI / AR 的处理器架构该如何设计仍然处于探索阶段,Intel 想借机推自己基于 CPU 的方案,Nvidia 想利用 GPU 弯道超车,而 Qualcomm 也拼接 Snapdragon 平台在一边虎视眈眈。在今年的商用芯片峰会 HotChips 上,微软公布了应用在 HoloLens 中的处理器芯片(HoloLens Processing Unit, HPU)。HPU 的架构和 CPU 以及 GPU 都不相同,可谓是开创了 AI / AR 领域芯片的新范式。我们采访了 UCLA 从事人工智能芯片和硬件研究的 Li Du, Yuan Du 以及 Yilei Li 博士,接下来将详细分析 HPU 芯片架构并展望未来 AI / AR 芯片设计中的范式转换。
HoloLens可以实现众多AI/AR应用
微软公布的 HoloLens 系统架构如下图所示。就在绝大多数移动设备的处理器都基于 ARM 结构的今天,HoloLens 的主处理器使用的仍然是 Intel 的 Cherry Trail SoC(包括CPU与集成的GPU),让人感叹维持了二十余年的 Wintel 联盟坚不可破。微软最新公布的 HPU 也可以在图上看到,HPU 严格来说是一款协处理器,其作用是协助主处理器加速运算一些专门的运算(如用于 CV 的矩阵运算,用于 CNN 的卷积运算等)。
在 UCLA 有多年异构运算与互联研究经验的 Yuan Du 博士表示,「由于 CPU 必须要考虑通用性而无法对一些 AR / VR 运算进行优化,因此在应用场景中会大量遇到的专门运算如果都交给 CPU 做会使系统的整体性能变得很差,于是我们需要设计一款专用的加速器来协助加速这些运算,微软在这里的加速器就是 HPU 。HPU 通过 PCIe 高速接口与主处理器所在的 SoC 通信,不过 PCIe 的功耗其实是比较大的,未来可望会用上更先进的互联技术。」
微软公布的 HPU 处理能力达到每秒 1T(10^12)次像素运算,功耗则小于 4W。HPU 能够融合来自 5 个摄像头、一个深度传感器以及运动传感器的输入信息,将信息压缩并传送到主处理器。此外 HPU 还能实现 AI 手势识别。据说微软曾评估了来自于各大厂商的商用芯片,却没有找到任何一款产品能满足系统算法对性能的要求。这款微软自己开发的 HPU 是采用台积电 28nm 工艺,内含 24 颗可重配置的 Tensilica 数字信号处理器(DSP)核心以及高达 8MB 的 Cache。除此以外,还有专用加速器用于给各类专门任务加速。
HoloLens 系统架构,HPU 与显示设备紧密耦合并且和主处理器 Intel Cherry Trail SoC 由高速 PCIe 接口互联
HPU 有何不同
如果仔细观察 HPU 架构,会发现它与目前借着 AI / AR 及人工智能风口飞地很高的 GPU 有点像,但并不相同。说它们“有点像”是因为 HPU 和 GPU 都有不少计算核心,这样可以实现数据的并行处理。HPU 和 GPU 要处理的都是画面中的一个个像素,而像素之间其实并没有关联性,因此可以由并行处理来提高执行效率。与之相对的是 CPU,为了照顾通用性 CPU 无法放置大量的计算核心来实现大规模并行运算,因此完全用 CPU 来处理 AI / AR 操作会导致速度很慢。另一方面,HPU 与 GPU 之间也有很大的不同。首先,HPU 上的计算核心是可配置 DSP 而非类似 Nvidia GPU 里面的 CUDA core。另外,HPU 的片上Cache(用于快速存取数据)高达 8MB,远大于 GPU 的片上 Cache 容量(Tegra X1 上Cache 仅有 2 MB)。这是为什么呢?
Du Li 和 Yilei Li 博士表示,「归根到底,这些都是因为应用的区别。GPU 就像一艘巨轮,设施豪华(运算精度高),耗油巨大(功耗巨大),在处理海量的数据时可以实现非常高的吞吐率,但是实时性并不好:你可以想象巨轮在行驶前需要做许多准备工作,并不是指令一下说走就走(延迟较大)。当然在需要处理的数据量足够大时,这些准备时间相对于计算时间来说可以忽略不计。HPU 就像一艘小船,轻便而省油(功耗较小),而且指令一下可以说走就走(延迟较小),虽然运算的吞吐量不能和 GPU 相比但是实时性很好。
在 HoloLens 中,实时性非常重要:例如,在你的头部移动时,你显示的内容也要相应改变,如果在你头部移动和现实内容改变之间存在明显延迟则使用者会感到晕眩(这也是为什么很多人在玩 3D 游戏时会头晕的原因)。另外,由于 HoloLens 是移动设备,因此芯片的功耗需要严格控制,功耗巨大的 GPU 架构并不适合。」