【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】

linux配环境心得:conda/本地配cuda,cudnn及pytorch心得

  • 我们服务器遇到的大多数找不到包的问题
  • 一,服务器安装cuda和cudnn
    • 使用conda在线安装cuda和cudnn
    • 使用conda进行本地安装
    • 检查conda安装的cuda和cudnn
    • 本地直接安装cuda和cudnn
      • 方法一:直接更换镜像
      • 方法二:在nvidia官网下载cuda和cudnn之后进行安装
  • 二:服务器安装pytorch
    • 换源或换命令安装pytorch
    • 本地安装pytorch
        • 报错: xxx.whl is not a supported wheel on this platform
    • 检查pytorch是否成功安装:
  • 三:服务器运行git命令(git reset/ git clone)

我们服务器遇到的大多数找不到包的问题

都是因为国内的网络环境以及墙的问题,导致我们服务器使用了源,或conda使用了源的问题。
使用命令: conda install ,提示找不到包,很可能是因为我们使用了源,然后源里没存那个包。
使用命令: conda search cudatoolkit,找不到包,那其实是这个源里没这个包,不是说conda真的装不上那个特定版本的cuda。

又比如,使用git clone, git reset,一直报很奇怪的错,网上搜索的方法试了又试,都解决不了这个问题,之后发现是国内链接github比较慢,使用一下学术加速就解决了。

又比如,conda install pytorch -c pytorch,怎么都装不上,找不到包,也是连接pytorch官网比较慢

所以这里,笔者通过在autodl上搭建环境的例子,重新整一遍linux新环境中配置cuda,cudnn,pytorch以及安装好一个github包,并通过git硬调apex版本,来掩饰一下,当国内网不好,或使用的服务器网不好的时候,我们有多少种方法把环境给配好。(比如本地安装,换源,conda换pip之类的。)

一,服务器安装cuda和cudnn

使用conda在线安装cuda和cudnn

一般情况下,我们使用conda在虚拟环境中安装cuda和cudnn,我们会先搜索conda能提供的cuda包和cudnn包再安装。
比如使用如下所示代码:

conda search cudatoolkit
conda search cudnn

之后安装显示出来的列表里图里有的cuda和cudnn版本。

conda install cudatoolkit==xx.xx
conda install cudnn==xx.xx

比如当我在autodl上默认环境中运行:conda search cudatoolkit时,显示出来的是如下画面:
在这里插入图片描述
可以看到,显示出来的包不全,导致我们配环境也配的很困难(conda search cudnn同理,同样是不全。)
不管是直接使用命令进行安装conda install cudatoolkit==xx.xx,还是使用命令conda search cudatoolkit --info自己根据链接下载里面对应的包再本地安装,前提是我们得能搜索到对应的包啊,连包都搜索不到怎么安装(比如我们想安装11.1版本的cuda,我们至少得能搜索到cuda11.1啊,但这里的cudatoolkit连11.1都搜索不到。)

为什么conda能提供的cuda版本和cudnn版本这么少?我尝试运行了一下这两行命令进行搜索:

conda search cudatoolkit -c conda-forge
conda search cudnn -c conda-forge

这回能搜索到一系列的包。
在这里插入图片描述
确定原因:是网络和源的问题,导致conda搜索不到。
尝试换一下源再搜索:

#conda清除添加源,恢复默认源
conda config --remove-key channels
#添加一些清华源(有时候清华源崩了,可以换阿里源,阿里源崩了,可以换中科大源。国内安环境遇到问题,比如查找不到包的问题,很多都是网络的问题)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

这时候再重新运行命令:

conda search cudatoolkit
conda search cudnn

这时候就能显示一系列能安装的conda 包了(conda搜索不到包,还是源的问题。)
在这里插入图片描述
这时候运行命令就可以了:

conda install cudatoolkit==xx.xx
conda install cudnn==xx.xx

使用conda进行本地安装

有时候直接去搜索conda-forge,去安装的时候,因为服务器没法访问外网,如果不是用源里面的文件,可能下载速度会很慢。我们可以使用这条命令:

conda search cudatoolkit --info

在这里插入图片描述
访问搜索出来的包的url,然后自己下载好,上传到服务器上,之后使用命令安装。
比如我们下载的两个包是cudatoolkit-11.3.1-h2bc3f7f_2.conda和cudnn-8.2.1-cuda11.3_0.conda,我们可以运行这两个命令进行安装。(下载的如果是压缩包,记得解压)

conda install ./cudatoolkit-11.3.1-h2bc3f7f_2.conda
conda install ./cudnn-8.2.1-cuda11.3_0.conda

检查conda安装的cuda和cudnn

conda list | grep cudatoolkit
conda list | grep cudnn

本地直接安装cuda和cudnn

方法一:直接更换镜像

实际上我们没必要把每一步都按照自己的想法去强迫其实现,这样会很浪费我们的时间,有时候同一张卡,我们直接升降配置换个镜像,就可以配好了。这能极大的提升我们做科研的速度。(不过我还是想把整体配环境的流程配一遍)

方法二:在nvidia官网下载cuda和cudnn之后进行安装

比如我们想安装cuda11.1.1和配套的cudnn7.6.5,我们首先要在nvidia官网的cuda-toolkit页面下载cuda11.0。
请添加图片描述
我们点进该页面,之后选择相关的文件,然后下载就可以了。
在这里插入图片描述
之后按照这个页面下面的链接运行即可成功安装上。
在这里插入图片描述
之后是配置cuda的环境变量的部分。具体安装过程如图所示:安装CUDA并配置环境变量。或参考这个帖子的配置环境变量过程:Linux系统下CUDA和cuDNN环境配置 。

接着我们进入nvidia-cudnn网址进一步下载cudnn
(这一步需要登陆)

安装cudnn之后,要执行一些列复制头文件的命令,参考此网址即可。对命令具体不懂的,可以询问ChatGPT 。

二:服务器安装pytorch

换源或换命令安装pytorch

pytorch官网

比如官网的conda安装命令是:

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 -c pytorch

实际上这个版本还有对应的pip安装命令:

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html

在安装pytorch的过程中,我们还可以换源
换源安装pytorch

本地安装pytorch

pytorch离线下载网址
比如如果pytorch官网告诉我们的安装命令是:

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 -c pytorch

我们可以去上面的离线包下载网址,把对应python版本和cuda版本的pytorch,torchvision还有torchaudio都下载上:

torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
torchaudio-0.8.0-cp38-cp38-linux_x86_64.whl
torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl

之后我们把下载的包上传到服务器以后,在本地路径上直接pip安装就可以了。

pip install torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
pip install torchaudio-0.8.0-cp38-cp38-linux_x86_64.whl

报错: xxx.whl is not a supported wheel on this platform

不过本地安装pytorch的whl文件的一个问题就是,我们可能需要改一下文件的名字(因为新版的pip必须把文件名按规定的语法来修改才能安装上)
具体可以参考这三个网址:ERROR: torch-1.12.0+cu116-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.,xxx.whl is not a supported wheel on this platform-查看pip支持的安装包版本,用whl安装pytorch踩坑实录(whl is not a supported wheel on this platform.)​​
我改了文件名后,成功安装上了。

我改的文件名:
torch-1.8.0+cu111-py38-none-linux_x86_64.whl
然后就成功安装上了
pip install torchvision-0.9.0+cu111-py38-none-linux_x86_64.whl
最后:
pip install torchaudio-0.8.0-py38-none-linux_x86_64.whl

检查pytorch是否成功安装:

import torch
print(torch.__version__)
print(torch.cuda.is_available())
# 打印当前可见可用的GPU数目
print(torch.cuda.device_count())
# 获取GPU名字
print(torch.cuda.get_device_name())

三:服务器运行git命令(git reset/ git clone)

这个同样是源或网络的问题,autodl有一个学术加速。

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

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

相关文章

java高级:注解

目录 认识注解&自定义注解元注解解析注解注解的应用场景 认识注解&自定义注解 注解和反射一样,都是用来做框架的,我们这里学习注解的目的其实是为了以后学习框架或者做框架做铺垫的。 先来认识一下什么是注解?Java注解是代码中的特…

嵌入式学习笔记(31)异常向量表的编程处理

6.5.1像内存一样去访问异常向量表 (1)S5PV210的异常向量表可以改变(在CP15协处理器中),以适应操作系统的需求。但是目前系统刚启动,此时DRAM尚未初始化,程序哦都市在iSRAM中运行。210在iSRAM中…

C++下基于粒子群算法解决TSP问题

粒子群优化算法求解TSP旅行商问题C(2020.11.12)_jing_zhong的博客-CSDN博客 混合粒子群算法(PSO):C实现TSP问题 - 知乎 (zhihu.com) 一、原理 又是一个猜答案的算法,和遗传算法比较像,也是设…

入门人工智能 ——自然语言处理介绍,并使用 Python 进行文本情感分析(5)

入门人工智能 ——自然语言处理介绍,并使用 Python 进行文本情感分析(5)) 入门人工智能 ——自然语言处理介绍,并使用 Python 进行文本情感分析介绍自然语言处理的挑战NLP的基本任务NLP的基本技术NLP的应用领域 使用 P…

FPGA的基础架构,什么是CLB?

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 CLB是指可编程逻辑功能块(Configurable Logic Blocks),顾名思义就是可编程的数字逻辑电路。CLB是FPGA内的三个基本逻辑单元。C…

与社交媒体结合:视频直播美颜sdk在社交平台上的应用

为了让直播内容更吸引人,视频直播美颜sdk(Software Development Kit)正逐渐崭露头角,为社交媒体用户提供了卓越的美颜效果和互动体验。 一、什么是视频直播美颜sdk? 在深入讨论如何将视频直播美颜sdk整合到社交媒体平…

CSS元素浮动

概述 浮动简介 在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。 元素浮动后的特点 脱离文档流。不管浮动前是什么元素,浮动后,默认宽与高都是被内容撑开的(尽可能小)&am…

时序分解 | MATLAB实现基于小波分解信号分解分量可视化

时序分解 | MATLAB实现基于小波分解信号分解分量可视化 目录 时序分解 | MATLAB实现基于小波分解信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于小波分解的分量可视化,MATLAB编程程序,用于将信号分解成不同尺度和频率的子信…

实用技巧:Linux上实现OpenGauss数据库远程连接,方便的跨网络数据操作

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 🍁 小结 🍁 前言 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许…

Spring-MVC使用JSR303及拦截器,增强网络隐私安全

目录 一、JSR303 ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 常用注解 ( 4 ) 入门使用 二、拦截器 2.1 是什么 2.2 拦截器与过滤器的区别 2.3 应用场景 2.4 基础使用 2.5 用户登录权限控制 给我们带来的收获 一、JSR303 ( 1 ) 是什么 JSR 303是Java规范请求&#xff…

进程间通信——共享内存

目录 共享内存的原理 共享内存通信的实现步骤 通信实例 共享内存的原理 原理:可以说,共享内存是一种最为高效的进程间通信方式。因为进程可以直接读写内存,不需要任何数据的复制。为了在多个进程间交换信息,内核专门留出一块内…

C语言 —— 初步入门知识(第一个C语言程序、数据类型、变量常量、字符与注释)

本篇文章介绍C语言的基础知识,使读者对C语言能够有一个大概的认识. 不会细写每一个知识点, 但是能够入门C语言, 进行初步的C语言代码阅读. 首先, 什么是语言? 对于人和人之间进行交流的语言, 我们知道, 可以通过汉语, 英语, 日语等语言进行交流. 那么对于人和计算…

计算机网络:三次握手与四次挥手

摘取作者:拓跋阿秀 三次握手 三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后…

SpringMVC系列(四)之SpringMVC实现文件上传和下载

目录 前言 一. SpringMVC文件上传 1. 配置多功能视图解析器 2. 前端代码中,将表单标记为多功能表单 3. 后端利用MultipartFile 接口,接收前端传递到后台的文件 4. 文件上传示例 1. 相关依赖: 2. 逆向生成对应的类 3. 后端代码&#xf…

(10)(10.9) 术语表(一)

文章目录 前言 1 2.4Ghz 2 AGL 3 AHRS 4 APM 5 AMA 6 Arduino 7 APM (AutoPilot Mega) 8 ATC 9 Copter 10 Plane 11 Rover 12 BEC 13 Bootloader 14 COA 15 DCM 16 Eagle file 17 ESC 18 Firmware 19 FPV 20 FTDI 前言 !Note 术语表未编入索…

微信小程序学习笔记1.0

第1章 微信小程序基础 1.1 微信小程序介绍 1.1.1 什么是微信小程序 微信小程序的特点: ① 微信小程序是不需要下载和安装的; ② 它可以完成App应用软件的交互功能; ③ 用户扫一扫或者搜一下就可以使用小程序; ④ 微信小程序…

Python模板注入(SSTI)

概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码分离。即也拓宽了攻击面,注入到模板中的代码可…

数据库逻辑透明-架构真题(二十九)

(2020年)假设某计算机字长为32位,该计算机文件管理系统磁盘空间管理采用位示图(bitmap)记录磁盘的使用情况。若磁盘的容量为300GB,物理块大小为4MB,那么位示图的大小为()…

海外媒体发稿:海外汽车媒体推广9个方式解析

根据下列9个国外汽车媒体推广方式,企业能够在国际范围内突破边界,获得领域关心。这将帮助企业完成国际化发展发展战略,扩展市场占有率和提升盈利空间。【华媒舍】国外全媒体发表文章将会成为企业完成这一目标的重要方式,为企业带来…

Java中的异常基础知识

目录 什么是异常? 1.算术异常 2.数组越界异常 3.空指针异常 4.输入不匹配异常 Java异常体系 异常的处理 防御式编程: 事后认错 异常处理流程 自定义异常 什么是异常? 在Java中,将程序执行过程中发生的不正常行为称为异常 1.算术异常 public static void main(St…