针对GPU的线性代数运算优化
传统的许多线性代数的函数是在CPU上运算的。前面介绍GPU时讲过,GPU的特点是大量的并行计算。线性代数中的运算许多都是矩阵运算,而矩阵运算中有大量可并行的计算。由于目前AI的计算平台以GPU为主,所以许多原来常用的线性代数函数和运算包要重新写,让这些运算充分并行。但这部分工作不影响编程框架用户的使用方式,这些优化后的接口和使用方式保持不变。
这些编程框架都是早期的机器学习编程者为了自己方便使用而积累出来的程序库。它们形成的时间不同,目的相异,解决的问题的侧重面也不同。有些框架提供的可调用程序属于底层(每个函数或运算相对基本,相当于盖房子的砖头),需要编程人员透彻理解神经网络,这些底层程序库的好处是编出来的程序灵活性高、适用性强、运行效率高。有些框架提供的调用程序属于高层(每个函数或运算复杂,相当于盖房子的预制板,如同一面墙)。不太懂神经网络的人也能很容易编程,但程序灵活性和适应性受限制,运行效率低。另外一个主要不同之处是程序库内的函数和运算的具体实现方法不同,有些效率高,有些效率低。关于各主要编程框架在使用单个和多个GPU进行机器学习中最常见的矩阵运算和卷积运算的效率比较,可以参见香港浸会大学褚晓文教授的论文《基准评测TensorFlow、Caffe、CNTK、MXNet、Torch在三类流行深度神经网络上的表现》。想更多地了解这些编程框架的读者可以参阅附录4,其列出了目前业界的主要编程框架。






本书评论