用户友好的系统可以帮助开发者构建更高效的模拟和人工智能模型。

用于医学图像处理和语音识别等应用的神经网络人工智能模型在处理极其复杂的数据结构时执行操作,这需要大量的计算。这是深度学习模型消耗如此多能量的一个原因。

为了提高人工智能模型的效率,麻省理工学院的研究人员创建了一个自动化系统,使深度学习算法的开发者能够同时利用两种数据冗余。这减少了机器学习操作所需的计算量、带宽和内存存储。

现有的算法优化技术可能繁琐,通常只允许开发者利用稀疏性或对称性——这两种不同类型的冗余存在于深度学习数据结构中。

通过使开发者能够从头构建一个同时利用这两种冗余的算法,麻省理工学院研究人员的方法在某些实验中将计算速度提高了近30倍。

由于该系统使用用户友好的编程语言,它可以为广泛的应用优化机器学习算法。该系统还可以帮助那些不是深度学习专家但希望提高其用于处理数据的人工智能算法效率的科学家。此外,该系统在科学计算中也可能有应用。

“长期以来,捕捉这些数据冗余需要大量的实现工作。相反,科学家可以以更抽象的方式告诉我们的系统他们想要计算什么,而不必告诉系统具体如何计算,”麻省理工学院的博士后、该系统论文的共同作者威洛·阿伦斯(Willow Ahrens)说。该论文将于国际代码生成与优化研讨会上发表。

她的论文合著者包括首席作者拉达·帕特尔(Radha Patel)和资深作者萨曼·阿马拉辛赫(Saman Amarasinghe),后者是电气工程与计算机科学系(EECS)的教授,也是计算机科学与人工智能实验室(CSAIL)的首席研究员。

减少计算

在机器学习中,数据通常表示为称为张量的多维数组。张量类似于矩阵,矩阵是一个在两个轴(行和列)上排列的值的矩形数组。但与二维矩阵不同,张量可以有多个维度或轴,使得张量更难以操作。

深度学习模型通过重复的矩阵乘法和加法对张量执行操作——这个过程是神经网络学习数据中复杂模式的方式。必须对这些多维数据结构执行的计算量庞大,需要大量的计算和能量。

但由于张量中数据的排列方式,工程师通常可以通过消除冗余计算来提高神经网络的速度。

例如,如果一个张量表示来自电子商务网站的用户评论数据,由于并非每个用户都评论了每个产品,因此该张量中的大多数值可能为零。这种数据冗余称为稀疏性。模型可以通过仅存储和操作非零值来节省时间和计算。

此外,有时张量是对称的,这意味着数据结构的上半部分和下半部分是相等的。在这种情况下,模型只需要对一半进行操作,从而减少计算量。这种数据冗余称为对称性。

“但是,当你试图同时捕捉这两种优化时,情况变得相当复杂,”阿伦斯说。

为了简化这个过程,她和她的合作者构建了一个新的编译器,这是一个将复杂代码翻译成机器可以处理的简单语言的计算机程序。他们的编译器名为SySTeC,可以通过自动利用张量中的稀疏性和对称性来优化计算。

他们开始构建SySTeC的过程是识别出可以利用对称性进行的三种关键优化。

首先,如果算法的输出张量是对称的,那么它只需要计算一半。其次,如果输入张量是对称的,那么算法只需要读取一半。最后,如果张量操作的中间结果是对称的,算法可以跳过冗余计算。

同时优化

要使用SySTeC,开发者输入他们的程序,系统会自动优化他们的代码以适应所有三种对称性。然后,SySTeC的第二阶段执行额外的转换,仅存储非零数据值,从而优化程序的稀疏性。

最终,SySTeC生成可直接使用的代码。

“通过这种方式,我们获得了两种优化的好处。而且有趣的是,随着张量维度的增加,你可以在计算上获得更多的节省,”阿伦斯说。

研究人员展示了使用SySTeC自动生成的代码速度提高了近30倍。

由于该系统是自动化的,它在科学家希望使用从头编写的算法处理数据的情况下尤其有用。

未来,研究人员希望将SySTeC集成到现有的稀疏张量编译器系统中,以为用户创建无缝接口。此外,他们希望利用它来优化更复杂程序的代码。

这项工作部分由英特尔、国家科学基金会、国防高级研究计划局和能源部资助。