没有合适的资源?快使用搜索试试~ 我知道了~
软件影响14(2022)100343原始软件出版物PLSSVM-并行最小二乘支持向量机Alexander Van Craen,Marcel Breyer,Dirk Pflüger德国斯图加特大学A R T I C L E I N F O关键词:机器学习SVM性能可移植性GPUCPUA B标准支持向量机用于监督学习。然而,对于大型密集数据集,即使是像LIBSVM或ThunderSVM这样的优化实现也不能在大规模并行硬件上很好地扩展:它们在算法上基于顺序最小优化,并且我们不知道支持来自不同供应商的CPU和GPU我们的并行最小二乘支持向量机(PLSSVM)解决了这两个问题。首先,PLSSVM诉诸于最小二乘公式,因此是非常适合大规模并行的算法。其次,PLSSVM提供了一个独立于硬件的高效实现,使用OpenMP,CUDA,HIP,OpenCL和SYCL。代码元数据当前代码版本v1.2.0用于此代码版本的代码/存储库的永久链接https://github.com/SoftwareImpacts/SIMPAC-2022-80可复制胶囊法律代码许可证MIT许可证使用Git的代码版本控制系统使用C++、OpenMP、CUDA、HIP、OpenCL、SYCL、hipSYCL、DPC++的软件代码语言、工具和服务编译要求、操作环境依赖性、支持C++17的编译器(例如,GCC或Clang),CMake≥ 3.21,cxxopts≥ 3.0.0,fast_float、{fmt}≥ 8.0.0、GoogleTest≥ 1.11.0、Doxygen、OpenMP≥ 4.0、启用CUDA支持的NVIDIA NVCC或Clang、OpenCL、DPC++、hipSYCL、带有argparse、sklearn、arff和pandas模块的Python 3;在Ubuntu和Windows下测试如果可用,链接到开发人员文档/手册https://github.com/SC-SGS/PLSSVM/blob/v1.2.0/README.md,https://sc-sgs.github.io/PLSSVM/问题支持电子邮件Alexander. ipvs.uni-stuttgart.de,Marcel. ipvs.uni-stuttgart.de1. SVM和LS-SVM支持向量机(SVM)是一种有监督的机器学习方法。它们目前被使用,例如,用于地震预报[1]、塑性混凝土力学性能预报[2]或狼疮性肾炎诊断[3]。在它们的基本形式中,SVM用于二进制分类任务。他们的基本思想是学习一个最好地分离两个类的超平面,即,其中,决策边界周围的最大可能余量是无数据的(图1)。①的人。这就是为什么SVM也被称为“大边缘分类器”的原因为了预测一个新的、看不见的数据点属于哪个类,∗ 通讯作者。SVM只需计算数据点位于先前计算的超平面的哪一侧。这是非常有效的,因为它只涉及与数据集的特征数量相对应的大小的单个标量积(图1)。①的人。SVM的基本思想由Boser等人于1992年提出[4],并于1995年由Cortes和Vapnik [5]扩展到今天的最先进方法。Chang和Lin开发了LIBSVM [6],这是当今使用最广泛的SVM库之一。ThunderSVM是一个相当新的SVM实现,除了CPU之外还支持NVIDIA GPU [7]。电子邮件地址:Alexander. ipvs.uni-stuttgart.de(A.Van Craen),Marcel. ipvs.uni-stuttgart.de(M.Breyer),Dirk. ipvs.uni-stuttgart.de(D.Pflüger)。https://doi.org/10.1016/j.simpa.2022.100343接收日期:2022年5月27日;接收日期:2022年6月23日;接受日期:2022年6月27日2665-9638/©2022作者。由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表软件影响杂志 首页:www.journals.elsevier.com/software-impactsA. Van Craen,M.Breyer和D.普夫吕格软件影响14(2022)1003432Fig. 1. 分离两个类的超平面,最好由SVM学习。它最大化没有数据点的余量。填充的数据点就是所谓的支持向量。为了确定新数据点属于哪个类别,SVM计算数据点位于超平面的哪一侧然而,普通SVM缺乏利用现代大规模并行硬件(例如,GPU)。确定超平面归结为求解凸二次问题。 为此,大多数SVM实现使用顺序最小优化(SMO),一种固有的顺序算法。为了利用现代的大规模并行硬件,我们的并行最小二乘支持向量机(PLSSVM)实现了由Suykens和Vandewalle [8]开发的最初提出的SVM的一个版本,称为最小二乘支持向量机(LS-SVM)。LS-SVM以这样一种方式重新表达了原始SVM,即它归结为求解线性方程组。对于这类问题,已知许多高度并行的算法和实现。PLSSVM使用并行共轭梯度(CG)算法 求解线性方程组2. PLSSVM库PLSSVM的开发考虑到了最高性能和可移植性,并遵循现代C++17最佳实践。可以通过单个模板参数从单精度浮点计算切换到双精度浮点计 算 。 PLSSVM 使 用 多 个 框 架 实 现 LS-SVM 公 式 , 如 图 所 示 。 2 :OpenMP 、 CUDA 、 HIP 、 OpenCL 和 SYCL ( 目 前 支 持 DPC++ 和hipSYCL)。这允许PLSSVM针对不同的硬件平台,例如来自不同供应商的CPU或GPU。所有与GPU相关的后端共享尽可能多的功能(例如,CG实现)通过从gpu_csvm类派生来减少代码重复。 对于线性核函数,所有GPU后端都支持多GPU执行。OpenMP后端(目前仅支持CPU,不支持浮动目标)使用自己的CG实现,因为与从设备复制内存或向设备复制内存或与设备相关的同步相关的所有功能都可以省略。此外,对于SYCL后端,PLSSVM实现了两个不同的内核版本,以便为不同的硬件平台提供最佳性能。由于每次CG迭代中的在编译期间,为每个后端创建单独的库对象,然后将它们链接到一个最终的fat库。这允许用户在运行时动态地选择后端,例如,通过使用命令行选项。如果没有显式选择后端,则将根据我们的论文“ACombustion of SYCL,OpenCL,CUDA,and OpenMP for MassivelyParallel Support Vector Machine Classification on Multi-VendorHardware”[ 9 ]的结果选择使用的后端此外,OpenCL和SYCL后端允许用户在运行时指定所需的目标平台如果没有提供目标平台,当前的选择顺序是:NVIDIA GPU,然后是AMD GPU,然后是IntelGPU,最后是任何CPU,因此只考虑编译后的3. 为什么要使用PLSSVM?PLSSVM基于LS-SVM公式,因此可以开发高度并行的算法来求解线性方程组。正因为如此,PLSSVM可以通过使用现代的大规模并行设备(如GPU)来大大加快其SVM训练。这允许用户与基于SMO的最先进的SVM相比,PLSSVM可以探索/学习更大的密集场景,从而在ML中实现新的可能性。表1显示了在NVIDIA A100 GPU上使用不同SVM实现的三个不同密集数据集的运行时。我们的PLSSVM实现比gpusvm、GPUMLiB和gtSVM快几个数量级,尽管PLSSVM对于更大的数据集实现了比例如gpusvm或GPUMLiB显著更高的准确性,并且执行了它的计算是双倍精度而不是单精度。对于gtSVM,由于使用gtSVM训练SVM,每个数据集给出被分成两部分:一个慢速CPU只初始化和一个GPU加速优化步骤。但是,由于完整的培训工作流程需要这两个步骤,因此表中包含了这两个时间。值得注意的是,这些性能增益可以在所有三种数据集大小中看到。我们还尝试将我们的PLSSVM库与其他可用的SVM实现进行比较。然而,我们无法编译或运行许多在我们的Linux测试系统上。因此,它们不包括在表1中的比较。第一次测试表明,与我们在GPU上的PLSSVM库相比,ThunderSVM是最具竞争力的SVM实现。因此,我们认为, 我们使用ThunderSVM和PLSSVM对不同的数据集大小进行了更详细的性能分析和比较。此外,在CPU上,我们将其与最广为人知的SVM实现LIBSVM进行了比较。图3显示PLSSVM在CPU上快了几个数量级和GPU相比,LIBSVM(稀疏和密集实现)和ThunderSVM分别使用不同大小的密集数据集时。对于两个AMD EPYC 7742 CPU上2 10维的2 14个数据点,带有OpenMP后端的PLSSVM需要大约24个。9秒训练,而LIBSVM已经需要7秒。0分钟(密集)和9。8分钟(稀疏),ThunderSVM落后18分。因此,对于给定的密集数据集,我们的PLSSVM库在测试CPU上比LIBSVM快17倍,比ThunderSVM快44倍。 对一个NVIDIA A100 GPU,2个15个数据点和2个11个特征,ThunderSVM需要4分钟的训练,而PLSSVM使用CUDA作为后端只需要17秒,加速比为14。2.更详细的比较见[16]。此外,与绝大多数其他SVM实现(只能针对CPU或在极少数情况下针对NVIDIA GPU)相比, 通过CUDA,PLSSVM能够支持过多的不同硬件平台,例如,NVIDIA、AMD和Intel的GPU或任何供应商的CPU,只要它们支持OpenMP。这是通过以下方式实现的:PLSSVM是使用不同的后端实现的,这些后端是完全可互换的,可以在运行时选择A. Van Craen,M.Breyer和D.普夫吕格软件影响14(2022)1003433图二. PLSSVM的五个后端之间的关系。CUDA、HIP、OpenCL和SYCL后端共享相同的CG实现,而OpenMP后端具有其自己的. 此外,PLSSVM为SYCL后端提供了两个不同的内核版本表1在具有NVIDIA A100 GPU的Linux机器上比较不同的SVM实现。我们的比较表明,PLSSVM实现比gpusvm,GPUMLiB和gtSVM在密集数据集上快几个数量级,即使它们实现的准确性较低并且仅以单精度执行其计算。我们还尝试将其他SVM实现与PLSSVM进行比较。但不少它们中的一个不再被维护,导致编译或执行期间出现问题。这些SVM实现包括:DPSVM [10],mutisvm [11],cuSVM [12],svm-gpu [13],wuSVM [14]和SYCL-ML [15]。有关更多信息,请参阅我们相应的GitHub Wiki。图书馆精密小中型大1024 × 10248192 ×409632 768 × 16 384PLSSVM [16]双0的情况。65 S百分百3 .第三章。80后九十八。百分之九十二3分44秒九十五。百分之六十四gpusvm [17]浮子1 .一、41s92. 百分之四十八30. 33 S九十。百分之七十八4分57秒82. 百分之七十三[18]第十八话浮子1 .一、94年代百分百22岁93秒5分54秒七十三。百分之六十六74岁百分之三十七15分钟41秒1小时21分钟七十三。百分之二十六72. 百分之四十九gtSVM [19]浮子1 .一、99秒+0。69秒百分百44个。12秒+3秒。76秒九十七百分之八十五11分56秒+1分23秒九十五。41%图三. 稀疏/密集LIBSVM、ThunderSVM和PLSSVM的双对数运行时间比较,在两个使用OpenMP后端的AMD EPYC 7742 CPU和一个使用CUDA后端的NVIDIA A100 GPU上,与数据点数量和使用demailto的功能有关:Alexander.Van-Craen@ipvs.uni-stuttgart.densedata sets. 运行时间是用一个测试器测量的,这样得到的模型在训练数据上或在第一个测试器中的准确度收敛之后达到大约97%的准确度。小数点后4. 如何使用PLSSVM?PLSSVM可以以两种不同的方式使用:作为第三方代码中的库,或者直接从命令行作为LIBSVM的直接如果PLSSVM用作库,则可以使用带有find_package的普通CMake有关更多信息和示例,请参阅文档。或者,PLSSVM也可以用作命令行实用程序。在这种情况下,我们的可执行程序plssvm-train和plssvm-predict尽可能遵循与LIBSVM相同的约定。然而,附加选项是可用的,例如,以指定要使用哪个后端或要针对哪个硬件平台 有关所有可用的命令行选项和示例调用,请参见PLSSVM的README文件。5. PLSSVM的影响和当前的研究主题PLSSVM是一个非常新的创新项目,尚未在ML社区中建立自己。然而,我们怀疑PLSSVM将引起关注和更广泛的使用,一旦库被称为。使用PLSSVM,现在可以训练大型,密集的数据集,A. Van Craen,M.Breyer和D.普夫吕格软件影响14(2022)1003434目前用基于SMO的最先进的SVM实现如LIBSVM来训练是不可行的。 由于PLSSVM支持五种不同的后端以针对不同的硬件平台,因此它也是独立于供应商的,因此它不限于特定品牌。因此,PLSSVM也是在不同硬件平台上比较不同编程框架的理想候选者[9]。虽然PLSSVM可以在单节点系统上使用多个GPU,但仍然不支持分布式多节点计算。由于这种支持对于大型异构计算集群是必不可少的,因此正在开发使用消息传递接口(MPI)的目前,PLSSVM仅支持密集计算。 稀疏数据集在内部转换为密集表示,并在必要时填充零。这导致无法使用一些大型稀疏数据集,因为它们的密集表示将超过可用(设备)内存。然而,一个项目已经开始,其目标是添加一个稀疏的CG实现。此外,在科学模拟的背景下,对AI特定硬件(如NVIDIA的张量核心)的使用进行了调查A. Van Craen,M.Breyer和D.普夫吕格软件影响14(2022)1003435以及混合精度计算对准确性和性能的影响正在研究中。在这项研究中,将研究在不同的编程框架竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢我们感谢Deutsche Forschungsgemeinschaft(DFG,德国研究基金会)通过资助EXC2075来支持这项工作- 390740016根据德国的卓越战略。我们感谢德国斯图加特仿真科学中心(SimTech)的支持。引用[1]Saed Asaly,Lee-Ad Gottlieb,Nimrod Inbar,Yuval Raveni,使用支持向量机( SVM ) 与 GPS电 离 层 TEC估 计 来 潜 在 地 预 测 地 震 事 件 , 遥 感 。14( 12)(2022)http://dx.doi.org/10.3390/rs14122822,myehosthttps://www.mdpi.com/2072-4292/14/12/2822。[2]Afnan Nafees,Sherbaz Khan,Muhammad Faisal Javed,Raid Alrowais,Abdeli-azim Mustafa Mohamed,Abdullah Mohamed,Nikolai Ivanovic Vatin,使用机器学习算法使用实验数据预测塑性混凝土的机械性能:DT,MLPNN,SVM和RF,Polymers 14 ( 8 ) ( 2022 ) http://dx.doi.org/10.3390/polym14081583 ,myehost https://www.mdpi。com/2073-4360/14/8/1583。[3]王明静,梁英琪,胡忠义,陈思远,施蓓蓓,张倩,陈慧玲,陈晓伟,用支持向量机增强蛾焰算法诊断狼疮性肾炎,计算机辅助诊断. 145(2022)105435,http://dx.doi.org/10.1016/j.compbiomed.2022.105435,myehosthttps://www.sciencedirect.com/science/article/pii/S001048252200227X。[4]伯恩哈德Boser等人, 最优间隔分类器的训练算法,在:第五届COLT年度研讨会,ACM,纽约,美国,1992年,pp.144//dx.doi.org/10.1145/130385.130401网站。[5]Corinna Cortes,Vladimir Vapnik,支持向量网络,Mach。学习. 20(3)(1995)273http://dx.doi.org/10.1007/BF00994018[6]Chih-Chung Chang,Chih-Jen Lin,LIBSVM:A library for support vectormachines,ACM TIST 2(3)(2011)1http://dx.doi.org/10.1145/1961189.1961199[7]Zeyi Wen等人, ThunderSVM:GPU和CPU上的快速SVM库,JMLR 19(2018)797https://github.com/Xtra-Computing/thundersvm802e6ed[8]Johan A.K. Suykens,Joos Vandewalle,最小二乘支持向量机分类器,神经过程。Lett. 9(3)(1999)293[9]Marcel Breyer,Alexander Van Craen,Dirk Pflüger,SYCL,OpenCL,CUDA和OpenMP在多供应商硬件上的大规模并行支持向量机分类的比较,计算机协会,纽约,纽约,美国,2022。[10] http://thesiddharth.github.io/dpsvm/https://github.com/thesiddharth/dpsvm@commit771221 f.[11] https://code.google.com/archive/p/multisvm/网站。[12] Austin Carpenter,《支持向量机:支持向量机分类和回归的CUDA实现》,2009年,第10页。1-9,Patternsonscreen。Net/CuSVMDesc.Pdfhttp://patternsonascreen.net/cusvm.html。[13] https://github.com/murtazajafferji/svm-gpu@ commitb2d1c0c。[14] 作者:Stephen Tyree,Jacob R. Gardner,Kilian Q Weinberger,KunalAgrawal,John Tran,并行支持向量机在实践中,2014,arXiv预印本arXiv:1404.1066https://github.com/aliciasun/wusvm@ commit43be1b7。[15] https://github.com/codeplaysoftware/SYCL-ML@ commit7a5d5ba。[16] 亚历山大Van克雷恩,马塞尔布雷耶德克Pflüger,PLSSVM:A(多-)gpgpu加速的最小二乘支持向量机,2022,arXiv:2202。12674。[17] https://github.com/niitsuma/gpusvm@ commit342e946.[18] Bernardete Ribeiro,Noel Lopes,João Gon Ravelcalves,Signature identificationvia efficient feature selection and GPU based SVM classifier,2014 InternationalJoint Conference on Neural Networks,IJCNN,2014,pp.1138//dx.doi.org/10.1109/IJCNN.2014.6889822,https://github.com/caweinshenker/GPUMLiB@ commit 94f8aab.[19] Andrew Cotter, Nathan Srebro, Joseph Keshet, A GPU-tailored approach fortraining kernelized SVM,in:Proceedings of the 17th ACM SIGKDD InternationalConferenceonKnowledgeDiscoveryandDataMining , 2011 , pp.805https://github.com/lsc36/gtsvm
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功