在医学图像处理和语音识别等应用程序中使用的神经网络人工智能模型对需要大量计算进行处理的非常复杂的数据结构进行操作。这是深度学习模型消耗大量能量的原因之一。
为了提高AI模型的效率,麻省理工学院的研究人员创建了一个自动化系统,该系统使深度学习算法的开发人员能够同时利用两种类型的数据冗余。这减少了机器学习操作所需的计算,带宽和内存存储的量。
现有用于优化算法的技术可能很麻烦,通常只允许开发人员利用稀疏性或对称性 - 深度学习数据结构中存在的两种不同类型的冗余。
通过使开发人员能够一次利用两种冗余的算法构建算法,麻省理工学院研究人员的方法在某些实验中可以提高计算速度近30倍。
由于系统使用用户友好的编程语言,因此可以为广泛的应用程序优化机器学习算法。该系统还可以帮助那些不是深度学习专家但希望提高其用于处理数据的AI算法的效率的科学家。此外,该系统可以在科学计算中应用。
很长一段时间以来,捕获这些数据冗余需要大量的实施工作。取而代之的是,科学家可以告诉我们的系统他们想以一种更抽象的方式计算什么,而无需告诉系统如何计算它。”纸上的纸这将在国际代码生成和优化研讨会上介绍。
首席作者拉达·帕特尔(Radha Patel)24,SM 24和高级作家萨曼·阿马拉辛格(Saman Amarasinghe)加入了她的参考书,电气工程与计算机科学系教授(EEC),计算机科学和计算机科学和人工智能实验室(CSAIL)。
削减计算
在机器学习中,数据通常表示并操纵为多维阵列,称为张量。张量就像一个矩阵,它是在两个轴,行和列上排列的值的矩形阵列。但是,与二维矩阵不同,张量可以具有许多尺寸或轴,从而使张量更难操纵。
深度学习模型使用重复的矩阵乘法对张量进行操作,并添加 - 此过程是神经网络如何学习数据中的复杂模式。在这些多维数据结构上必须执行的庞大计算需要大量的计算和能量。
但是,由于张量数据的数据安排方式,工程师通常可以通过切除冗余计算来提高神经网络的速度。
例如,如果张量代表来自电子商务网站的用户查看数据,则由于并非每个用户都审查了每个产品,则该张量的大多数值可能为零。这种类型的数据冗余称为稀疏性。模型只能通过以非零值存储和操作来节省时间和计算。
另外,有时张量是对称的,这意味着数据结构的上半部分和下半部分是相等的。在这种情况下,该模型只需要在一半上操作,从而减少了计算量。这种类型的数据冗余称为对称性。
但是,当您尝试捕获这两种优化时,情况就变得非常复杂。
为了简化流程,她和她的合作者构建了一个新的编译器,该编译器是一个计算机程序,将复杂的代码转换为一种可以由机器处理的简单语言。他们的编译器称为Systec,可以通过自动利用张量中的稀疏性和对称性来优化计算。
他们通过确定可以使用对称性执行的三个关键优化开始构建SYSTEC的过程。
首先,如果算法的输出张量是对称的,则只需计算其中一半即可。其次,如果输入张量是对称的,则算法只需要读取其中一半即可。最后,如果张量操作的中间结果是对称的,则该算法可以跳过冗余计算。
同时优化
要使用Systec,开发人员输入其程序,系统自动为所有三种对称性的代码优化了其代码。然后,Systec的第二阶段对仅存储非零数据值进行了其他转换,从而优化了稀疏程序的程序。
最后,Systec生成了现成的代码。
通过这种方式,我们获得了两种优化的好处。关于对称性的有趣之处在于,随着张量具有更多的尺寸,您可以节省更多的计算。” Ahrens说。
研究人员证明,使用Systec自动生成的代码的加速度几乎为30倍。
由于系统是自动化的,因此在科学家想要使用他们从头开始编写的算法处理数据的情况下,它可能特别有用。
将来,研究人员希望将SYSTEC集成到现有的稀疏张量编译器系统中,以为用户创建无缝接口。此外,他们希望使用它来优化更复杂程序的代码。
这项工作部分由英特尔,国家科学基金会,国防高级研究项目局和能源部资助。