GPU,FPGA,还是ASIC? 浅谈深度学习计算的硬件选型

今天是Intel主导的边缘计算联盟成立的日子. 边缘计算这个中文名字有歧义, 往往让人产生靠边站,边缘人等不好的联想.其实边缘计算的含义就是在端上的计算, 为了与以服务方式提供的计算有所区别. 端上计算的概念喊了很久, 因为所谓物联网的起起落落, 也经历过波折. 目前物联网概念再次回暖,AI又 火的不能再火, 两者结合则让人越加兴奋. 因此相关公司要召开一次胜利的大会. 这里借势谈谈个人对深度学习计算硬件平台的理解, 企图从应用领域出发,梳理相关硬件选型和可能的机会. 学识所限, 错漏在所难免. 请批判性阅读, 如有不同意见, 欢迎留言讨论.

谈及硬件平台, 先看看市场上有什么. 目前在深度学习相关硬件平台上, Nvidia一马当前, 美其名曰AI时代的发动机. N家最先看好深度学习的应用机会, 并且在硬件特别是开发环境生态上全力投入. GPU硬件计算成为各家深度学习平台的必备品, 而大家似乎忘了AMD曾经在显卡比拼时代一直对标N家的GPU. 这是因为从开发环境上对比, CUDNN对OPENCL是秒杀.  N家的用心投入也得到了充分回报, 这体现在了不断飙涨的股价上. 可以说在深度学习模型训练上, N家的GPU平台是不二选择.

除了模型的训练, 更多的实际应用是用训练好的网络来做识别, 也就是inference. Nvidia在做inference上也有了充分的布局, 其推出的P4/P40系列和相应的面向INT8计算的支持, 又领先了一步, 在服务类应用上是新的标杆.  同时在端的应用上, 特别是安防相关的视觉计算领域, Nvidia 的TK1 又歪打正着. TK1本来是面向MID也就是pad设备推出的平台, 但是在平台竞争上被人殴打出局. 碰巧当时深度学习已经开始在视觉识别领域显出王者风范, 各家都使用Nvidia的计算库, 忽然发现因为nvidia的支持, 相关的计算很容易就可以迁移到TK1平台上, Tk1又适合部分端上比如智能相机的应用场景. 因此迅速占领了相关领域的应用市场. TK1和随后的TX1也成为类似应用的硬件选型参照物.

总结一下, 做深度学习的训练, GPU无敌, 做深度学习的Inference, N家在服务端有P4/P40, 在端上有TK1/TX1, 要想推出新平台, 要踏过参照物才能走下去. 那还有机会吗? 有的! 一旦结合具体应用, 就有数不清的机会, 市场还是非常大的.

以端上的应用来举例, 目前在市场上除了TK1之外, 唯一得到实际应用的就是Movidius. Movidius的芯片的特色是高度集成(片上集成了DRAM), 和低功耗(1W左右). 因此在特别强调体积和功耗的场合, 成为了唯一选择. 当然手机芯片在类似应用上也应有发挥空间, 奈何或许因为市场太小,手机厂家看不上, 手机芯片都没有面向计算的轻量级系统支持. 没有RTOS, 甚至没有嵌入式linux, 只能跑个andorid, 从内存占用, 启动时间等方方面面都不能忍受. 问题就是机会, 期望有良心企业有志于此类开发.

之前提到, 既然通用市场已经是GPU的地盘, 其它硬件存在的机会要看应用. AI相关或者深度学习相关从大的应用领域方面是三个方向, 语音,自然语言, 图像或者说视觉. 以下分领域再简单谈谈.

先说语音,  要坦白承认, 个人对语音应用并无深刻理解. 只是从基本概念上, 当年做动态贝叶斯网络时明白, 有向图的统计推断效率秒杀无向图. 所以语音相关的识别网络重在设计优化出特定的有向图结构. 同时考虑到语音的数据量传输在当前网络条件下不是问题, 所以语音的应用当以服务为主. 也就大致是GPU的市场.  考虑到网络仍然有延迟和连接等等种种问题,  在一些应用领域, 特别是所谓物联网, 也存在端上的机会, 而语音识别任务明确, 到目前为止相关技术和性能已经可以说比较成熟了, 算法一旦稳定下来,加上应用场景有量的支持,就可以考虑做芯片。 因此语音应用可能是最早做出面向深度学习应用ASIC的方向. 我们拭目以待.

再说自然语言理解和语义. 自然语言相关的领域应用是百度,搜狗等做搜索引擎公司理应探索的方向. 因此要做这个方向绕不开和这些搜索公司的竞争. 从应用特点上讲, 因为数据量极小, 因此基本不存在端上的机会, 应用应围绕服务展开. 而自然语言相关的深度学习应用特点是网络小,品种多, 百度为此开发了自己的深度学习库.  与这个领域应用相似的一个场景是服务器端的存储SSD, 因为要理解数据才能深度优化性能, 需要结合算法定制, 服务器端的存储SSD是FPGA应用的天下.  也许服务器端自然语言理解应用也存在FPGA的空间.

最后谈谈图像视觉,  大脑皮层里视觉相关的占一多半, 因此这一块是最复杂的. 从基本的应用场景出发, 大致可以分为感知类应用, 和交互类的应用, 感知类的应用, 又可分为被动感知, 比如监控, 辅助驾驶, 主动类的感知,  比如追踪, 机器人等等. 因为应用复杂,结合具体场景, GPU也好, FPGA也好, ASIC也好, 都存在机会. 举个例子, 交互类的应用强调实时性, 一定需要做在端上,  如果对功耗,体积没有要求, 需要GPU, 如果对功耗,体积有强烈要求, 可能要做AISC. 诸如此类, 可以单写一篇文章再谈.

写到这里, 基本可以收尾了. 在此特别想说的是, 深度学习相关应用领域相关的从业人员软件和算法出身的多, 很多人对硬件开发的周期不了解, 忽视了其复杂程度, 一言不合就要做芯片, 逻辑上很难成立.  一个硬件芯片的开发周期, 如果从零起步至少3年, 同时被忽视的还有面向应用不光需要芯片,还需要做出开发工具链toolchain, 这个可能比做芯片更难, 在有经验的人员操持下, toolchain以及相关的开发生态成熟可能又需要1-2年, 这样就是4-5的周期, 以深度学习领域的变化速度, 要看清4-5年后发生的事情而提前布局, 难之有难. 再加上各路大企业入局竞争. 小公司险中求胜可能是九死一生的荆棘之路. 这样就畏缩不做了吗?

知难而上, 与诸君共勉!