Ubuntu系统使用快速入门实践(六)——Ubuntu深度学习环境配置(1)

Ubuntu系统使用快速入门实践系列文章

下面是Ubuntu系统使用系列文章的总链接,本人发表这个系列的文章链接均收录于此

Ubuntu系统使用快速入门实践系列文章总链接


下面是专栏地址:

Ubuntu系统使用快速入门实践系列文章专栏



前言

Ubuntu是一个以桌面应用为主的Linux发行版操作系统,也是大多数人第一个接触到的Linux系统,尤其是从事理工科研究工作的人,这个系列的文章主要讲述如何使用Ubuntu系统,完成日常的学习、科研以及工作


Ubuntu系统使用快速入门实践(六)——Ubuntu深度学习环境配置(1)

所需依赖

  • 双系统win10 + ubuntu 20.04
  • Anaconda 3
  • CUDA 11.3
  • cuDNN v8.2.1
  • Pytorch 1.10.2(或1.9.0)

1.安装Anaconda

1.1 下载安装包

官网 或者 清华源

建议选择清华源,因为速度会快很多

Anaconda更换镜像源方法:

1.镜像源点

清华大学开源软件镜像站:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

中国科技大学镜像站:
http://mirrors.ustc.edu.cn/anaconda/pkgs/free/

2.更换方法

cmd命令添加:以- - -添加【清华大学开源软件镜像站】为例

打开cmd 直接依次输入下列命令:

# 清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 
# 中科大源
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/
#注意:网址中间没有空格,如果有了空格,会出现
#usage: conda-script.py [-h] [-V] command ...
#conda-script.py: error: unrecognized arguments: #//mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

1.2 进入安装文件夹,执行安装脚本

bash Anaconda3-5.3.0-Linux-x86.sh

然后一路选择yes就可以了,但到后面要注意,可能会推送vscode,根据需求选择安装,vscode下载可能比较慢。

1.3 环境变量的配置与更新

echo 'export PATH="/home/xxx/anaconda3/bin:$PATH"' >>~/.bashrc
# 注意:这里的xxx为用户名,我的用户名是jin,所以命令如下
# echo 'export PATH="/home/jin/anaconda3/bin:$PATH"' >>~/.bashrc

更新:(必须更新,否则安装后不生效! )

source ~/.bashrc  # 或者 source /etc/profile 

1.4 测试安装

conda -V
#或者
conda --version  

在这里插入图片描述

1.5 创建虚拟环境

①查看当前环境

conda env list  

②创建虚拟环境

conda create -n your_name python=3.9

③激活创建的虚拟环境

conda activate your_name 

④安装需要的包

conda install 或 pip install,如果觉得用pip安装第三方库慢或者超时报错,可以采用中科大源或者清华源

# 中科大源
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/

# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

详见 Ubuntu系统使用快速入门实践(二)——Ubuntu常用命令 中pip换源一节

创建完成后最好重启一下,不然后续安装pytorch可能会装到别的环境中

1.6 退出虚拟环境

安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境。

方法一

每次在命令行通过conda deactivate退出base环境回到系统自带的环境

conda deactivate

方法二

(1)通过将auto_activate_base参数设置为false实现:

conda config --set auto_activate_base false

(2)那要进入的话通过

conda activate base

(3)如果反悔了还是希望base一直留着的话通过conda config --set auto_activate_base true来恢复

conda config --set auto_activate_base true

方法三

通过修改.bashrc

export PATH="~/anaconda/bin:$PATH"

修改为

export PATH="$PATH:~/anaconda/bin"

这样每次登陆服务器的时候都会首先找系统自身的python路径,不会进入conda环境。

1.7 设置开机进入自己的环境

在linux下打开~/.bashrc~/.bash_profile,将

# added by Anaconda 2.1.0 installer
export PATH="~/anaconda3/bin:$PATH"

替换为

# set python3 as default
export PATH="~/anaconda3/envs/dle/bin:$PATH"

在这里插入图片描述

Windows下的Anaconda设置

参考:Anaconda超详细安装教程(Windows环境下)

Anaconda下的软件安装
Jupyter notebook

使用Anaconda安装

conda install jupyter notebook

如果没有自动安装,那么就在Shell中输入以下命令安装:

使用pip安装

pip install jupyter

注意

老版本的pip在安装Jupyter Notebook过程中或面临依赖项无法同步安装的问题。因此需要先把pip升级到最新版本。

pip install --upgrade pip

运行 Jupyter Notebook

jupyter notebook

执行命令之后,在终端中将会显示一系列notebook的服务器信息,同时浏览器将会自动启动Jupyter Notebook。

启动过程中终端显示内容如下:

$ jupyter notebook
[I 08 :58:24.417 NotebookApp] Serving
notebooks from local directory:
/Users/catherine
[I 08 :58:24.417 NotebookApp] 0 active kernels
[I 08 :58:24.417 NotebookApp] The Jupyter
Notebook is running at:
http://localhost:8888/
[I 08 :58:24.417 NotebookApp] Use Control-C to
stop this server and shut down all kernels
(twice to skip confirmation).

注意

之后在Jupyter Notebook的所有操作,都请保持终端 不要关闭 ,因为一旦关闭终端,就会断开与本地服务器的链接,将无法在Jupyter Notebook中进行其他操作浏览器地址栏中默认地将会显示:http://localhost: 8888 。其中,“localhost”指的是本机“8888”则是端口号。如果同时**启动了多个Jupyter Notebook,由于默认端口“8888”被占用,因此地址栏中的数字将从“8888”起,每多启动一个JupyterNotebook数字就加 1 ,如“8889“,”“8890”…

指定端口启动

如果想自定义端口号来启动Jupyter Notebook,可以在终端中输入以下命令:

jupyter notebook --port <port_number>jupyter notebook --port 9999

2.安装英伟达驱动

官网下载驱动:https://www.nvidia.cn/Download/index.aspx?lang=cn

法一: 命令行安装

终端执行如下指令,列出可支持的所有驱动以及推荐驱动。

ubuntu-drivers devices

在这里插入图片描述
在这里插入图片描述

一般选择推荐(recommand)驱动,安装命令如下:

sudo ubuntu-drivers autoinstall #这样就可以直接按照推荐安装了

也可手动指定安装版本,如下所示

sudo apt install nvidia-driver-510

重启ubuntu:

sudo reboot

如果需要卸载驱动,使用命令

sudo apt autoremove nvidia-driver-xxx

法二:GUI界面

**操作步骤:**搜索driver,选择additional drivers,选择所需的驱动,安装,重启。

在这里插入图片描述

注意:不论是哪种方法,安装完重启后要用nvidia-smi命令查看图形卡状态,可以看到驱动版本以及nvidia driver API 的cuda版本!

其中smi是System management interface的缩写

查看显卡状态

nvidia-smi	# 显示一次当前GPU占用情况
nvidia-smi -l	#每秒刷新一次并显示
watch -n 5 nvidia-smi # 其中,5表示每隔6秒刷新一次终端的显示结果

在这里插入图片描述

  • 第一栏的GPU:本机中的GPU编号(有多块显卡的时候,从0开始编号)图上GPU的编号是:0
  • Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的)。
  • 第二栏的Name:GPU类型,图上GPU的类型是:NVIDIA GeForce RTX 2060
  • Temp:是温度,单位摄氏度。
  • 第三栏的Perf:是性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能。
  • 第四栏下方的Pwr:是能耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。
  • 第五栏的Bus-Id是涉及GPU总线的东西
  • 第六栏的Disp.A是Display Active,表示GPU的显示是否初始化。
  • 第五第六栏下方的Memory Usage是显存使用率。
  • 第七栏是浮动的GPU利用率。
  • 第八栏上方是关于ECC的东西。
  • 第八栏下方Compute M是计算模式。
  • 下面一张表示每个进程占用的显存使用率。

注: 显存占用和GPU占用是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。

nvcc -V(或nvcc --version) 与nvidia-smi中显示的cuda版本不同,系统以nvcc -V为准

CUDA有两个主要的API,runtime API(nvcc -V 显示的cuda)和driver API(nivdia-smi中显示的cuda),两者都有相应的版本(例如8.0、9.0等)。对driver API的必要支持(e.g. libcuda.so on linux),是由GPU驱动安装程序安装的。对runtime API(e.g. libcudart.so on linux, and also nvcc)的必要支持,是由CUDA工具包安装程序安装的

一般情况下,driver API版本与runtime API版本不相同。特别是GPU驱动程序是独立于CUDA工具包(i.e. the CUDA toolkit)下安装的。这样nvidia-smi中的cuda是由NVIDIA GPU 驱动包安装的,而不是由CUDA toolkit安装的。driver API版本的cuda,就与runtime API版本的cuda没有联系了。

因为由CUDA toolkit安装的cuda编译-驱动工具nvcc,总是会报告cuda运行时版本。nvcc不知道系统安装了什么驱动版本,甚至不知道系统是否安装了GPU驱动。

所以,这两个版本不必完全相同,因为它们反映了两种不同的cuda API。

而且在大多数情况下,nvidia-smi报告的cuda版本在数值上等于或高于nvcc -V报告的cuda版本。

检测不到显卡时

参考:

Ubuntu 20.04-NVIDIA显卡驱动-安装和卸载-解决黑屏问题

Ubuntu18.04 Nvidia显卡驱动安装

P106矿卡魔改驱动修改及安装详解(含修改INF文件安装最新驱动,双独立显卡使用等)

有时候电脑会检测不到显卡,更不要谈装驱动了

输入命令

lspci | grep NVIDIA

显示如下

02:00.0 3D controller: NVIDIA Corporation Device 1c36 (rev a1)

在这里插入图片描述

其中,1c36是PCI号,根据pci号在PCI devices查询显卡型号. 从下面的查询结果可以看出,我的显卡型号是P106M,P106是NVIDIA(英伟达)推出的一款专业挖矿显卡,是基于GTX10606GB显卡芯片打造的,属于NVIDIA的产品线。P106显卡并不是针对游戏市场设计的,而是专为数字货币挖矿市场而生产的显卡。

在这里插入图片描述

然后按照显卡型号下载驱动下载官网建议的.run文件,下载完成后移动到主目录。

或者直接使用命令

sudo apt install nvidia-driver-470

在这里插入图片描述

报错

Failed to initialize NVML

参考:

Failed to initialize NVML: Driver/library version mismatch

【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法(不用重启)

Failed to initialize NVML: Driver/library version mismatch解决方案

nvidia-smi指令报错:Failed to initialize NVML: Driver解决

显卡bug解决思路 Failed to initialize NVML Driver/library version mismatch

输入

nvidia-smi

然后出现如下报错

Failed to initialize NVML: Driver/library version mismatch

在这里插入图片描述

NVIDIA内核驱动版本与系统内核版本不一致

出现该问题的原因是:系统驱动自动更新

查看驱动的版本:

cat /var/log/dpkg.log |grep nvidia

可以看到以下信息:

在这里插入图片描述

红框里指的是,系统驱动从510.85.02更新到了510.108.03。

此时在终端输入命令,查看内核的版本

cat /proc/driver/nvidia/version

在这里插入图片描述

我的另外一台机器显示为 525.125.06 版本

在这里插入图片描述

卸载现有驱动,重新安装

sudo /usr/bin/nvidia-uninstall
sudo apt-get --purge remove nvidia-*
sudo apt-get purge nvidia*
sudo apt-get purge libnvidia*

重启后,重新安装

sudo ubuntu-drivers autoinstall #这样就可以直接按照推荐安装了
# 或者
sudo apt install nvidia-driver-510
No devices were found

参考:

阿里云服务器执行nvidia-smi命令后提示【No devices were found】

安装完英伟达驱动后,使用命令nvidia-smi时,报错

No devices were found

在这里插入图片描述

首先查看下显卡是否还在,如下:

lspci | grep -i nvidia

结果如下:

在这里插入图片描述

或者

lspci | grep -i vga

结果如下

在这里插入图片描述

说明硬件是还在的。

装了别的版本的驱动就能找到了,卸了换几个版本装试试

记得重新安装后要重启

相关推荐

  1. Ubuntu - php环境配置

    2023-12-07 11:46:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 11:46:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 11:46:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 11:46:04       87 阅读
  4. Python语言-面向对象

    2023-12-07 11:46:04       96 阅读

热门阅读

  1. Xubuntu16.04系统中使用RTL8822CE8821无线网卡

    2023-12-07 11:46:04       194 阅读
  2. websocket

    2023-12-07 11:46:04       52 阅读
  3. 米贸搜|Facebook海外企业户怎么引流到line上

    2023-12-07 11:46:04       59 阅读
  4. Python高级数据结构——字典树(Trie)

    2023-12-07 11:46:04       66 阅读
  5. [数据库]阿里云postgres数据库备份恢复

    2023-12-07 11:46:04       68 阅读
  6. SQL 数据库语句- 创建和管理数据库

    2023-12-07 11:46:04       65 阅读
  7. Hive 安装部署

    2023-12-07 11:46:04       46 阅读
  8. Harmony OS (eTS语言)的起源和演进

    2023-12-07 11:46:04       56 阅读