一文读懂AI专核的“身份”

Alter聊IT

    从2018年的岁初到年尾,人工智能都是手机行业的关键词。
    手机厂商忙不迭给用户灌输这样一个认知:AI会让你的手机更智能,并推出了智能语音助手、面部解锁、照片智能分类等一系列应用。事实证明,行业趋势总会导致产业链上游的变革,处于产业链顶端的手机芯片也不例外。
    苹果A12和麒麟980都宣称搭载了NPU单元来增强手机的AI处理能力,高通特意在骁龙845的宣传中加入了“人工智能”的标签,三星刚推出的Exynos 9820成为首个集成NPU单元的Exynos系列芯片,联发科则在Helio P70中强调了“AI专核”的概念……
    如果你不是一位IC领域的专家,看到NPU、AI专核等一系列概念后势必会一头雾水,AI专核到底是什么,又扮演了什么样的角色?这正是本文的初衷。
    人工智能芯片到底是什么?
    回答这个问题之前,先来弄明白两个概念,什么是CPU和GPU?
    简单来说,CPU就是手机的“大脑”,也是手机正常运行的“总指挥官”。GPU被翻译成图形处理器,主要工作确实是图像处理。
    再来说说CPU和GPU之间的分工,CPU遵循的是冯诺依曼架构,核心就是“存储程序,顺序执行”,就像是做事一板一眼的管家,什么事情都要一步一步来。假如你让CPU去种一棵树,挖坑、浇水、植树、封土等工作都要独自一步一步进行。
    如果让GPU去种一棵树的话,会喊来小A、小B、小C等一同来完成,把挖坑、浇水、植树、封土等工作分割成不同的子任务。这是因为GPU执行的是并行运算,即把一个问题分解成若干个部分,各部分由独立的计算单元去完成。恰好图像处理的每一个像素点都需要被计算,与GPU的工作原理不谋而合。
    
    就如同一位知乎大神打的比方:CPU像是老教授,积分、微分什么都会算,但有些工作是计算大量一百以内的加减乘除,最好的方法当然不是让老教授挨个算下去,而是雇上几十个小学生把任务分配下去。这就是CPU和GPU的分工,CPU负责大型运算,GPU为图像处理而生,从电脑到智能手机都是如此。
    但当人工智能的需求出现后,CPU和GPU的分工就出现了问题,人工智能终端的深度学习和传统计算不同,借由后台预先从大量训练数据中总结出规律,得到可以给人工智能终端判定的参数,比如训练样本是人脸图像数据,实现的功能在终端上就是人脸识别。
    CPU往往需要数百甚至上千条指令才能完成一个神经元的处理,无法支撑起大规模的并行运算,而手机上的GPU又需要处理各种应用的图像处理需求。强行使用CPU和GPU进行人工智能任务,结果普遍是效率低下、发热严重。
    这就需要高通、联发科们拿出解决方案出来,不那么凑巧的是,各家移动芯片大厂的解决思路还不太一样。
    高通目前商用的旗舰处理器是骁龙845,搭载了Adreno 630 GPU,相比于上一代的骁龙835,AI处理能力提升了3倍,并且支持多个平台的神经网络系统。可能是出于对GPU性能的自信,又或许是没有意识到AI需求的来临,高通并没有独立的AI运算单元,仍然是依靠CPU、GPU、DSP等来兼职处理AI需求。
    联发科一直都是被低估的玩家,所给出的解决方案和谷歌的TPU有些类似,使用了ASIC(专用集成电路)的形式,打造了专门处理人工智能需求的AI专核,成为整合在HelioP60、Helio P70等芯片中的一小块IP。AI专核的优点在于运行速度快、功耗低,可以和CPU、GPU进行协同分工,CPU负责大型运算,GPU承担图像处理,AI专核负责深度学习相关的场景。
    文初所提到的NPU,翻译成中文就是神经网络处理器,即苹果A12、麒麟980和Exynos 9820提供的解决方案,其实也是AI专核的一种。通俗来说就是人工智能加速器,因为GPU是基于块数据处理的,但手机上的AI应用是需要实时处理的,人工智能加速器刚好解决了这个痛点,把深度学习相关的工作接管过来,从而缓解CPU 和GPU 的压力。
    可以看到,苹果A12、麒麟980、Exynos 9820的NPU单元和AI专核有着相似的原理,将CPU和GPU的计算量分开,诸如面部识别、语音识别等AI相关的任务卸载到ASIC上处理,AI专核早已成为一种行业趋势。
    只不过目前“NPU”的概念还没有完全统一,有些玩家仍以集成多个DSP核心的方式来调动资源的支持,寒武纪的IP在处理mobilenetv1/v2又有一些问题,因此突显出在这方面,联发科的步子要迈得更大一些。
    AI专核是跨越还是幻想?
    用一个“专核”来处理AI场景并非没有缺陷,比如功能单一、开发时间长、增加芯片的成本、占据手机空间,大概也是高通没有选择这种解决方案的原因。
    
    不过要判断AI专核是超前的跨越还是无用的幻想,只需要来对比几个实际的使用场景。
    以时下应用最广泛的AI人脸识别为例,这是一个“扫描检测”和“结果判断”的过程,需要在扫描过程中判断五官坐标定位、人脸属性识别、人脸特征提取等,然后在判断时根据人脸特征、人脸识别、活体验证等进行比对。人脸识别并非是纯算法方面的事情,还需要涉及到CPU、GPU、VPU、DLA 等多个运算单元。
    有媒体做过这样一个对比测试,分别是搭载联发科Helio P60、高通骁龙845和骁龙710的智能手机进行人脸识别,前者搭载了AI专核,后两者采用了软件优化的解决方案,最终人脸识别速度分别是316.5ms、687.5ms和950ms。同样都定位在中端处理器,联发科HelioP60的人脸识别速度碾压了骁龙710,甚至比骁龙845还要节约近一半的时间,AI专核的优势可见一斑。
    为何会出现如此悬殊的差距?人脸识别的过程需要摄像头先识别出人脸,无论是光线阴暗或者面朝别处,然后精准判断脸部的特征点,比如眼睛多大、脸有多长,与已知样本进行比较,确定这个人是谁。整个过程中需要极高的算力支撑,拥有AI专核的HelioP60自然比CPU、GPU兼职处理的芯片更高效,哪怕是旗舰级的骁龙845。
    在AI专核上尝到了甜头后,联发科在HelioP70中继续升级了AI专核,AI处理能力相比于上一代提升了30%,支持更复杂的AI应用,例如人体姿态识别、 AI 视频编码、照片实时美化、场景检测、 AR 功能等等。
    
    举个例子来说,当一位美妆博主进行直播的时候,HelioP70的一个 APU(联发科为AI专核的命名)可以进行人脸侦测、实时美颜,另一个 APU 同时在做 HDR 处理以及背景虚化。如果是骁龙845的解决方案,单个DSP需要完成人脸检测、画面分割、背景虚化、HDR处理、多帧合成等流程,速度上的差异由此而生。
    再比如在拍照方面,一张高动态范围的HDR图需要三张12bit的RAW照片合成,然后通过ISP来输出最佳优化的照片。从拍照到照片输出是一个极短的时间,对运算量有着很大的要求,也往往会造成2-3秒的延时。但HelioP70的双核APU可以双线程并行加速,不到1秒的时间就可以完成照片优化,比单个DSP的处理效率更高。
    不只是联发科,华为也在麒麟980的发布会上不吝笔墨地展示了双核NPU在AI方面的优势,集中体现在图像和视频的处理上。比如说在物体的识别上,从以前识别到轮廓,到现在识别到细节;在实时的物体分割上,从过去略微粗放的场景划分,到现在的精细划分。同时麒麟980还允许实时“跟踪”多个对象,每分钟图像识别达到4500张,还支持在视频中“换背景”。
    此外,AI专核的另一大优势恐怕就是在续航上,至少苹果、华为、联发科都急于证明,并且集中在两个维度上:
    一方面AI专核的价值在于与CPU、GPU进行协同分工,CPU和GPU过多的任务堆叠只会虚耗电量、提高温度,比如虽然骁龙845的性能很强劲,在AI拍照的时候仍然会有轻微的发热情况,诸如HelioP70等搭载AI专核的产品并不存在这个问题;
    另一方面在AI专核的协同下,可以对用户行为进行学习,进而对用户的使用场景进行预测,然后进行合理的性能分配。好比说当你在游戏时让CPU高效运算,而当你在看电子书时避免性能浪费。
    写在最后
    联想到我们的实际生活,前两年对图像处理的需要还局限在美颜上,现在的短视频、直播已经对手机的AI性能表现出了更高的需求,联发科的AI专核正是为此而生。
    可以断定的是,联发科、华为等通过AI专核或类似的理念来提升芯片的AI能力,无疑押对了移动芯片的未来方向,可能在两三年后AI专核将是手机芯片不可或缺的组成,也期待这些芯片大厂们在AI专核上不断角力,不断创新,不断突破。