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

news2024/11/20 7:27:16

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 time

X = 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 KNeighborsClassifier

from sklearn.metrics import accuracy_score
import numpy as np
import time

X = 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}")

完结撒花

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/919211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自学设计模式(类图、设计原则、单例模式 - 饿汉/懒汉)

设计模式需要用到面向对象的三大特性——封装、继承、多态(同名函数具有不同的状态) UML类图 eg.—— 描述类之间的关系(设计程序之间画类图) : public; #: protected; -: private; 下划线: static 属性名:类型(默认值…

如果将PC电脑变成web服务器:利用Nignx反向代理绕过运营商对80端口封锁

如果将PC电脑变成web服务器:利用Nignx反向代理绕过运营商对80端口封锁 在上一篇文章中,我们已经实现了内网主机的多次端口映射,将内网主机的端口映射到了公网,可以通过公网访问该主机了。 因为电信的家庭宽带,默认是…

SpringBoot读取Nacos配置文件

断点到ClientWorker类的getServerConfig方法,反向Debug。

2023-8-23 Trie字符串统计

题目链接&#xff1a;Trie字符串统计 #include <iostream>using namespace std;const int N 100010;int son[N][26], cnt[N],idx;char str[N];void insert(char str[]) {int p 0;for(int i 0; str[i]; i){int u str[i] - a;if(!son[p][u]) son[p][u] idx;p son[p…

Langchain+LLM

LangChain是一个开源框架&#xff0c;允许开发人员在与人工智能&#xff08;AI&#xff09;一起工作时将大型语言模型&#xff08;如GPT4&#xff09;与外部计算和数据源相结合&#xff08;它提供了一套工具、组件和接口&#xff0c;可简化创建由LLM提供支持的应用程序&#xf…

前端进阶Html+css09----BFC模型

1.什么是BFC模型 全称是&#xff1a;Block formatting context&#xff08;块级格式化上下文&#xff09;&#xff0c;是一个独立的布局环境&#xff0c;不受外界的影响。 2.FC,BFC,IFC 元素在标准流里都属于一个FC&#xff08;Formatting Context&#xff09;。 块级元素的布…

【图像分割】理论篇(2)经典图像分割网络基于vgg16的Unet

UNet 是一种用于图像分割任务的深度学习架构&#xff0c;最早由 Olaf Ronneberger、Philipp Fischer 和 Thomas Brox 在2015年的论文 "U-Net: Convolutional Networks for Biomedical Image Segmentation" 中提出。UNet 在医学图像分割等领域取得了显著的成功&#x…

Anaconda安装教程以及深度学习环境搭建

目录 前言 下载Anaconda 虚拟环境的搭建 在pycharm中配置现有的conda环境 CUDA简介 下载安装pytorch包 前言 最近换新笔记本了&#xff0c;要重新安装软件&#xff0c;以前本来是想要写这个教程的&#xff0c;但当时由于截图不全还要懒得再下载重装&#xff0c;就放弃了&…

JavaSE【继承和多态】(1)(重点:初始化、pretected封装、组合)

一、继承 继承 (inheritance) 机制 &#xff1a;是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特 性 的基础上进行扩展&#xff0c;增加新功能 &#xff0c;这样产生新的类&#xff0c;称 派生类 。 继承呈现了面向对象程序设计的层次结…

TRON归集回调

简介 设计一个通过调用api创建对应的tron地址&#xff0c;当地址收到token的时候&#xff0c;进行归集&回调通知的。包括的功能有: 根据UID创建地址归集&#xff08;TRX归集 TRC10归集 TRC20归集)回调通知&#xff08;转出回调通知&接收回调通知&#xff09;发起转出…

什么是JVM ?

一、JVM 简介 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。 常见的虚拟机&#xff1a; JVM 、 VMwave 、 Virtual Box 。 JVM 和其他两个虚拟机的区别…

《JVM修仙之路》初入JVM世界

《JVM修仙之路》初入JVM世界 博主目前正在学习JVM的相关知识&#xff0c;想以一种不同的方式记录下&#xff0c;娱乐一下 清晨&#xff0c;你睁开双眼&#xff0c;看到刺眼的阳光&#xff0c;你第一反应就是完了完了&#xff0c;又要迟到了。刚准备起床穿衣的你突然意识到不对&…

Netty核心源码解析(三)--NioEventLoop

NioEventLoop介绍 NioEventLoop继承SingleThreadEventLoop,核心是一个单例线程池,可以理解为单线程,这也是Netty解决线程并发问题的最根本思路--同一个channel连接上的IO事件只由一个线程来处理,NioEventLoop中的单例线程池轮询事件队列,有新的IO事件或者用户提交的task时便执…

Centos7 安装Docker 详细多图版

配置要求 Docker CE&#xff08;社区免费版&#xff09; 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10&#xff0c; CentOS 7 满足最低内核的要求&#xff0c;所以我们在CentOS 7安装Docker。 一、Centos安装Docker 1.1 卸载&#xff08;可选&#xff0…

项目:点餐系统2

httplib的思想简单总结; 使用线程池来处理请求由用户定义处理函数&#xff0c;告诉httplib哪个请求应该使用哪个函数处理线程接收请求并解析请求后调用处理函数 一、服务器搭建 get主要是用来获取资源的&#xff0c;post主要是客户端提交数据的。 #include"httplib.h"…

小白带你学习linux的shell脚本基础(三十五)

目录 一、概述 1、脚本就是将手动一次性执行的命令进行规范且自动化 2、学习路径 2.1表达式 2.2语句 2.3函数 2.4正则表达式 2.5文件操作四剑客 二、表达式 1、shell 2、表达式 2、1 变量 2、2 运算符 2、3shell脚本编写规范 2、4shell运行规则 2、5shell脚本运…

SpringSecurity原理

最近在研究SpringSecurity&#xff0c;肝了好多天&#xff0c;算是有点收获&#xff0c;在这里分享下 SpringSecurity是什么&#xff1f; SpringSecurity是一个强大的可高度定制的认证和授权框架&#xff0c;对于Spring应用来说它是一套Web安全标准。SpringSecurity注重于为J…

数据结构:直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 前言一、插入排序1.直接插入排序2.希尔排序 二、选择排序1. 选择排序2.堆排序 三、交换排序1.冒泡排序2.快速排序(递归)a.hoare版(PartSort1)b.挖坑法(PartSort2)c.前后指针法(PartSort…

基于引力搜索算法优化的BP神经网络(预测应用) - 附代码

基于引力搜索算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于引力搜索算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.引力搜索优化BP神经网络2.1 BP神经网络参数设置2.2 引力搜索算法应用 4.测试结果&#xff1a;5…

Mr. Cappuccino的第64杯咖啡——Spring循环依赖问题

Spring循环依赖问题 什么是循环依赖问题示例项目结构项目代码运行结果 Async注解导致的问题使用Lazy注解解决Async注解导致的问题开启Aop使用代理对象示例项目结构项目代码运行结果 Spring是如何解决循环依赖问题的原理源码解读 什么情况下Spring无法解决循环依赖问题 什么是循…