当前位置: 首页 > news >正文

cuml机器学习GPU库 sklearn升级版AutoDL使用

CUML库

最近在做机器学习任务的时候发现我自己的数据集太大,直接用sklearn 跑起来时间很长,然后问GPT得知了有CUML库,后来去研究了一下,发现这个库只支持linux系统,从官网直接获取下载命令基本上也实现不了最后,选择使用AutoDL租了一个GPU来安装这个库。具体步骤如下。


如果是正常讨论的话本身电脑就是liunx系统,按照道理说,直接去下面的官网链接去过去下载指令就可以了。进去之后的界面如下,反正我是没有成功,单我看似乎别人都是这吗做的,所以姑且把链接贴上。
链接: https://docs.rapids.ai/install#prerequisites
在这里插入图片描述

安装

接下啦是我的方法,首先进入AutoDL官网
链接: https://www.autodl.com/home
点击右上角的控制台
在这里插入图片描述
点击左侧的实例容器
在这里插入图片描述
点击租用新的实例
在这里插入图片描述
选择一个带GPU的设备
在这里插入图片描述
滑到最底部然后选择框架,以及cuda版本
在这里插入图片描述
点击立即创建
在这里插入图片描述
创建成功之后点击右侧的jupterlab
在这里插入图片描述
点击下面的终端创建一个终端窗口
在这里插入图片描述
然后再里面我们需要建立一个新的解释器环境,来保证与cuml库适配,不会因为python版本问题导致安装失败。
我们先输入如下指令

conda create -n rapids python=3.9

然后输入y敲回车进入安装
在这里插入图片描述
然后输入如下指令

source activate rapids

进入我们刚刚安装好的环境
在这里插入图片描述
最关键的部分来了请运行如下命令,从这个源安装cuml库

pip install --default-time=300 --extra-index-url=https://pypi.nvidia.com cuml-cu11

等待安装成功之后,在命令行输入python,然后再输入import cuml
OK 没问题
在这里插入图片描述
然后我们要在jupter上使用所以需要配置一下新的内核,我们先输入exit()退出python,然后再命令行输入如下命令

python -m ipykernel install --name rapids

如果遇到如下情况我们先安装ipykernel
在这里插入图片描述
输入如下指令安装

 pip install ipykernel

在这里插入图片描述
之后输入

python -m ipykernel install --name rapids

注意一定要在新建的环境下输入该命令
如果安装错了运行如下命令删除内核

jupyter kernelspec remove rapids

在这里插入图片描述
之后点击一下浏览器的页面刷新
在这里插入图片描述
再点击右侧加号
在这里插入图片描述
即可以看到新的内核的jupter笔记本,点开笔记本。
在这里插入图片描述
输入

import cuml

然后点击上方小三角,没有报错运行成功
在这里插入图片描述

对比实验

为了对比我们也要安装sklearn库做一下时间的对比
回到启动页点击终端
在这里插入图片描述
进入终端依次输入以下两个指令

source activate rapids

清华园 sklearn安装命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn

在这里插入图片描述
看到安装成功
回到刚才建好的ipynb文件,输入

import sklearn

运行没报错
在这里插入图片描述
接下来我们用KNN算法进行以下对比
首先运行sklearn的KNN算法如下,运行时间1分11秒
在这里插入图片描述

from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import numpy as np
import timeX = np.random.random((1000000,70))
y = np.random.randint(0,2,1000000)# 分割数据为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 初始化KNN分类器。这里选择邻居数为3。
knn = KNeighborsClassifier(n_neighbors=20)# 使用训练数据拟合模型
start_time = time.time()  # 记录开始时间
knn.fit(X_train, y_train)# 进行预测
y_pred = knn.predict(X_test)
end_time = time.time()  # 记录结束时间
elapsed_time = end_time - start_time  # 计算程序运行时间,单位为秒
# 将秒数转换为小时、分钟和秒数
hours = int(elapsed_time // 3600)
minutes = int((elapsed_time % 3600) // 60)
seconds = int(elapsed_time % 60)
print(f"程序运行时间:{hours}小时 {minutes}分钟 {seconds}秒\n")# 评估预测的准确性
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

接下来我们查找cuml库中KNN算法的API

cuml库API用法查询

链接: https://docs.rapids.ai/api/cuml/stable/

点击右上角小放大镜
在这里插入图片描述
然后输入sklearn中KNN算法的API名称
在这里插入图片描述
我研究了一下用的是这个
在这里插入图片描述
然后我们用

from cuml.neighbors import KNeighborsClassifier

替换

from sklearn.neighbors import KNeighborsClassifier

运行,使用时间从1分11秒缩短为5秒
在这里插入图片描述
在这里插入图片描述

from sklearn.model_selection import train_test_split
# from sklearn.neighbors import KNeighborsClassifier
from cuml.neighbors import KNeighborsClassifierfrom sklearn.metrics import accuracy_score
import numpy as np
import timeX = np.random.random((1000000,70))
y = np.random.randint(0,2,1000000)# 分割数据为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 初始化KNN分类器。这里选择邻居数为3。
knn = KNeighborsClassifier(n_neighbors=20)# 使用训练数据拟合模型
start_time = time.time()  # 记录开始时间
knn.fit(X_train, y_train)# 进行预测
y_pred = knn.predict(X_test)
end_time = time.time()  # 记录结束时间
elapsed_time = end_time - start_time  # 计算程序运行时间,单位为秒
# 将秒数转换为小时、分钟和秒数
hours = int(elapsed_time // 3600)
minutes = int((elapsed_time % 3600) // 60)
seconds = int(elapsed_time % 60)
print(f"程序运行时间:{hours}小时 {minutes}分钟 {seconds}秒\n")# 评估预测的准确性
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

完结撒花

相关文章:

cuml机器学习GPU库 sklearn升级版AutoDL使用

CUML库 最近在做机器学习任务的时候发现我自己的数据集太大,直接用sklearn 跑起来时间很长,然后问GPT得知了有CUML库,后来去研究了一下,发现这个库只支持linux系统,从官网直接获取下载命令基本上也实现不了最后&#…...

C语言练习题Day1

从今天开始分享C语言的练习题,每天都分享,差不多持续16天,看完对C语言的理解可能更进一步,让我们开始今天的分享吧! 题目一 执行下面的代码,输出结果是() int x5,y7; void swap()…...

使用kubeadm安装和设置Kubernetes(k8s)

用kubeadm方式搭建K8S集群 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署&#xff1a; # 创建一个 Master 节点 kubeadm init# 将一个 Node 节点加入到当前集群中 kubeadm join <Master节点的IP和端口…...

Docker安装延迟队列插件

下载插件地址&#xff1a;https://www.rabbitmq.com/community-plugins.html 插件上传服务器 选择跟我们rabbitmq版本一致或者小于的插件即可。版本可在web管理首页查看。 将下载的插件上传到Linux系统上&#xff0c;使用 docker 命令将插件复制到容器内部 plugins目录下 do…...

推荐前 6 名 JavaScript 和 HTML5 游戏引擎

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建3D应用场景 事实是&#xff0c;自从引入JavaScript WebGL API以来&#xff0c;现代浏览器具有直观的功能&#xff0c;使它们能够渲染更复杂和复杂的2D和3D图形&#xff0c;而无需依赖第三方插件。 你可以用纯粹的JavaScript开…...

【Django】 Task5 DefaultRouter路由组件和自定义函数

文章目录 【Django】 Task5 DefaultRouter路由组件和自定义函数1.路由组件1.1路由组件介绍1.2SimpleRouter1.3DefaultRouter1.4DefaultRouter示例1.5查看访问服务接口url 2.自定义函数 【Django】 Task5 DefaultRouter路由组件和自定义函数 Task5 主要了解了DefaultRouter路由…...

Git拉取分支、基于主分支创建新的开发分支、合并开发分支到主分支、回退上一次的merge操作

系列文章目录 第1章 Git拉取分支、基于主分支创建新的开发分支、合并开发分支到主分支、回退上一次的merge操作 文章目录 系列文章目录一、拉取分支二、如何从master分支创建一个dev分支三、如何将dev分支合并到master分支四、如何回退上一次的merge 一、拉取分支 项目文件夹…...

SpringBoot实现定时任务操作及cron在线生成器

spring根据定时任务的特征&#xff0c;将定时任务的开发简化到了极致。怎么说呢&#xff1f;要做定时任务总要告诉容器有这功能吧&#xff0c;然后定时执行什么任务直接告诉对应的bean什么时间执行就行了&#xff0c;就这么简单&#xff0c;一起来看怎么做 步骤①&#xff1a;…...

数据结构(Java实现)-栈和队列

栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 先进后出 栈的使用 栈的模拟实现 上述的主要代码 public class MyStack {private int[] elem;private int usedSize;public MyStack() {this.elem new int[5];}Overridepublic …...

毕业季如何做好IT技术面试

在IT技术面试过程中&#xff0c;面试者需要展示多个方面的能力和素质&#xff0c;以确保其能够成功地适应公司的文化和环境&#xff0c;并为公司的发展做出贡献。本文将详细介绍IT技术面试的各个方面&#xff0c;并给出建议和指导。 简历和求职信 简历和求职信是面试官了解面…...

springcloud3 GateWay章节-Nacos+gateway(跨域,filter过滤等5

一 常用工具类 1.1 结构 1.2 跨域 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config new CorsConfiguration();config.addAllowedMethod("*");config.addAllowedOrigin("*");config.addAllowe…...

Nodejs+Typescript+Eslint+Prettier+Husky项目构建

NodejsTypescriptEslintPrettierHusky项目构建 准备工作初始化项目Eslint安装和配置Prettier安装和配置在Eslint中使用Prettier插件Husky安装和配置修改tsconfig.json启用表示src目录 修改package.json设置vscode调试 仓库地址 准备工作 确保已经安装了git以及Node.js和npm&a…...

轻松正确使用代理IP

Hey&#xff0c;亲爱的程序员小伙伴们&#xff01;在进行爬虫时&#xff0c;你是否曾使用过别人的代理IP&#xff1f;是否因此慌乱&#xff0c;担心涉及违法问题&#xff1f;不要惊慌&#xff01;今天我将和你一起揭开法律迷雾&#xff0c;为你的爬虫之路保驾护航。快跟上我的节…...

SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

在上一篇文章&#xff0c;讲了服务的注册和发现。在微服务架构中&#xff0c;业务都会被拆分成一个独立的服务&#xff0c;服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式&#xff0c;一种是ribbonrestTemplate&#xff0c;另一种是feign。在这一篇文章…...

lintcode 961 · 设计日志存储系统预【系统设计题 中等】

题目链接&#xff0c;描述 https://www.lintcode.com/problem/961 您将获得多个日志&#xff0c;每个日志都包含唯一的 ID 和时间戳。 时间戳是一个具有以下格式的字符串&#xff1a;Year:Month:Day:Hour:Minute:Second&#xff0c;例如2017:01:01:23:59:59。 所有域都是零填…...

windows下Qt、MinGW、libmodbus源码方式的移植与使用

windows下Qt、MinGW、libmodbus源码方式的移植与使用 1、前言 libmodbus官网&#xff1a;https://libmodbus.org/ github下载&#xff1a;https://github.com/stephane/libmodbus 截止2023年8月26日时&#xff0c;libmodbus最新版本为3.1.10&#xff0c;本篇博客基于此版本进…...

leetcode做题笔记104. 二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路一&#xff1a;递归 int dfs(struct TreeNode* node){int rdepth 1;int ldepth 1;if(node->left!NULL) ldepth rdepth dfs(node->lef…...

【Luniux】解决Ubuntu外接显示器不显示的问题

Luniux】解决Ubuntu外接显示器不显示的问题 文章目录 Luniux】解决Ubuntu外接显示器不显示的问题1. 检查nvidia显卡驱动是否正常2. 更新驱动3. 检查显示器是否能检测到Reference 1. 检查nvidia显卡驱动是否正常 使用命令行 nvidia-smi来检查显卡驱动是否正常&#xff0c;如果…...

【C++初阶】模拟实现list

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…...

三维模拟推演电子沙盘虚拟数字沙盘开发教程第13课

三维模拟推演电子沙盘虚拟数字沙盘开发教程第13课 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 在SDK中为了方便三方数据的接入&#xff0c;引入了一个用户层接口。主要是完成三方数据的接入&#xff0c;含动态数据&#xff08;如GPS&…...

flask中GET和POST的区别

GET和POST是HTTP协议中两种常用的请求方法&#xff0c;它们在如何向服务器发送数据以及数据传输方式上有所不同。下面是GET和POST的主要区别&#xff1a; 一、数据传输位置&#xff1a; GET&#xff1a;将数据通过URL的查询字符串部分&#xff08;即URL的参数&#xff09;传递…...

基于Spring Boot的游泳馆管理系统的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的游泳馆管理系统的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java spring…...

git冲突处理(已commit但忘pull的情况)

一般来说&#xff0c;你只要记得先拉再传就不会有问题&#xff0c;但如果pull后没有立刻push&#xff0c;这段时间刚好有人push了&#xff0c;就会导致冲突&#xff0c;那么你可以使用以下方法进行版本回退之后合并代码 步骤&#xff1a; git log查看所有的commit&#xff0c…...

嵌入式设备应用开发(发现需求和提升价值)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多做技术的同学,都会陷入到技术的窠臼之中。对于如何做具体的产品、实现具体的技术,他们可能很感兴趣。但是做出来的东西做什么用,或者说是有没有竞争力,事实上他们不是很关心…...

Redis Replication

Redis Replication 1、前言 在单节点搞事情, 存在的问题包括存量问题和增量问题两类, 解决方案就是1个不行上N个, 做到单机维度宕机但服务维度是可用的。 1.1 存量问题 如果目前的单节点QPS满足(也就是综合瓶颈还没达到), 那么只有宕机能影响到。如果业务量不大, 又是出于成…...

软件研发CI/CD流水线图解

当谈到现代软件开发流程时&#xff0c;持续集成&#xff08;Continuous Integration&#xff0c;简称CI&#xff09;和持续交付&#xff08;Continuous Delivery&#xff0c;简称CD&#xff09;是两个关键的实践。它们旨在加速开发流程、提高软件质量&#xff0c;并使软件发布更…...

代码随想录第五十九天

代码随想录第五十九天 Leetcode 503. 下一个更大元素 IILeetcode 42. 接雨水 Leetcode 503. 下一个更大元素 II 题目链接: 下一个更大元素 II 自己的思路:没想到哈哈哈哈&#xff01;&#xff01; 正确思路:这个题在单调栈的情况下转了一个弯&#xff0c;就是需要取一个模操作…...

“yarn“、“npm“、“cnpm“和“pnpm“的区别

"yarn"、"npm"、"cnpm"和"pnpm"的区别 npm优点&#xff1a;缺点&#xff1a; yarn优点&#xff1a;缺点&#xff1a; cnpm优点&#xff1a;缺点&#xff1a; pnpm优点&#xff1a;缺点&#xff1a; 总结&#xff1a; npm npm&#xf…...

批量将txt文件转化为excel文件

可以使用Python的内置库csv和openpyxl来完成这个任务。以下是一个基本的代码示例&#xff1a; import csv from openpyxl import Workbook # 遍历目录中的所有.txt文件 for filename in glob.glob(*.txt): with open(filename, r) as infile: reader csv.reader(…...

StringIndexOutOfBoundsException: String index out of range: 458

报错信息&#xff1a; org.springframework.dao.TransientDataAccessResourceException: ### Error updating database. Cause: java.sql.SQLException: java.lang.StringIndexOutOfBoundsException: String index out of range: 458 ... ... ... 问题原因&#xff1a; <i…...