Linux基于thundersvm使用GPU对svm进行加速

10 篇文章 1 订阅
2 篇文章 0 订阅

Linux基于thundersvm使用GPU对svm进行加速

下载方法

thundersvm—github

pip快速下载

使用pip install快速下载方式只适用于Linux的CUDA 9.0的情况

命令

pip install thundersvmpip install thundersvm-cu90-0.2.0-py3-none-linux_x86_64.whl

该wheel文件可以从thundersvm的GitHub上进行获取

image-20230629131036943

如果Linux的cuda版本不是9.0那么要使用下面的普通下载方式

普通下载

普通下载是通过git clone原项目然后在项目中进行构建的方式进行

命令
git clone https://github.com/Xtra-Computing/thundersvm.git

进入项目,构建cmake

cd thundersvm
mkdir build && cd build && cmake .. && make -j
问题

最常见的问题应该是关于 libthundersvm.so的问题

在执行上述buildmake j构建的过程中还可能会遇到一些包缺失**(比如cmake和libcurl3)**的问题

在我的情况下使用apt install安装cmake是会出现问题的,所以使用了snap

解决方法
以下操作需要使用sudo权限

首先安装libcurl3

sudo apt install libcurl3

image-20230629132446588

使用 sudo snap install cmake --classic 进行cmake的下载

image-20230629132532388

进入thundersvm刚刚创建的build目录,执行 sudo make install进行cmake的构建

image-20230629131837783

然后在程序的执行路径中导入thundersvm的路径,就可以使用了

具体使用方法如下

使用thundersvm

我使用的是thundersvm中的SVC函数

进入thundersvm项目根目录,会发现其下有一个python目录,这就是python下thundersvm的源码存放位置,要调用的thundersvm中的函数也都在这里实现

而我们要做的也就是调用该python脚本中函数

image-20230629132922133

可以看到thundersvm除了支持python之外还支持MATLAB和R语言,根据语言的函数调用方式可以进行调用然后使用GPU进行加速,实现的都是svm算法

image-20230629133011969

image-20230629133020407

接下来就是在程序中调用python目录下thundersvm目录中的thundersvm脚本

image-20230629133225019

调用方式

在代码中使用sys库引入该文件的执行路径(按道理来说cmake构建好了之后thundersvm就会添加到程序的执行路径中,然后直接import thundersvm就可以使用了,但是我在使用的时候没有识别到)

import sys
sys.path.append("thundersvm脚本的路径(建议使用绝对路径,省心)")

image-20230629133454243

将该执行路径添加之后,可以使用查看该程序中的执行路径

print(sys.path)

image-20230629133653410

可以看到我再进行cmake构建之后,thundersvm的执行路径并没有被检测到,所以需要手动添加

添加之后就可以引入thundersvm库,如果import成功即可以使用,即大功告成

import thundersvm
或
from thundersvm import SVC

这两个都一样

image-20230629133913446

看到可以使用之后就成功了,之后可以调用该库中的函数

在代码中的使用

训练代码更改

在代码中的使用非常简单, 只需要替换掉原先使用的svm函数即可

例如我要是用SVC函数进行模型的训练

之前的定义如下

from sklearn import svm
...
svc = svm.SVC(max_iter=96000, verbose=True)
更改内容

现在的定义如下

from thundersvm import SVC
...
svc = SVC(max_iter=96000, verbose=True)

即可

加载模型同样需要导入thundersvm

在使用joblib库对模型导出, 要放到混淆矩阵中进行模型性能评估时

例如如下过程将模型放到混淆矩阵中进行指标评测

import joblib

joblib.dump(model, "model.joblib") # 这里的.joblib后缀可以不加,即使不加导出的文件的类型也不会变化,但是加了可以增加识别度,让人一看就能看出来这是一个模型文件

model = joblib.load('model.joblib')

# 混淆矩阵
conf_mat = confusion_matrix(list(y_test), list(y_pred), labels=labels)

accuracy = accuracy_score(y_test, y_pred)
precision= precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1_score = f1_score(y_test, y_pred)

如果该模型是使用thundersvm训练出来的, 那么在加载的时候也需要thundersvm

因为 ThunderSVM 使用了自己的模型格式和内部实现,与其他 SVM 库(如 scikit-learn)的模型格式不兼容, 在加载模型时,需要使用 ThunderSVM 库解析和还原模型的参数以及使用相应的算法进行预测。

更改内容

所以上述代码应该添加thundersvm的库引入, 只需添加如下代码:

import sys
sys.path.append("thundersvm/python/thundersvm") #这里根据自己的路径进行更改

from thundersvm import SVC
...

即可

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Every DAV inci

小辣鸡一枚,不求打赏啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值