一种基于深度学习技术的稀疏矩阵分类方法
2018 IEEE International Conference on Cluster Computing
A New Approach for Sparse Matrix Classification Based on Deep Learning Techniques
Juan C. Pichel
CiTIUS
Universidade de Santiago de Compostela
Santiago de Compostela, Spain
Beatriz Pateiro-Lopez ´
Dpto. de Estad´ıstica, Analisis Matem ´ atico y Optimizaci ´ on ´
Universidade de Santiago de Compostela
Santiago de Compostela, Spain
摘要
本文介绍了一种基于深度学习技术的稀疏矩阵存储格式选择方法。我们研究稀疏矩阵向量乘法(SpMV)的合适格式的选择,这是许多科学和工程应用中最重要的计算核心之一。我们的方法将矩阵的稀疏模式作为一个图像,使用RGB通道来编码矩阵的几个属性。因此,我们生成包含足够信息的图像数据集来成功训练卷积神经网络。使用gpu作为目标平台,经过训练的CNN网络,在90.1%的概率下选择了最佳存储格式,在测试中99.4%都达到了SpMV最高性能。
索引词:稀疏矩阵,分类,深度学习,卷积神经网络、性能
I. 引言
稀疏矩阵向量乘法(SpMV)是许多科学和工程应用的核心。SpMV在现代并行架构上有较低的峰值性能,一直都是行业的痛点。因此,它吸引了大量研究团体的关注。SpMV的性能取决于目标硬件平台和矩阵的稀疏结构。为此,针对特定的应用领域、矩阵结构和计算机体系结构[1]提出了多种存储格式。实践证明,选择合适的存储格式对SpMV的性能影响很大。压缩稀疏行(CSR)格式实际上是cpu的标准表示形式,而gpu则没有主要的格式。我们从几个经常互相冲突的因素中找到原因:最大化合并内存访问、最小化线程发散和最大化翘曲占用。
本文讨论了gpu上稀疏矩阵的最佳存储格式的自动选择问题,提出了一种基于深度学习技术的方法。我们特别考虑了卷积神经网络(CNNs),它是图像识别和分类中最重要的深度学习网络。我们的目标是演示一个简单的标准CNN体系结构,如AlexNet[3],它非常的强大,可以提供非常好的分类结果。因此,没有必要构建一个特别的CNN架构来处理这个问题。通过这种方式,我们的方法可以很容易地被研究界所采用,因为AlexNet可以在最重要和最常见的深度学习框架中使用。为了训练网络,将矩阵的稀疏图案作为图像。由于CNNs的输入大小是固定的,所以原始稀疏矩阵被缩小,以使图像中的像素表示子矩阵。像素的RGB颜色用于表示矩阵的属性。通过这种方式,我们可以创建具有足够信息的图像数据集来成功训练CNN。以两种不同的gpu作为目标平台进行了详尽的实验评估。结果表明我们的方法在分类器的全局精度方面是有好处的,达到了90%以上。此外,我们能够获得99.4%的平均最佳SpMV性能可用。最后,我们证明了使用预训练模型可以加速训练过程,而不是从头开始训练每个GPU的网络。
本文的结构如下:第II部分解释了这项工作的背景。第III部分介绍了处理稀疏矩阵分类问题的深度学习方法。实验结果在第IV部分进行了展示和讨论,相关工作在第V部分进行了介绍。最后,对实验得出的主要结论和对未来工作的一些想法进行了说明。
II. 背景
A.稀疏矩阵形式
对于稀疏矩阵,通过只存储非零项,可以减少大量的内存需求。存在许多不同的存储格式(在[1]中已经详细的列出),对于特定的稀疏矩阵,根据其非零的数量和分布,这些格式比其他格式更适合。这些格式在所需的存储数量、访问方法以及它们对不同应用程序或并行体系结构(如gpu)的适应性方面有所不同。其中一些格式只适用于具有特定稀疏模式,如对角线格式(DIA),或者块格式,如BELLPACK矩阵[4],其他形式的矩阵支持高效修正,但也有不支持高效运算的矩阵,如坐标形式矩阵(COO)等。在这项工作中,我们关注的是那些适合于具有任意结构的矩阵的格式,同时也适用于稀疏矩阵向量乘法等矩阵运算。更准确地说,我们已经考虑了压缩行存储(CSR)、ELLPACK (ELL)和hybrid(HYB)格式[5],它们是在NVIDIA cuSPARSE1库中实现的(参见Figure 1)。
![7007663-78461afc58ba1bff.png](https://i-blog.csdnimg.cn/blog_migrate/d71d627b0e617b4e38391175290aa546.webp?x-image-process=image/format,png)
压缩稀疏行(CSR):是一种通用稀疏矩阵格式。对于矩阵的稀疏结构不需要做任何假设。CSR在相邻内存位置的每一行中分配后续的非零,并分别在两个数组、索引和值中存储列索引和非零项。此外,它还需要另一个指针数组来指示每一行的偏移量。
ELLPACK (ELL):这种存储方案在稠密的n× k矩阵中压缩原始稀疏n× m矩阵,其中k是原始矩阵每行不为0的最大个数。它还需要另一个n× k的索引数组,用于在原始矩阵中存储每个非零的位置(列)。这种格式不能被认为是一种通用的矩阵格式,因为它需要每一行中的非零的数量在所有行中不会有很大的变化。在其他情况下,大量的存储空间会被浪费,计算效率也会降低。但是,它适用于各种矩阵,它产生的性能结果通常都很好。
混合(HYB):这是两种存储格式的组合:COO和ELL。它试图将ELL的计算效率与COO(显式存储行和列索引)的简单性和通用性结合起来。大多数矩阵条目都以ELL格式存储,而那些非零数量大不相同的行则以COO格式存储。
B.卷积神经网络(CNNs)
CNNs由一系列层组成,这些层将原始图像从原始像素值逐层转换为最终的类别分数值。我们可以将这些层分为三类:输入层、特征提取层和分类层。一个简单的CNN架构Figure2所示。输入层将图像的原始输入数据加载并存储在网络中进行处理。该输入数据指定通道的宽度、高度和数量。通常,通道的数量是3个,对应于每个像素的RGB值。
![7007663-8edeafbb027ad2a2.png](https://i-blog.csdnimg.cn/blog_migrate/2e2a49441a7256baf37f77aa42615397.webp?x-image-process=image/format,png)
特征提取层一般有如下重复的操作:卷积、非线性(ReLU)和池化或子采样。卷积层的主要目标是从输入图像中提取特征。卷积在输入中移动一个小窗口(过滤器),在每个位置,它计算过滤器和过滤器所覆盖的输入元素之间的点积。当我们在图像上滑动滤镜时,我们将生成一个二维激活映射,它会在每个空间位置上给出该滤镜的响应。通过这种方式,神经网络将学习在检测到某些视觉特征如边缘、曲线等时激活的过滤器。注意,多个过滤器可以用于同一个卷积层,这将生成多个激活映射。在每次卷积运算之后都要用到一个叫做ReLU的附加运算。它是一种非线性操作,将特征图中的所有负像素值替换为零。此外,在CNN架构中,在连续卷积ReLU层之间插入池层是很常见的。它的作用是在保留最重要信息的同时,逐步减小表示(子采样)的空间大小,以减少网络中的参数和计算量。
最后,我们有分类层,其中我们有一个或多个完全连接的层来产生类别分数值。完全连接层意味着这一层的神经元与上一层的所有激活都有完全连接。该层使用卷积层和池化层生成的高级特性,根据训练数据集将输入图像分类为多个类。
CNN的训练过程是一个迭代的过程。首先,将网络中的所有过滤器和参数初始化为随机值。然后,网络获取一个训练输入图像,它的类/标签是预先知道的,并在前向传播步骤(卷积、ReLU和池化操作以及在全连通层中的前向传播)后进行预测。通过对网络输出与预期结果的比较,计算出预测误差。训练过程(通过反向传播的方式)迭代地修正网络参数,以最小化每个训练输入的总体误差。卷积神经网络将会给出定数量的数据(即遍历整个图像数据集)并对输入的数据集进行训练。注意,在训练过程中,过滤器的数量、过滤器的大小、网络的结构等参数不会改变。在训练过程中还有一些额外的参数被称为超参数,比如学习率或新纪元数,这些参数应该被调整以使网络训练更好更快。
CNN已经提出了很多架构,其中最流行的有LeNet [6], AlexNet [3], GoogLeNet [7], VGGNet[8]和ResNet[9]。在本文中,我们使用了AlexNet,它有5个卷积层,分别是减小滤波尺寸,3个池化层,3个全连接层,大约有6000万个自由参数。尽管与其他标准网络相比,AlexNet相对简单,但我们在下面几节中演示了它足够强大,可以处理稀疏矩阵格式选择问题。
III.方法
本节介绍了一种基于深度学习技术的稀疏矩阵最佳存储格式选择方法。我们特别关注稀疏矩阵向量乘法(SpMV)的适当格式的选择,它是科学和工程应用中最重要的计算核心之一。
![7007663-d23c10cd25f8a116.png](https://i-blog.csdnimg.cn/blog_migrate/37b3783bc0fd905f42922b3ed2c371d0.webp?x-image-process=image/format,png)
图3显示了我们的方法的不同阶段。我们假设一组来自不同实际问题的大型稀疏矩阵,它们代表了各种特征和非零模式。该数据集将作为SpMV基准测试和图像生成阶段的输入。第一步的目标是评估数据集中所有矩阵在考虑不同存储格式时SpMV内核的性能。因此,我们得到了每个矩阵在性能方面的最佳格式。这种格式将标签(类)与数据集中的每个矩阵相关联,稍后将在CNN训练阶段作为参考值使用。因此,类的数量与存储格式一样多。请注意,在这项工作中,我们将gpu作为硬件平台来构建参考值,但是我们的方法与底层并行系统完全无关,可以应用于多核cpu或加速器,例如Intel Xeon Phi。
图像数据集的生成是我们方法的核心。为了建立数据集,我们考虑矩阵的稀疏模式作为图像。作为第一种方法,n× m矩阵相当于n× m的二进制图像,其中位置(i,j)的白色像素在第i行和第j列中表示非零,黑色像素对应稀疏模式中的零。然而,CNN的输入大小是固定的,所以不同大小的矩阵应该缩放到相同大小。下面的方法解释了如何缩放矩阵。假设输入图像的大小应该是p× p像素,为了简单起见,考虑的稀疏矩阵是n× n(即,它是一个方阵),其中n个大于p,我们把这个矩阵分成p× p子矩阵。为了构建新的p× p缩放矩阵,如果在相应的子矩阵(i,j)中至少有一个非零值,我们在位置(i, j)插入一个非零值。这样,从缩放矩阵创建一个p× p二值图像就很简单了。Figure 4(a)演示了这个过程,显示了从一个71, 505× 71, 505稀疏矩阵生成的63× 63像素图像。
![7007663-053fae9eea595777.png](https://i-blog.csdnimg.cn/blog_migrate/0adc60f4be68aebd3c8f823b2ae47364.webp?x-image-process=image/format,png)
上述方法是生成符合CNN的二进制图像数据集的一种简单易行的方法。然而,缩小稀疏矩阵可以简化稀疏模式的出现,这可能会导致训练阶段提供给CNN的信息丢失。回想一下,图像中的单个像素表示原始矩阵中的子矩阵。例如,图4(a)中的一个像素对应一个1,135 1,135子矩阵(即71,505/63)。正如我们在第四节中所演示的那样,使用二进制图像数据集训练网络并不能提供有竞争力的结果。因此,有必要为CNN提供额外的信息,以提高分类器的全局精度。考虑到这一目标,我们建议使用图像的RGB通道来编码与原始稀疏矩阵的一些特征和属性相关的信息。特别地,我们考虑了以下关于矩阵的全局度量(数字用作度量的标识符):
![7007663-64d2060b2bd50d65.png](https://i-blog.csdnimg.cn/blog_migrate/9f2366a083dfd85597d5f88301e1a022.webp?x-image-process=image/format,png)
在我们的实现中,空子矩阵对应的像素都是黑色的,即它们的RGB颜色为(0,0,0),只有表示非空子矩阵的像素有不同的相关的RGB颜色。这些像素的颜色总是相同的,每个RGB通道的值都在区间[1,255]内,度量值应该规范化以适应该间隔(关于数据集规范化的细节在第四节中提供)。注意,可以使用一个、两个或三个颜色通道来包含矩阵信息。当一个通道不被使用时,它对于图像中所有像素的值为0。
从现在开始,使用RxGyBz符号表示选择x、y和z分别计算图像的R、G和B值。在图像数据集生成阶段,可以使用多个通道和指标的组合。在本文中,我们只展示了在性能方面最相关的组合的结果。特别地,数据集使用以下配置生成。此外,为了便于说明,我们还包含了二进制图像数据集(不含度量的黑白像素)和R1(仅使用红色通道对矩阵每行的非零数进行编码)的结果。因此,本文生成并分析了6个不同的图像数据集。图4显示了一个示例,该示例显示了考虑不同配置时相同输入稀疏矩阵得到的结果图像。我们必须强调,分配到频道的指标不会影响CNN训练阶段的结果。这意味着考虑其]是无关的。
我们方法的下一个阶段是CNN的训练。为此,需要向CNN提供一组标记有其类别(最佳存储格式)的图像。这些数据是在前几个阶段生成的:SpMV基准测试和图像生成。注意,图像数据集分为训练集和测试集(如图3所示),这样训练过程只考虑训练集中的图像,而测试集中的图像则需要评估最终选择的分类模型的误差。我们使用了交叉验证方法,这通常被认为是模型选择和评估的最佳方法。特别地,我们选择了k-fold交叉验证。当需要估计网络的某个超参数时,可以使用这种方法。在我们的例子中,超参数是最优的训练周期数,该验证方法将训练集划分为k个折叠。对于每个折叠k(称为验证集),网络只训练k以外的所有折叠(例如,最大的epoch数)。在每个历元之后,记录相应验证集的全局精度。然后,计算每个epoch数的平均验证集精度(跨越k折叠)。选择的时期数将是使这一价值最大化的时期数。然后使用完整的训练集作为输入训练CNN,直到迭代次数达到所选值。
最后,训练后的CNN将用于存储格式预测。图像测试集是完整图像数据集的一部分,但在训练过程中没有用到,它被用来作为CNN的输入来验证我们分类器的准确性。
IV.实验评价
A.硬件平台和软件
在这项工作中,我们将gpu作为硬件平台来评估在执行SpMV操作时预测最佳存储格式的方法。然而,正如我们前面评论的,我们的方法可以应用于其他并行系统。表I显示了实验评估中使用的NVIDIA gpu的主要特点。从现在开始,我们分别用GTX和TITANX来指代具有开普勒架构和Pascal架构的gpu。
![7007663-2f32e07ec7318d01.png](https://i-blog.csdnimg.cn/blog_migrate/3213b813ee62fe09db6842616bc556ab.webp?x-image-process=image/format,png)
对于SpMV基准测试,我们使用包含CUDA toolkit version 8的NVIDIA cuSPARSE库实现。研究了CSR、HYB和ELL存储格式(详见第二节)。训练CNN也使用GPU进行,而且最强大的GPU (TITANX)可以减少训练时间。本次培训阶段所选择NVIDIA 的Deep Learning GPU Training System2
(digital2)的软件平台。DIGITS可以利用深度学习框架Caffe3设计,训练和可视化的深度神经网络图像的分类。几个最重要的CNN架构,如LeNet、AlexNet和GoogLeNet都是预定义的,可以在平台中使用。
B.稀疏矩阵数据集
正如我们在第三节中指出的,为了训练网络,有必要有一个大的稀疏矩阵集。这个数据集应该包含来自不同实际问题和应用的矩阵。通过这种方式,我们期望这些矩阵涵盖广泛的特征和非零模式。我们已经创建了一个由8111个稀疏矩阵组成的数据集来满足这些假设。该数据集是使用SuiteSparse矩阵集合[10]中的812个方阵作为基底生成的,并对它们应用一些转换,如裁剪(类似于[11])。数据集的平均值、最小值和最大值的主要特征如表二所示。
![7007663-d53d207d21d88882.png](https://i-blog.csdnimg.cn/blog_migrate/95166aef311ead9fad3c7480da6bd3bc.webp?x-image-process=image/format,png)
C . SpMV基准测试
为了训练CNN,应该给数据集中的矩阵分配一个分类(最好的存储格式),这是SpMV基准测试阶段的目标。我们通过测量在考虑的gpu上使用不同存储格式(CSR、HYB和ELL)的单精度SpMV内核的性能来进行实验(见表一),对于每个矩阵和格式,性能计算为1000个SpMV操作的平均值。然后根据最高性能的格式对每个矩阵进行标记。分类结果表示为每一类矩阵的个数和百分比,如表三所示。请注意,根据所考虑的GPU,在分类上有明显的差异。例如,我们观察到最大的类在两个gpu上是不同的(ELL表示GTX, CSR表示TITANX)。这种对硬件平台的依赖,证实了本文所解决问题的重要性和难度。
![7007663-9452c09c2206de12.png](https://i-blog.csdnimg.cn/blog_migrate/99a79e54658bc01f72aa2a4c47bd05f5.webp?x-image-process=image/format,png)
另一方面,存储格式的错误选择会对SpMV性能产生负面影响。图5说明了这种测量数据集中所有矩阵的最佳和最差性能格式之间的加速的行为。考虑到GTX平台,箱线图显示,中间值、第一个四分位数和第三个四分位数分别为1.81、1.51和2.25。这意味着对于50%的矩阵,选择最佳的存储格式可以使SpMV操作加速超过1.81。TITANX的中值、第一个四分位数和第三个四分位数的速度是1.47、2.05和2.66。此外,我们还检测到了一些异常值(图中的点),在这些异常值中,选择合适的格式时,SpMV的执行速度要快10到数百倍。因此,分类中的错误预测可能导致重要的性能下降。
![7007663-fd6f6181d5b00f47.png](https://i-blog.csdnimg.cn/blog_migrate/3914727fd7c38200791b37081d224ca0.webp?x-image-process=image/format,png)
D.图像数据集生成与网络训练
表二中的几个特征与第三节中详细介绍的全局指标相对应。度量标准应该标准化以适合间隔[1,255],因为它们的值将被分配给图像中的RGB颜色通道。这种归一化的执行方式会影响分类器的结果。为了找到最佳的归一化方法,进行了大量的实验研究。
接下来,我们将详细介绍如何为评估中使用的图像数据集计算RGB值(数字标识相应的度量):
![7007663-2251afdcaf1f6149.png](https://i-blog.csdnimg.cn/blog_migrate/d454a8878bd7ba1a619dde892f963f8e.webp?x-image-process=image/format,png)
如果前面的一些值对于一个特定的矩阵超过255,图像中相应的颜色将自动固定为255。
我们生成并研究了六种不同的图像数据集:二进制图像数据集(无度量)、R1, R1G2B3,R2G3B4,R1G3B4和R0G1B4。图像的大小总是256× 256像素,这与AlexNet网络的输入大小相对应。为了训练AlexNet网络,我们使用了k-fold交叉验证(见第三节),特别是将数据集分为训练集(80%的矩阵)和测试集(20%的矩阵)。表III显示了每个集合中矩阵的数量和分类,这个在测试集在训练过程中没有使用过。此外,将训练集划分为5个折叠,这种验证方法的目的是求出训练周期的最优数目。本程序适用于6个图像数据集和2个gpu。我们发现最佳的epochs数量范围从20(二进制数据集,GTX)到42
(R0G1B4数据集,TITANX)。我们必须强调,其他超参数采用DIGITS 平台提供的默认值。
然后使用完整的训练集对AlexNet网络进行训练,直到迭代达到最优的迭代次数。在TITANX GPU上的训练时间从6.3分钟(二进制- gtx数据集)到14.5分钟(R0G1B4- TITANX数据集)不等。
E.预测精度及性能分析
接下来,对每个数据集和GPU的训练过的CNNs只使用测试集进行评估。除了分类器的全局精度(正确分类矩阵的总体百分比),我们还提供了两个指标来更好地理解分类器的性能:精确度和召回率。在相同条件下重复测量得到相同结果的程度称为精度。回忆或灵敏度也被称为真实阳性率,并量化模型如何避免假阴性。假设数据集中有A类TA矩阵。我们的网络将CA矩阵分类为A类,其中PA被正确分类(true positive)。那么,A类产品的精度和召回量可以分别计算为PA/CA和PA/TA。
![7007663-e1c02e86cc8cbef6.png](https://i-blog.csdnimg.cn/blog_migrate/d4fa3fe68a287fd1041432aff3b80523.webp?x-image-process=image/format,png)
表IV显示了两个gpu上所有数据集的分类器的全局准确性、精确性和召回率。GTX和TITANX gpu对网络进行图像训练的准确率分别为90.1%和89%,图像的RGB通道编码了矩阵大小、每行平均非零个数和每行最大非零个数(R0G1B4)。在考虑其他配置时,特别是R2G3B4和R1G3B4时,也取得了较好的效果。由于TITANX数据集上的HYB和ELL类矩阵较少(见表三),相对于CSR值,准确率和召回率较低。最后,我们必须强调我们的方法是非常健壮的,因为对于两个gpu上相同的图像数据集,在准确性、精确性和召回率方面都得到了一致的结果。
另一种证明我们方法的优点的方法是测量分类器离最大可实现的SpMV性能有多近。通过这种方法,我们使用每个分类器选择的格式测量测试集中所有矩阵的SpMV性能。规范化结果如图6所示,其方式是1对应于最大可实现性能(总是选择最佳格式)。例如,考虑到R0G1B4分类器,两种gpu的平均性能都高于0.99。这意味着最佳分类器与我们的分类器得到的分类器在SpMV性能上的差异小于1%。因此,仅考虑全局精度、精度和召回率来评价分类器的质量对于稀疏矩阵分类隐藏了重要的性能信息。由于选择合适的存储格式的最终目的是获得最大的SpMV性能,因此上述分析非常重要。
![7007663-245a3a29ee5ee8e4.png](https://i-blog.csdnimg.cn/blog_migrate/02b9c60be5480951e6764173ca56a96b.webp?x-image-process=image/format,png)
F.加快训练过程
如前所述,矩阵的类依赖于SpMV基准测试阶段考虑的硬件平台。因此,应该为每个特定的GPU训练网络。但是,接下来我们将证明,没有必要从零开始进行训练过程。
其思想是考虑一个预先训练的模型作为训练过程的起点,而不是考虑由随机值初始化的AlexNet网络(比如,从零开始培训)。这个预训练模型对应于一个CNN为不同GPU训练的模型。通过这种方式,网络继承了许多参数,这些参数从数据集中考虑的存储格式和矩阵中获取了重要的特征和特征。此外,我们必须考虑到不同gpu之间矩阵的类是不同的,但不是对所有数据集都是如此。
由于使用了这种方法,与从零开始的训练相比,用较少的训练数据得到了非常好的准确性结果。
因此,由于训练网络所需的数据减少,训练时间也减少了。图7演示了使用预先训练的TITANX模型为GTX分类器进行的这种行为训练。在这个例子中,我们考虑了R0G1B4图像数据集。例如,我们分别使用30%和50%的训练数据对网络进行了88.1%和89%的准确率训练。
![7007663-7cc221c3419734b8.png](https://i-blog.csdnimg.cn/blog_migrate/f27a19fdb76f4162bfe1d571aca1d227.webp?x-image-process=image/format,png)
减少训练数据大小的另一个重要结果是对SpMV基准测试阶段的影响(见图3),这是最耗时的阶段,需要几个小时才能获得每个GPU上所有数据集的最佳存储格式(类别)。注意,它需要对每个矩阵和格式执行1000次SpMV操作。通过这种方式,可以显著减少基准测试时间,同时在准确性方面获得非常好的性能。
V. 相关工作
在文献[12][14]中,我们可以找到许多基于性能模型的gpu稀疏矩阵最优格式识别的分析方法,都表现出良好的准确性,但模型通常是测试考虑一个小的矩阵集。其他作者使用传统的机器学习方法自动选择稀疏矩阵的最佳存储格式。只有一些将gpu作为目标平台。在[2]中,作者构建了一个决策树,基于几个矩阵结构特征为给定的稀疏矩阵选择最佳表示,他们的分类器报告了在64.6-83.8%范围内的全局精度,获得了最大可实现的SpMV性能的95%。[15]中也发布了类似的方法,它利用支持向量机来处理分类问题。他们证明了73-88.5%范围内的精度,提高了平均SpMV性能高达98%。我们必须强调,这两项工作的最佳结果都低于使用我们的方法得到的数字。
此外,在这两种方法中所观察到的最大精度通常都是使用具有三个以上矩阵属性的特征集来训练分类器,以上文献都没有考虑过深度学习技术。在最近的一篇论文[11]中,作者使用CNNs处理稀疏矩阵格式选择问题,他们提出了几种表示矩阵的方法来训练网络,使用直方图来捕捉矩阵中非零元素的空间分布可以得到最好的结果。与我们的方法不同,它们不利用图像的RGB通道编码矩阵的某些特性,使用它们的表示可以引导作者创建一个特殊的CNN架构。我们的方法表明,简单的标准CNN架构(如AlexNet)就足以提供良好的分类结果。通过这种方式,我们的方法很容易被研究界采用,因为AlexNet可以在最重要和最常见的深度学习框架中使用。此外,为了提高准确性或加快学习过程,未来AlexNet很容易被VGGNet[8]、ResNet[9]等其他标准架构所替代。
其他的论文只关注机器学习技术在多核处理器[16]中的应用。最后,在[17]中,作者提出了一种使用深度学习技术为cpu和gpu选择最佳SpMV代码实现的机制。从概念上讲,这是一项有趣的工作,但是他们的方法得到的准确率很低(只有54%),达到了最高可实现性能的75%。
VI.结论
在这项工作中,我们证明了深度学习技术可以成功地应用于不同于传统机器学习任务的分类问题。我们着重于为gpu上的SpMV内核选择最佳存储格式,提出了一种将矩阵稀疏模式作为图像来考虑的新方法,将几个矩阵特征编码为图像中像素的RGB颜色,我们就可以生成具有足够信息的图像数据集来成功训练CNN。我们证明了像AlexNet这样一个简单的、充分训练的CNN架构,在没有任何精确性、召回率和平均SpMV性能方面调试的情况下都取得了非常好的效果。特别是,我们观察到最大的全局精度为90.1%,平均获得最佳性能的99.4%。此外,我们还证明了用一个预先训练的模型作为起点来加速训练过程是可能的,而不是从零开始。使用预训练模型可以降低训练数据的要求,从而获得较高的全局精度。
在未来的工作中,我们将处理gpu和其他并行架构的分类问题,添加专门的存储格式[18][20]。此外,我们还将采用主成分分析(PCA)等降维技术对图像RGB通道中的三个以上矩阵属性进行编码,以提高分类器的全局精度。
参考文献:
[1]
D. Langr and P. Tvrd´ık, “Evaluation Criteria for Sparse Matrix Storage Formats,”IEEE Transactions on
Parallel and Distributed Systems, vol.27, no. 2, pp. 428–440, 2016.
[2] N. Sedaghati, T. Mu, L.-N. Pouchet, S. Parthasarathy, and P.Sadayappan,“Automatic Selection of Sparse Matrix Representation on GPUs,” in
29th ACM on Int. Conf. on Supercomputing (ICS), 2015, pp. 99–108.
[3] A. Krizhevsky, I. Sutskever, and G. E. Hinton, “ImageNet Classification withDeep Convolutional Neural Networks,” in
25th Int. Conf. on Neural Information Processing Systems - Volume
1, 2012, pp. 1097–1105.
[4] J. W. Choi, A. Singh, and R. W. Vuduc, “Model-driven Autotuning of SparseMatrix-vector Multiply on GPUs,” in
15th ACM SIGPLAN Symposium on Principles and Practice of Parallel
Programming (PPoPP),2010, pp.115–126.
[5] N. Bell and M. Garland, “Efficient Sparse Matrix-Vector Multiplication onCUDA,” NVIDIA Corporation, NVIDIA Technical Report NVR-2008-004, Dec. 2008.
[6] Y. Lecun, L. Bottou, Y. Bengio, and P. Haffner, “Gradient-based learning appliedto document recognition,”
Proceedings
of the IEEE, vol.86,no. 11, pp. 2278–2324, 1998.
[7] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan,V.Vanhoucke, and A. Rabinovich, “Going Deeper with Convolutions,” in
IEEE Conf. on Computer Vision and Pattern Recognition (CVPR),
2015, pp. 1–9.
[8] K. Simonyan and A. Zisserman, “Very Deep Convolutional Networks forLarge-Scale Image Recognition,”
CoRR, vol. abs/1409.1556, 2014.[Online]. Available:http://arxiv.org/abs/1409.1556
[9] K. He, X. Zhang, S. Ren, and J. Sun, “Deep Residual Learning for ImageRecognition,”
CoRR, vol. abs/1512.03385, 2015.
[10] T. A. Davis and Y. Hu, “The University of Florida Sparse Matrix Collection,”
ACM Trans. Math. Softw., vol. 38, no. 1, pp. 1:1–1:25,2011.
[11] Y. Zhao, J. Li, C. Liao, and X. Shen, “Bridging the gap between deeplearning and sparse matrix format selection,” in
Proc. of the 23rd ACM SIGPLAN Symposium on Principles and Practice
of Parallel Programming,2018, pp. 94–108.
[12] P. Guo, L. Wang, and P. Chen, “A Performance Modeling and OptimizationAnalysis Tool for Sparse Matrix-Vector Multiplication on GPUs,”
IEEE Transactions on Parallel and Distributed Systems, vol. 25, no. 5, pp. 1112–1123, 2014.
[13] B. Neelima, G. R. M. Reddy, and P. S. Raghavendra, “Predicting an OptimalSparse Matrix Format for SpMV Computation on GPU,” in
IEEE Int. Parallel Distributed Processing Symposium Workshops, 2014, pp. 1427–1436.
[14] K. Li, W. Yang, and K. Li, “Performance Analysis and Optimization for SpMVon GPU Using Probabilistic Modeling,”
IEEE Transactions on Parallel and Distributed Systems, vol. 26, no. 1, pp. 196–205, 2015.
[15] A. Benatia, W. Ji, Y. Wang, and F. Shi, “Sparse Matrix Format Selection withMulticlass SVM for SpMV on GPU,” in
45th Int. Conf. on Parallel Processing (ICPP), 2016, pp. 496–505.
[16] J. Li, G. Tan, M. Chen, and N. Sun, “SMAT: An Input Adaptive Autotuner forSparse Matrix-vector Multiplication,” in
34th ACM SIGPLAN Conf. on Programming Language Design and
Implementation, 2013,pp.117–126.
[17] H. Cui, S. Hirasawa, H. Takizawa, and H. Kobayashi, “A Code Selection MechanismUsing Deep Learning,” in
IEEE
MCSOC, 2016, pp. 385–392.
[18] A. Ashari, N. Sedaghati, J. Eisenlohr, and P. Sadayappan, “An Efficient Two-dimensionalBlocking Strategy for Sparse Matrix-vector Multiplication on GPUs,” in
Proc. of the 28th ACM Int. Conf. on Supercomputing,2014, pp. 273–282.
[19] M. Kreutzer, G. Hager, G. Wellein, H. Fehske, and A. Bishop, “A UnifiedSparse Matrix Data Format for Efficient General Sparse MatrixVectorMultiplication on Modern Processors with Wide SIMD Units,”
SIAM Journal on Scientific Computing, vol. 36, no. 5, pp. C401–C423,2014.
[20] D. Merrill and M. Garland, “Merge-based Parallel Sparse MatrixvectorMultiplication,” in
Proc.
of the Int. Conf. for High PerformanceComputing, Networking, Storage and
Analysis (SC), 2016,
pp. 58:1–58:12.