Ray: 一个SVM范例演示多线程 (an example of SVM to demonstrate multi threading)

2 篇文章 0 订阅

Ray 是 UC berkley 提出的分布式机器学习。sklearn 是运行在单机上的机器学习,虽然支持多线程,但分布式并不支持。Ray 也支持 tensorflow,pytorch 和其他机器学习包. 这篇博客是先同样证明ray也是首先支持多线程的,分布式的支持我们在以后会给出范例。其实,分布式才是ray的优势。我们这里主要是学习为主,先看多线程。 主要看在一台机器上,多核是否都均匀负载。

1. 代码

我们先用SVM的代码来演示多线程,主要是为了看看Ray的运行机制和编程方法。前提是读者要先安装好ray的运行环境。怎样安装运行环境,先前已经有步骤说明

# 1
import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import RandomizedSearchCV
from sklearn.svm import SVC
import ray

# 2
ray.init()

# 3
digits = load_digits()

# 4
param_space = {
    'C': np.logspace(-6, 6, 30),
    'gamma': np.logspace(-8, 8, 30),
    'tol': np.logspace(-4, -1, 30),
    'class_weight': [None, 'balanced'],
}
model = SVC(kernel='rbf')
search = RandomizedSearchCV(model, param_space, cv=5, n_iter=300, verbose=10)

# 5
import joblib
from ray.util.joblib import register_ray
register_ray()
with joblib.parallel_backend('ray'):
    search.fit(digits.data, digits.target)

第一部分是import python模块,第二部分 是 ray 初始化,第三部分是 load_digits, 是载入实验数据。第四部分 SVC 是指 SVM的 cross validation 模式,第五部分是 search.fit 是指分布式训练,这个范例是多线程训练。笔者自己也是在专研学习ray的 joblib模块,因为通过它,笔者努力调通集群模式下的SVM算法。这样就达到分布式的功能了。 

2. 运行程序

运行上面的代码前,先可以新打开一个terminal,用htop命令,观察cpu核的负载情况。 当然服务器要租多核的,不能是一核的,笔者用的是8核,16G的CentOS version 8.3 的虚拟服务器。

3. 其他

本博客第一版是2021年4月30日。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值