张量计算自爱因斯坦时代以来一直是科学研究的重要组成部分。大数据时代,大数据和机器学习对稀疏张量(元素多为0的稀疏数组)的计算要求越来越高。最近,麻省理工学院的一个新系统可以自动生成稀疏张量计算等操作的代码,比目前常用的软件包快100倍,被誉为“编译优化领域最激动人心的进展之一”。最近几年。”.我们生活在一个大数据时代,但大部分数据都是“稀疏的”。想象一下,例如,一个非常大的表,存储了所有亚马逊客户和所有产品的对应信息。如果客户购买了某种产品,则存储“1”,否则为“0”。那么这张表中的大部分数据都会为0,面对如此稀疏的数据,分析算法最终不得不做大量的零参与的加法和乘法,这是一种计算资源的浪费。程序员可以通过编写特定代码来转义零实体来规避此类问题,但此类代码很复杂并且仅适用于非常有限的一组问题。在ACM的SPLASH(Systems,Programming,LanguagesandApplications:SoftwareforHumanity)会议上,麻省理工学院、法国替代能源和原子能委员会以及Adob??eResearch的研究人员最近推出了一个新系统,可以自动为数据生成优化代码。这样的代码比现有的未经优化的软件包快100倍。其性能可与针对特定稀疏数据操作精心优化的代码相媲美,但对程序员的工作要求非常低。这个用于稀疏代数编译器的系统称为Taco。根据计算机科学界的说法,像上面提到的AmazonSheets这样的数据结构被称为矩阵,而张量只是一种更高维的类比。如果前面提到的Amazon表还包含客户、相应的产品、客户对产品的评分以及评论中使用的词语,那么它将是一个4D张量。“稀疏表示已经存在了60多年,”麻省理工学院电气工程和计算科学教授、新论文的第一作者SamanAmarasinghe说,“但没有人知道如何为它们自动生成代码。人们会想到一些非常具体的操作——稀疏矩阵乘以向量、稀疏矩阵乘以向量加向量、稀疏矩阵乘以稀疏矩阵、稀疏矩阵乘以稀疏矩阵和稀疏矩阵相乘.我们所做的最重要的贡献是能够在矩阵稀疏时为任何张量代数表达式自动生成代码。“自定义内核”近年来,张量的数学运算——张量代数——对大数据分析和机器学习都变得至关重要。事实上,从爱因斯坦时代开始,它就成为必不可少的重要组成部分。在此之前,为了解决张量代数问题,数学软件将张量运算分解成它们的组成部分。例如,如果计算需要将两个张量相乘,然后将它们与第三个加法相乘,则软件将对前两个张量执行标准的张量乘法运算,存储结果,然后执行标准的张量加法运算。但是,在大数据时代,这种方法太费时了。Kjolstad解释说,为了对大型数据集执行高效操作,每个张量序列都需要自己的“核心”或计算模板。“如果你在一个内核中操作,你可以一次完成所有操作,你可以让它执行得更快一点,而不必先将结果存储在内存中,然后再读回以将其添加到其他东西中。”Kjolstad说,“你可以在一个循环中进行。”计算机科学研究人员已经开发出用于机器学习和大数据分析中常见张量运算的内核,例如上面Amarasinghe列出的内核。但是这些可能需要的内核数量是有限的:例如,添加三个张量的内核与添加四个张量的内核不同,添加三个3D张量的内核与添加三个张量的内核不同三个4D张量。许多张量运算涉及将一个张量的实体与另一个张量的实体相乘。如果两个实体都为0,则它们的结果也为0。在处理大型稀疏矩阵时,程序会浪费大量时间来加零和乘零。针对稀疏张量的手动优化代码可识别零实体并简化包含它们的操作——仅关注非零实体,并完全忽略零涉及实体的乘法。这使得张量运算更快,但需要程序员做大量工作。例如,如果矩阵是稠密的(没有实体可以省略),则将两个矩阵相乘的代码可能只有12OK。但是如果矩阵是稀疏的,同样的操作可能需要100行甚至更多的代码来处理应该省略的部分。引入TacoTaco完全自动添加额外的代码。程序员只需要指定张量的大小,是稀疏的还是密集的,以及存储它的值的??文件。对于两个张量上的任何操作,Taco构建了一个层次映射图,首先指示两个张量的哪对相对实体是非零的,其次指示两个张量中的哪一个与零配对。而所有0-0的配对都会被直接丢弃。Taco还使用高效的索引方案将非零值存储在稀疏张量中。亚马逊公开发布的存储客户ID、相应购买的商品和从评论中提取的描述符的张量将消耗10.7GB的数据,或者大约是谷歌服务器存储容量估计的10倍。使用Taco的压缩方案,它只占用13GB的空间,足以容纳一部智能手机。“在过去的二十年里,许多研究小组试图解决稀疏矩阵的编译优化和自动代码生成问题,但收效甚微,”??俄亥俄州立大学计算机科学与工程教授SadaySadayappan说。“最近Fred和Saman取得的进展代表了这个长期存在的问题的根本性突破,”他没有参与这项工作。“通过自动生成高效代码,他们的编译器现在允许应用程序开发人员指定复杂的稀疏矩阵和张量计算用非常简单、方便的高级符号表示。”他继续说道,“对于一些稀疏计算,编译器生成的代码已经和手工编写的代码一样好,甚至更好。它有望成为真正的游戏规则改变者,是近年来编译器优化领域最激动人心的进展之一。转载自:DeepTech网易号
