骁龙神经元处理引擎SDK
Qualcomm提供了专为端上运行神经元网络的骁龙神经元处理引擎(Snapdragon Neural Processor Engine)简称SNPE。 目前在Qualcomm? 骁龙 600系列部分平台和820、835上都得到了支持。通过这个引擎,算法可以运行在GPU和DSP上,速度和功耗相对CPU可以得到大幅提升。目前支持的架构有Caffe,Caffe 2,Tensorflow,我们提供转化工具和benchmark工具,方便算法厂商的开发调试。
以Qualcomm? 骁龙TM 835移动平台上的测试为例,得到的结果是同样的神经元网络,在GPU上运行比CPU上运行平均快4倍,在DSP上运行比CPU快16倍;功耗上,在GPU上运行的功耗是CPU上的1/8,在DSP上运行的功耗是CPU上的1/25。
使用SNPE SDK的基本流程是以TensorFlow、caffe、caffe2做的模型,配置调用GPU,DSP或CPU的API,然后通过转换工具转换成在DLC格式,再通过SDK让算法在骁龙移动平台三种内核上运行,实现各种各样的功能,例如人脸识别、语音识别、文字识别等功能。换言之,Qualcomm SNPE SDK中提供了现成算法和函数,诸如卷积、池化等常用函数都已将做好,算法开发者直接调用即可。同时还支持用户定义层(User Defined Layer, UDL)。
关于软件算法,值得一提的是,过去是传统算法,现在基于机器学习的算法,速度更快效果更好,而且功耗更低,开发更为方便。此外随着算法的进步,对硬件的依赖度降低,例如要拍照清晰,过去通常要高像素分辨率,现在可以不用很贵的硬件,依靠算法提升效果。
终端与云端相辅相成
那么,相比市面上的一些硬件处理器,Qualcomm的特色及与他们的关系是什么?
目前AI芯片有两种形态,一种是像Qualcomm一样是做在一个SoC中,特点是体积更小、功耗更低,运算速度快,因为CPU、GPU和DSP等计算内核都做在一个SoC上,会对数据搬移、延迟和功耗等进行优化。未来随着运算要求的提升,也许会出现专门运算Neural Network(NN,神经网络)的核。第二种形态,是一些公司做的所谓的AI芯片,实际上是在主处理器外做的协处理器,因此主芯片和外置芯片之间的大量数据搬移、交互等将是挑战。
同样是NN芯片,各家的定位是有差异化的。例如FPGA较为适合在云上或车载等对功率和体积不太讲究的应用场景。一些IP公司也推出了AI架构和指令集,但目前还没有到定论时。因为各种技术都是演进过程中,最终要看市场的选择。
Qualcomm与很多云端处理器厂商是相辅相成的关系。例如云端处理器的GPU非常强大,培训/training做得非常好,但功耗不理想,据悉某专用神经元网络芯片功耗高达30W。云端适合模型的培训,训练后的结果可转移到端去运行。骁龙终端芯片目前不做培训,但十分擅长运行。 “我们的生态成长有赖于云端,云端的模型做得越好,越有利于我们AI技术的实现和落地。”刘学徽经理强调。
已与Facebook合作
实际上,Qualcomm? 骁龙TM 移动平台在手机端也有靓丽的业绩。例如今年4月18日,Facebook 和Qualcomm宣布合作支持 Facebook 开源深度学习框架 Caffe2 和Qualcomm? 骁龙TM 神经处理引擎(NPE)框架的优化。Facebook将在其所有安卓应用中集成SNPE SDK, 运行在骁龙移动平台上时,比没有SNPE的速度提升5倍。
随着中国手机与AI的发展,期待会有更多的中国算法公司开发手机上AI应用!