系统设计人员正在探索简化数据类型精度,以此实现计算性能的跳跃式提升,而且不会使精度明显降低。
机器学习推断在降低精度方面一马当先,首先是 FP16,然后是 INT16 和 INT8。研究人员正在探索进一步降低精度,甚至降到二进制。
GPU ALU 通常原生支持单精度浮点类型 (FP32),有些情况支持双精度浮点 (FP64)。FP32 是图形
工作负载的首选精度,而 FP64 经常用于一些 HPC 用途。低于 FP32 的精度通常无法在 GPU 中得到有效支持。因此采用标准 GPU 上的更低精度,除了能减少所需存储器带宽以外,作用甚微。
GPU 通常提供一些二进制运算功能,但通常只能每 ALU 进行 32 位宽运算。32 位二进制运算存在很大的复杂性和面积需求。在二值化神经网络中,算法需要 XNOR 运算,紧接着进行种群 (population) 计数。NVidia GPU 只能每四个周期进行一次种群计数运算,这会极大影响二进制计算。
如图 2 所示,为了与机器学习推断空间的发展保持同步,GPU 厂商一直进行必要的芯片修改,以支持有限的几种降精度数据类型,例如 FP16 和 INT8。例如,Tesla P4 和 P40 卡上的 NVidia GPU 支持 INT8,每 ALU/Cuda 内核提供 4 个 INT8 运算。
图 2:英伟达降精度支持
然而,英伟达面向 Tesla P40 上的 GoogLeNet v1 Inference 发布的机器学习推断基准结果表明,INT8 方案与 FP32 方案相比效率只提升 3 倍,说明要在 GPU 架构中强行降低精度并取得高效结果存在较大难度。
随着机器学习和其他工作负载转向更低精度和定制精度,GPU 厂商需要向市场推出更多新产品,他们的现有用户也需要升级平台才能受益于这种改进。