ubuntu18.04复现yolo v8环境配置之CUDA与pytorch版本问题以及多CUDA版本安装及切换
最近在复现yolo v8的程序,特记录一下过程
环境:ubuntu18.04+ros melodic
小知识:GPU并行计算能力高于CPU—B站UP主说的
Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA,不必删除之前的CUDA,可以实现多版本的CUDA切换
一、查看当前PyTorch使用的CUDA版本:
python -c "import torch; print(torch.version.cuda)"
注意:sudo ln -sf libcudnn.so.8.0.5 libcudnn.so.8
1.需要进入conda环境
2.进入conda环境命令:
conda activate ****
3.查看conda环境命令:
conda env list
4.卸载指定conda环境:
conda remove -n 需要删除的环境名 --all
5.创建conda环境:
conda create -n [your_env_name] python=[X.X](2.7、3.6等)
#eg:conda create -n django_env python=3.6
二、假设ubuntu系统已经安装了CUDA,此时需要重新安装另外一个版本(如果你是第一次安装CUDA也没关系,重复下面步骤两次,选择不同的CUDA版本即可)。进入cuda官网,选择需要的版本。
原因:为什么如此麻烦下载多个版本的CUDA呢?因此我们在复现别人代码时,都会看到类似的要求:
Pip install the ultralytics package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.
不同程序需要不同版本的python和pytorch,而pytorch和CUDA之间有一定的对应关系,如果不按要求安装,会造成后续报错,无法复现他人的程序。pytorch和CUDA的对应关系网站:
https://pytorch.org/get-started/previous-versions/
CUDA官网下载:https://developer.nvidia.com/cuda-toolkit
注意:官网页面显示的是最新版本的cuda,点击Resources中的Archive of Previous CUDA Releases,选择之前的版本,例如我这里选择的是CUDA Toolkit 11.1.1 (October 2020), Versioned Online Documentation
点击CUDA Toolkit 11.1.1即可
按照下图进行选择Linux—x86_64—Ubuntu—18.04—runfile(local)
下载方法可以参考我另外一篇博客:ubuntu系统配置CUDA和cuDNN
大致流程如下
安装:复制https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
到另外一个网页进行下载。
使用如下命令安装
sudo sh cuda_11.1.1_455.32.00_linux.run
后面的步骤为:
1. Q:Existing package manager installation of the driver found. It is strongly │
│ recommended that you remove this before continuing. │
│ Abort │
│ Continue
A:Continu2. Q:Do you accept the previously read EULA?(accept/decline/quit):
A:accept # 接受协议
3.Q:
│ CUDA Installer │
│ - [X] Driver │
│ [X] 455.32.00 │
│ + [X] CUDA Toolkit 11.1 │
│ [X] CUDA Samples 11.1 │
│ [X] CUDA Demo Suite 11.1 │
│ [X] CUDA Documentation 11.1 │
│ Options │
│ Install
A:
#注意根据提示:[ ]中没有X的即不选择,[X] 表示选择安装,因为已经提前安装了显卡驱动,所以把显卡驱动的安装选项取消掉:
#只有CUDA Toolkit 11.0是必选项,其他可选可不选
# Install进入下一步
4.Q: A symlink already exists at /usr/local/cuda. Update to this installation? │
│ Yes │
│ No
A:N0,选择no,否则会创建一个软连接覆盖之前那个/usr/local/cuda
至此CUDA11.1安装成功
cuda版本切换和环境变量设置
1、在 ~/.bashrc 文件中设置cuda的环境变量内容如下,这样是可以做到cuda版本切换的,通过更换软连接方式:
gedit ~/.bashrc
添加环境变量,在~/.bashrc的最后添加以下内容export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda保存文件,然后运行命令:
source ~/.bashrc
安装后,在/usr/local路径下,通过ls命令查看是否存在新安装的CUDA目录:
可以看到有之前安装的cuda-11.0和新安装的cuda-11.1
三、安装对应的cuDNN
安装新的版本的CUDA后,还要安装对应的cuDNN。
1、首先下载对应版本的cuDNN
百度搜索cuDNN官网,下载CUDA对应版本的cuDNN
https://developer.nvidia.cn/rdp/cudnn-archive
我下载的是Download cuDNN v8.0.5 (November 9th, 2020), for CUDA 11.1
此处下载:
cuDNN Library for Linux (x86_64)
2、cd到cudnn压缩包所在的文件夹下进行解压等操作:
tar -zxvf cudnn-11.1-linux-x64-v8.0.5.39.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.1/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64/
sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h /usr/local/cuda-11.1/lib64/libcudnn*cd /usr/local/cuda-11.1/lib64/
sudo ln -sf libcudnn.so.8.0.5 libcudnn.so.8
注意:这里cuda-后面的数字根据自己的版本号进行个修改,不知道的话可以Tab补全
四、CUDA版本的切换
1、删除原版本的cuda软连接
sudo rm -rf /usr/local/cuda
2、建立新的指向cuda-11.1的软连接
sudo ln -s /usr/local/cuda-11.1 /usr/local/cuda
3、重新查看当前CUDA版本
cd /usr/local/
stat cuda
五、安装yolo v8所需的pytorch
前几步已经安装好了cuda和cudnn,这里下载对应的pytorch==1.8.0
cuda和pytorch版本关系网址:https://pytorch.org/get-started/previous-versions/
a.创建yolov8的conda环境
conda create -n yolov8 python=3.8
b.进入yolov8的conda环境
conda activate yolov8
c.下载pytorch及对应的torchvision、torchaudio、cudatoolkit等
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
注意:此时报错
/ WARNING conda.core.envs_manager:register_env(50): Unable to register enviroment. Path not writable or missing.
解决办法:这是一个conda新建虚拟环境的权限问题,给予主目录下anaconda3文件权限即可(在主目录下打开终端),执行以下命令。
sudo chown -R dlut anaconda3
其中:dlut是我电脑的名字,根据实际情况修改。
回到之前的终端,重新执行
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
此时,显示了yolov8的conda环境已经成功配置,执行以下命令即可查询到pytorch对应的cuda版本。
python -c "import torch; print(torch.version.cuda)"
显示的是CUDA 11.1。
终于搞定了,完结撒花~~ 接下来正式安装及运行yolov8
相关文章:

ubuntu18.04复现yolo v8环境配置之CUDA与pytorch版本问题以及多CUDA版本安装及切换
最近在复现yolo v8的程序,特记录一下过程 环境:ubuntu18.04ros melodic 小知识:GPU并行计算能力高于CPU—B站UP主说的 Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA,不必删除之前的CUDA,…...
Yaml配置文件读取方法
在日常的代码中,有一些值是配置文件中定义的,这些值可以根据用户的要求进行调整和改变。这往往会写在yaml格式的文件中。这样开放程序给用户时,就可以不必开放对应的源码,只开放yaml格式的配置文件即可。 将配置文件中的值读入程…...
Python3 lambda 函数入门示例 Python lambda 函数
Python lambda 函数 首先,这个语法跟C的语法几乎一样; 通常称 lambda 函数为匿名函数,也称为 丢弃函数,因为应一下子就不要了,不会长期凝结下来形成SDK API;本人觉得它有点类似 inline 函数,或者…...

【计算机网络】HTTPs 传输流程
HTTPS和HTTP的区别 1、HTTP协议传输的数据都是未加密的,是明文的,使用HTTP协议传输隐私信息非常不安 HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。 2、HTTPS协议需要到CA申请证书,一般…...
【Linux】国产深度系统装机必备(开发、日常使用)
开发相关工具 IDE推荐官网下载JetBrains Toolbox,后续所有与jetbrains直接全部到toolbox中下载,这里默认所有的app全部放在个人用户下(/data/home/计算机用户名/.local/share/JetBrains/Toolbox/apps)终端可视化工具:…...

动态规划入门:斐波那契数列模型以及多状态(C++)
斐波那契数列模型以及多状态 动态规划简述斐波那契数列模型1.第 N 个泰波那契数(简单)2.三步问题(简单)3.使⽤最⼩花费爬楼梯(简单)4.解码方法(中等) 简单多状态1.打家劫舍ÿ…...

LeetCode438.找到字符串中所有字母异位词
因为之前写过一道找字母异位词分组的题,所以这道题做起来还是比较得心应手。我像做之前那道字母异位词分组一样,先把模板p排序,然后拿滑动窗口去s中从头到尾滑动,窗口中的这段字串也给他排序,然后拿这两个排完序的stri…...

【微服务】03-HttpClientFactory与gRpc
文章目录 1.HttpClientFactory :管理外向请求的最佳实践1.1 核心能力1.2 核心对象1.3 HttpClient创建模式 2.gRPC:内部服务间通讯利器2.1 什么是gRPC2.2 特点gRPC特点2.3.NET生态对gRPC的支持情况2.4 服务端核心包2.5 客户端核心包2.5 .proto文件2.6 gRP…...

iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令)
.a/.framework其实是把编译生成的.o文件,打包成一个.a/.framework文件。a的意思是archive/归档的意思。 查看静态库.a文件包含的内容用下面的命令解压: ar x xxx.a 用ar命令打包静态库: 参数r是将后面的*.o或者*.a文件添加到目标文件中 参数…...

Idea常用快捷键--让你代码效率提升一倍(一)
一、代码编辑相关快捷键 1.单行复制(实现快速创建多个对象)CtrlD 2.空出下一行 ShiftEnter 3.单行注释快捷键 ctrl / 4.快速构建构造函数,setter,getter、toString方法 AltInsert 4.显示快速修复和操作的菜单 altenter 5.格式化代码:C…...
【Open3D】第二篇:GUI编程
文章目录 基本控件创建创建文本框创建button创建布局 绘制形状绘制线段绘制点云 设置属性设置线宽设置点大小 可用Shader汇总GUI框架 基本控件创建 创建文本框 push_edit gui.TextEdit()创建button push_button gui.Button(...) push_button.horizontal_padding_em 0.5 p…...
【Python】P0 本系列博文简介与大纲
Python 前言本系列博文适合谁本系列博文不适合谁本系列博文大纲 前言 本系列博文基于《Python Cookbook》一书,Python 3 版本;本系列博文的目标不是为了构建一个 Python 知识大全,而是为了那些需要快速将 Python 学以致用的相关人员…...

FL Studio 21.1.0 Build 3713中文破解免费下载安装激活
FL Studio 21是一个功能齐全、开放式的PC音乐创作和制作环境。它具有基于音乐序列器的图形用户界面。 这个数字音频工作站将您所需的一切整合在一个包中,用于创作、编排、录制、编辑、混音和掌握专业质量的音乐。 FL Studio 21是从你的大脑到扬声器的最快方式。制作…...

从0开始配置eslint
没有在.eslintrc文件中配置parserOptions指定语言版本和模块类型 {"parserOptions": {"ecmaVersion": 7, //指定es版本为es2016"sourceType": "module", //使用import导入模块} }eslint还不能识别jsx语法 {"parserOptions"…...

Activity 的启动流程(Android 13)
Activity 的启动过程分为两种:一种是普通 Activity 的启动过程,另一种是根 Activity 的启动过程。普通 Activity 指的是除应用程序启动的第一个 Activity 之外的其他 Activity。根 Activity 指的是应用程序启动的第一个 Activity,因此&#x…...
deepspeed学习资料
记录一些deepspeed学习过程中的好文章 【进行中】1、DeepSpeed使用指南(简略版)_Reza.的博客-CSDN博客 - 含deepspeed的安装方法 - 含 zero config的不同配置,stage1、stage2、stage3的配置和解释...

数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响...
全文链接:http://tecdat.cn/?p31445 机器学习在环境监测领域的应用,着眼于探索全球范围内的环境演化规律,人类与自然生态之间的关系以及环境变化对人类生存的影响(点击文末“阅读原文”获取完整代码数据)。 课题着眼于…...

Docker-Consul
Docker-Consul 一、介绍1.什么是服务注册与发现2.什么是consul3.consul提供的一些关键特性: 二、consul 部署1.环境准备2.consul服务器3.查看集群信息4.通过 http api 获取集群信息 三、registrator服务器1.安装 Gliderlabs/Registrator2.测试服务发现功能是否正常3…...
Pygame编程(2)display模块
pygame编程2-display设备显示 pygame.display.init() 初始化 display 模块init() -> None pygame.display.get_init() 获取display初始化 状态,如果已经初始化,返回 True,否则返回Falseget_init() -> bool pygame.display.quit() 退出…...
第十五天|104.二叉树的最大深度、111.二叉树的最小深度、 222.完全二叉树的节点个数
104.二叉树的最大深度 题目链接:104. 二叉树的最大深度 - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullp…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...