美媒:研究人员开发新软件令大数据分析速度快百倍
美媒称,在美国电子计算机协会的系统、程序、语言和应用程序大会上,来自美国麻省理工学院、法国替代能源与原子能委员会、奥多比系统软件公司的研究人员展示了一种能针对稀疏数据编写出优化代码的新系统。与现有的非优化软件包相比,这种代码能将数据分析速度提高100倍。
据美国每日科学网站10月31日报道,人们生活在大数据时代,但大多数数据却是“稀疏”的。比如,想象一下,一张巨大的图表绘制出了亚马逊网站的所有顾客与所有产品之间的关系,如果用1来表示某个特定顾客购买的每件产品,用0来表示没有购买的产品。那么这张图表上的绝大部分是0。
对于稀疏数据,分析算法会做大量0的相加和相乘,而这种计算是无用的。为了避免这种情况,程序员会通过编写定制代码来避开0项,但这种代码十分复杂,通常只适用于少量问题。
在美国电子计算机协会的系统、程序、语言和应用程序大会上,来自美国麻省理工学院、法国替代能源与原子能委员会、奥多比系统软件公司的研究人员展示了一种能针对稀疏数据编写出优化代码的新系统。
报道称,与现有的非优化软件包相比,这种代码能将数据分析速度提高100倍。它的性能可与针对特定稀疏数据精心手动优化的代码相媲美,而程序员要做的工作却少得多。
该系统名为Taco,即“张量代数编译器”的英文缩写。在计算机学术语中,像之前所说的亚马逊网站图表那样的数据结构被称为“矩阵”,而“张量”就像是一种更多纬度的矩阵。
近年来,张量的数学运算——张量代数——对于大数据分析和机器学习都变得至关重要。自爱因斯坦时代以来,它也一直是科学研究的一个主题。
以往,在处理张量代数时,数学软件会先把张量运算分解成各个组成部分。例如,如果某个运算过程需先把两个张量相乘,然后再与第三个张量相加,那么软件会对前两个张量运行标准的张量乘法程序,保存结果,然后再运行标准的张量加法程序。
但在大数据时代,这么做却太耗费时间。研究论文第一作者、来自麻省理工学院的弗雷德里克·舍尔斯塔德解释说,要完成对大型数据集的高效运算,那么每一组张量运算都需要自己的“内核”,即计算模板。
计算机学研究人员此前已为机器学习和大数据分析中最常用的一些张量运算编写了内核。但可能用到的内核数量是无限的:例如,用于三个张量相加的内核与用于四个张量相加的内核是不同的。
许多张量运算需将某个张量中的一项与另一个张量中的一项相乘。如果其中一项是0,那么结果也会是0,而计算大型稀疏矩阵的程序会浪费大量时间来对0进行相加和相乘。
针对稀疏张量的人工优化代码能识别0项并精简涉及0项的运算。这能大大提高张量运算的速度,但需要程序员完成大量工作。
例如,针对两个矩阵相乘(矩阵是形式较简单的张量,像图表一样只有两个维度),如果是完全矩阵的话(即其中没有一个项能被省略),可能需要12行代码。但如果是稀疏矩阵的话,同样的运算可能需要100行甚至更多的代码以跟踪被省略的部分。
报道称,Taco系统能将多出来的所有代码自动合在一起。程序员只需指定一个张量的大小、是完全张量还是稀疏张量以及用于导入数值的文件位置即可。对于任何特定的两个张量的运算,Taco系统都能绘制出一张分级图,首先表明来自两个张量的哪些配对项是非0项,然后表明来自每个张量的哪些项是与0配对的。它会把所有的0项对剔除出去。