深度学习(DL)应用程序具有独特的架构特征和效率要求。因此,计算系统的选择对用户最终可以享受多大的DL饼图有着深远的影响。尽管加速器可以提供比通用计算系统(CPU)更高的吞吐量,但是在其他一些度量标准和使用方案中,CPU是首选还是更好的选择。
CPU有其长处,加速器不是万能药
稀疏DNN在大规模并行处理器上效率低下,因为它们对内存的访问不规则,并且无法利用诸如缓存切片和矢量化之类的优化方法。此外,由于步骤之间的依赖性,RNN难以并行化。类似地,诸如InceptionNet变体之类的DNN的过滤器形状为1×1、3×3、1×3、3×1等,这会导致不规则的内存访问和跨层的可变数量的并行性。由于CPU具有先进的内存管理技术,因此它们更适合于并行性受限的此类应用。例如,莱斯大学的研究人员展示了对于基于稀疏数据集(例如Amazon-670K和Delicious-200K)的完全连接的网络,可以将DL训练问题建模为搜索问题。这允许用哈希表代替矩阵乘法运算。与在GPU上基于TensorFlow的实现相比,他们在CPU上的技术提供了更高的性能。
具有批量大小的3D CNN甚至2D CNN都需要大量的内存。由于云和数据中心场景中由CPU管理的主机具有比加速器大得多的内存容量,因此在CPU上运行需要大量内存的操作不仅很有吸引力,而且经常势在必行。加速器(例如TPU)可为大批量生产提供高吞吐量;但是,对于需要实时推理的应用程序,不建议使用大批量。在小批量时,CPU通常提供有竞争力的延迟。有许多技术可用于进一步调整CPU上的DL应用程序,例如,硬件感知的修剪,矢量化,缓存切片和近似计算。我们的调查报告总结了许多此类技术。
全面:从小型可穿戴设备到大型数据中心
物联网设备和可穿戴设备的电源和区域预算都很紧张,因此可以避免过度专业化。例如,智能手表芯片无法托管用于语音/音频/图像/视频处理的单独加速器。在运行Android的智能手机中,对移动GPU或DSP的编程支持尚未完全成熟。实际上,在典型的移动SoC上,移动CPU的理论峰值性能等于移动GPU的理论峰值性能。此外,支持Web服务(例如社交网络)的数据中心随着时间的推移在计算需求方面出现了明显的波动。由于CPU对DL和非DL任务的高可用性和高效率,因此它们可以满足这种需求的变化。最后,在要求安全性认证的极端环境(例如国防和医疗)中,CPU有时是唯一的选择平台。
显而易见:经济和易用性
加速器需要较长的设计周期和大量的投资。将它们整合到现有的生态系统中需要很高的成本和工程工作。相比之下,CPU的硬件/软件堆栈已经很好地建立和理解了。它们可以在广泛的应用程序中提供合理的加速。大型公司拥有构建和维护其自定义加速器的资源,而CPU(或GPU)仍然是其他公司最可行的平台。
未来前景:比您想象的要光明
展望未来,仅提高峰值性能是不够的。为了增强广泛的DL应用程序(例如强化学习和生成对抗网络)的性能,还需要进行更多革命性的改进。最近的CPU已经开始为低精度计算提供硬件支持。一旦内存计算成熟,大量的CPU缓存将变成大量的计算单元。诸如RISC-V之类的开源ISA的开发将进一步打破加速器的可移植性和专有障碍。
感兴趣的度量标准众多且各不相同,因此最新的DL模型也是如此。我们相信,未来将不再是“通用处理器与加速器”的辩论,而是将CPU加速器的异构计算方法集于一身。
本文暂时没有评论,来添加一个吧(●'◡'●)