最新动态
- 我们最近发布了ThunderGBM,这是一个在GPU上运行的快速GBDT和随机森林库。
- 添加了scikit-learn接口,详见这里
概述
ThunderSVM的使命是帮助用户轻松高效地应用SVM解决问题。ThunderSVM利用GPU和多核CPU来实现高效率。ThunderSVM的主要特点如下:
- 支持LibSVM的所有功能,如一类SVM、SVC、SVR和概率SVM。
- 使用与LibSVM相同的命令行选项。
- 支持Python、R、Matlab和Ruby接口。
- 支持的操作系统:Linux、Windows和MacOS。
为什么加速SVM:Kaggle在2017年进行的一项调查显示,26%的数据挖掘和机器学习从业者是SVM的用户。
文档 | 安装 | API参考(doxygen)
目录
入门
先决条件
- cmake 2.8或更高版本
- Linux和MacOS需要gcc 4.8或更高版本
- Windows需要Visual C++
如果您想使用GPU,还需要安装CUDA。
- CUDA 7.5或更高版本
快速安装
下载Python wheel文件(适用于Python3或更高版本)。
-
Linux系统
-
对于CUDA 9.0 - linux_x86_64,运行
pip install thundersvm
-
-
Windows系统(64位)
安装Python wheel文件。
pip install thundersvm-cu90-0.2.0-py3-none-linux_x86_64.whl
示例
from thundersvm import SVC
clf = SVC()
clf.fit(x, y)
下载
git clone https://github.com/Xtra-Computing/thundersvm.git
在Linux上构建(MacOS和Windows的构建说明)
GPU版ThunderSVM
cd thundersvm
mkdir build && cd build && cmake .. && make -j
如果遇到可追溯到gcc版本的问题,请使用带版本标志的cmake
强制使用gcc 6。命令如下:
cmake -DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6 ..
CPU版ThunderSVM
# 在thundersvm根目录下
git submodule init eigen && git submodule update
mkdir build && cd build && cmake -DUSE_CUDA=OFF .. && make -j
如果make -j
不起作用,请直接使用make
。可以通过-o
选项指定要使用的CPU核心数(例如,-o 10
),更多信息请参考参数。
快速开始
./bin/thundersvm-train -c 100 -g 0.5 ../dataset/test_dataset.txt
./bin/thundersvm-predict ../dataset/test_dataset.txt test_dataset.txt.model test_dataset.predict
成功运行后,您将看到Accuracy = 0.98
。
如何引用ThunderSVM
如果您在论文中使用了ThunderSVM,请引用我们的工作(完整版)。
@article{wenthundersvm18,
author = {Wen, Zeyi and Shi, Jiashuai and Li, Qinbin and He, Bingsheng and Chen, Jian},
title = {{ThunderSVM}: A Fast {SVM} Library on {GPUs} and {CPUs}},
journal = {Journal of Machine Learning Research},
volume={19},
pages={797--801},
year = {2018}
}
其他出版物
- Zeyi Wen,Jiashuai Shi,Bingsheng He,Yawen Chen和Jian Chen。GPU上高效的多类概率SVM。IEEE知识与数据工程汇刊(TKDE),2018年。
- Zeyi Wen,Bingsheng He,Kotagiri Ramamohanarao,Shengliang Lu和Jiashuai Shi。GPU上高效的梯度提升决策树训练。第32届IEEE国际并行与分布式处理研讨会(IPDPS),234-243页,2018年。
- Borui Xu,Zeyi Wen,Lifeng Yan,Zhan Zhao,Zekun Yin,Weiguo Liu,Bingsheng He。利用数据密度和稀疏性实现GPU上高效的SVM训练。第23届IEEE国际数据挖掘会议(ICDM),2023年。
相关网站
- LibSVM | SVMlight | OHD-SVM | NVIDIA机器学习 | ThunderGBM
致谢
- 我们感谢NVIDIA的硬件捐赠。
- 本项目由新加坡国立大学主持,与华南理工大学陈键教授合作。项目的初始工作是在Zeyi Wen在墨尔本大学工作期间完成的。
- 本工作部分得到新加坡教育部学术研究基金一级资助(T1 251RES1610)的支持。
- 我们还感谢LibSVM和OHD-SVM的作者,他们的工作启发了我们的算法设计。
使用ThunderSVM的精选项目
[1] 场景图用于可解释的视频异常分类(发表于NeurIPS18)
[2] 使用深度学习对高分辨率航空测量点云进行3D语义分割。(发表于ACM SIGSPATIAL国际地理信息系统进展会议,2018年)
[3] 机器学习模型在DDoS攻击检测中的性能比较。(发表于IEEE国际计算机科学与工程会议(ICSEC),2018年)
[4] 适应GPU以实现有效大批量训练的核机器。(arXiv预印本arXiv:1806.06144,2018年)
[5] 深度主动分类中的采样偏差:一项实证研究。(arXiv预印本arXiv:1909.09389,2019年)
[6] 基于知识蒸馏和贝叶斯优化的机器学习快速纸币序列号识别。(发表于传感器19.19:4218,2019年)
[7] 基于深度神经网络的无设备定位分类。(论文,会津大学,2019年)
[8] 使用卷积自编码器进行准确和稳健的无设备定位方法。(发表于IEEE物联网期刊6.3:5825-5840,2019年)
[9] 在使用移动机械臂进行零件拾取的轨迹生成过程中考虑零件姿态估计的不确定性。(发表于IEEE国际机器人与自动化会议(ICRA),2019年)
[10] GPU代码的遗传改进。(发表于IEEE/ACM国际遗传改进研讨会(GI),2019年)ThunderSVM的源代码被用作基准。
[11] 动态多分辨率数据存储。(发表于IEEE/ACM国际微架构研讨会,2019年)ThunderSVM的源代码被用作基准。
[12] 用于蛋白质-蛋白质相互作用预测的GPU加速SVM超参数估计。(发表于IEEE国际大数据会议,2019年)
[13] 自动音乐流派分类的纹理选择。(发表于应用软计算,2020年)
[14] 演进交换架构以适应网络内智能。(发表于IEEE通信杂志58.1: 33-39,2020年)
[15] 基于块稀疏编码的机器学习方法,用于物联网环境中可靠的无设备定位。(发表于IEEE物联网期刊,2020年)
[16] 使用基于深度学习特征提取的半监督模型为IIoT网络提供自适应信任边界保护。(发表于IEEE工业信息学汇刊,2020年)
[17] GPU上多应用并发性能预测。(发表于IEEE国际系统与软件性能分析研讨会(ISPASS),2020年)
[18] Tensorsvm:使用张量引擎加速核机器。(发表于ACM国际超级计算会议(ICS),2020年)
[19] GEVO:使用进化计算优化GPU代码。(发表于ACM架构与代码优化汇刊(TACO),2020年)
[20] CRISPRpred(SEQ):使用传统机器学习的基于序列的sgRNA靶向活性预测方法。(发表于BMC生物信息学,2020年)
[21] 使用门控递归神经网络预测气体浓度。(发表于IEEE国际人工智能电路与系统会议(AICAS),2020年)
[22] 为人类mRNA亚细胞定位预测设计强大的预测器。(发表于生物信息学简报,2021年)