论文标题
PLSSVM:A(多)GPGPU加速最小二乘支持向量机
PLSSVM: A (multi-)GPGPU-accelerated Least Squares Support Vector Machine
论文作者
论文摘要
机器学习算法必须能够有效地应对大量数据集。因此,他们必须在任何现代系统上进行良好的扩展,并能够利用独立于供应商的加速器的计算能力。在监督学习领域,支持向量机(SVM)被广泛使用。但是,即使是现代化和优化的实现,例如LIBSVM或ThunderSVM,对于尖端硬件的大型非平凡的密集数据集也不能很好地扩展:大多数SVM实现都是基于顺序最小的优化,这是一种固有的顺序算法。因此,它们不适合高度平行的GPU。此外,我们不知道支持不同供应商的CPU和GPU的性能便携式实现。 我们已经开发了PLSSVM库来解决这两个问题。首先,我们将SVM的配方作为最小二乘问题。然后训练SVM沸腾以求解已知高度平行算法的线性方程系统。其次,我们提供了一个独立的硬件但有效的实现:PLSSVM使用不同的可互换后端 - OpenMP,Cuda,Opencl,Sycl-支持来自NVIDIA,AMD或INTEL等各种供应商的现代硬件。 PLSSVM可以用作LIBSVM的倒入替换。与LIBSVM相比,与ThunderSVM相比,我们观察到高达10的CPU和GPU的加速度。我们的实施量表在多核CPU上缩放,并在多达256个CPU线程和多个GPU上平行速度为74.7,在四个GPU上的并行加速为3.71。 代码,实用程序脚本和文档都可以在GitHub上提供:https://github.com/sc-sgs/plssvm。
Machine learning algorithms must be able to efficiently cope with massive data sets. Therefore, they have to scale well on any modern system and be able to exploit the computing power of accelerators independent of their vendor. In the field of supervised learning, Support Vector Machines (SVMs) are widely used. However, even modern and optimized implementations such as LIBSVM or ThunderSVM do not scale well for large non-trivial dense data sets on cutting-edge hardware: Most SVM implementations are based on Sequential Minimal Optimization, an optimized though inherent sequential algorithm. Hence, they are not well-suited for highly parallel GPUs. Furthermore, we are not aware of a performance portable implementation that supports CPUs and GPUs from different vendors. We have developed the PLSSVM library to solve both issues. First, we resort to the formulation of the SVM as a least squares problem. Training an SVM then boils down to solving a system of linear equations for which highly parallel algorithms are known. Second, we provide a hardware independent yet efficient implementation: PLSSVM uses different interchangeable backends--OpenMP, CUDA, OpenCL, SYCL--supporting modern hardware from various vendors like NVIDIA, AMD, or Intel on multiple GPUs. PLSSVM can be used as a drop-in replacement for LIBSVM. We observe a speedup on CPUs of up to 10 compared to LIBSVM and on GPUs of up to 14 compared to ThunderSVM. Our implementation scales on many-core CPUs with a parallel speedup of 74.7 on up to 256 CPU threads and on multiple GPUs with a parallel speedup of 3.71 on four GPUs. The code, utility scripts, and documentation are all available on GitHub: https://github.com/SC-SGS/PLSSVM.