blog

更快的大数据分析

<p>作者:Larry Hardesty我们生活在大数据的时代,但大部分数据都是“稀疏的”想象,例如,一张庞大的表格,将所有亚马逊的客户与其所有产品相对应,每个产品的数据为“1”给定客户购买和“0”否则表格大多数为零随着稀疏数据,分析算法最终做了大量的加法和乘以零,这是浪费的计算程序员通过编写自定义代码来避免零条目,但是这个代码很复杂,它通常只适用于一系列问题</p><p>在计算机协会系统,编程,语言和应用会议:人类软件(SPLASH)会议上,麻省理工学院的研究人员,法国替代能源和原子能能源委员会和Adobe Research最近推出了一个新系统,可以自动生成针对稀疏数据优化的代码</p><p>该代码比现有的非优化软件提供100倍的加速ware包和它的性能可与用于特定稀疏数据操作的精细手动优化代码相媲美,同时对程序员的工作要求少得多该系统称为Taco,用于张量代数编译器在计算机科学用语中,数据结构像亚马逊表被称为“矩阵”,张量只是矩阵的高维模拟如果亚马逊表也根据客户在亚马逊网站上的产品评级和产品中使用的词语映射客户和产品评论,结果将是一个四维张量“稀疏表示已存在超过60年,”麻省理工学院电气工程和计算机科学教授(EECS)和新论文的高级作者Saman Amarasinghe说</p><p>知道如何为它们自动生成代码人们想出了一些非常具体的操作 - 稀疏矩阵向量乘法,稀疏矩阵向量乘法加上向量,sp ass矩阵 - 矩阵乘法,稀疏矩阵 - 矩阵 - 乘法我们做出的最大贡献是当矩阵稀疏时为任何张量 - 代数表达式生成代码的能力“在本文中加入Amarasinghe是第一作者Fredrik Kjolstad,麻省理工学院毕业生EECS的学生; Stephen Chou,也是EECS的研究生;法国替代能源和原子能委员会的David Lugato; Adobe研究中的Shoaib Kamil定制内核近年来,张量的数学处理 - 张量代数 - 不仅对大数据分析而且对机器学习也至关重要</p><p>自从爱因斯坦时代以来,它一直是科学研究的主要内容</p><p>处理张量代数,数学软件已将张量运算分解为它们的组成部分因此,例如,如果计算需要将两个张量相乘,然后加到第三个,则软件将在前两个张量上运行其标准张量乘法程序,存储结果,然后运行其标准张量添加例程然而,在大数据时代,这种方法过于耗时为了在海量数据集上进行高效操作,Kjolstad解释说,每个张量运算序列都需要自己的“内核, “或计算模板”如果你在一个内核中执行它,你可以一次完成所有操作,你可以让它更快,而不是必须在内存中输出输出,然后将其读回来,以便将其添加到其他内容中,“Kjolstad说”你可以在同一个循环中完成它“计算机科学研究人员为一些最常见的张量操作开发了内核机器学习和大数据分析,例如Amarasinghe列举的那些</p><p>但是可能的内核数量是无限的:例如,用于将三个张量加在一起的内核与用于将四个加起来的内核不同,并且内核用于添加三个三维张量与内核不同,用于添加三个四维张量许多张量操作涉及将一个张量的输入与另一个张量相乘如果任一条目为零,它们的产品也是零,并且用于操纵大型稀疏矩阵的程序可以浪费大量时间添加和乘以零稀疏张量的手动优化代码识别零条目并简化涉及它们的操作 - 要么携带完全添加或省略乘法转发非零条目 这使得张量操作更快,但它需要程序员做更多的工作</p><p>两个矩阵相乘的代码 - 一个简单类型的张量,只有两个维度,如表 - 例如,如果矩阵已满(意味着没有条目可以省略)但是如果矩阵稀疏,相同的操作可能需要100行代码或更多代码,以跟踪遗漏和缺陷输入Taco Taco自动添加所有额外代码程序员只需指定张量的大小,无论是完整的还是稀疏的,以及应从中导入其值的文件的位置对于两个张量的任何给定操作,Taco构建一个分层图,首先指示来自两个张量的哪些配对条目非零,然后,每个张量的哪些条目与零配对它简单丢弃的所有零对Taco也使用有效的索引方案来仅存储稀疏张量的非零值零舍入包括来自亚马逊的公开发布的张量,它根据购买情况映射客户ID号码,从评论中剔除描述性术语,占用107艾字节数据,或大约是所有谷歌服务器估计存储容量的10倍但是使用Taco压缩方案它只需要13千兆字节 - 足够小以适应智能手机“过去二十年来,许多研究小组都试图解决稀疏矩阵计算的编译器优化和代码生成问题,但收效甚微,”​​萨迪说</p><p> Sadayappan,俄亥俄州立大学计算机科学与工程系教授,没有参与研究“Fred和Saman最近的发展代表了这个长期存在的问题的根本性突破”“他们的编译器现在使应用程序开发人员能够指定非常复杂的稀疏矩阵或张量计算在一个非常简单方便的高级表示法中,编译器a utomatically生成非常有效的代码,“他继续说道”对于几个稀疏计算,

查看所有