Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务

文章目录

  • 总览
  • GPU基础环境配置
      • Ubuntu安装NVIDIA显卡驱动
      • CUDA TOOLKIT其余部分的安装
      • 安装cudnn
  • 安装Anaconda3
      • 下载sh文件
      • 添加镜像源
      • 建立虚拟环境
  • Pytorch环境配置
  • Jupyter Notebook安装与服务配置
  • MNIST实现---深度学习之HelloWrold
  • 多版本cuda切换
  • 快捷启动
  • 新建环境供他人使用

总览

本文旨在配置实验室工作站的实验环境,并通过jupyter notebook为组内同学提供服务。

这是我根据自己的理解画的草图,从下到上大概是这个架构,整个红框表示一个虚拟环境,仅供参考。
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第1张图片
各版本如下

  • GPU 2080Ti * 2
  • Nvidia470 (CUDA DRIVER 11.4)-----系统自推荐
  • cuda_10.2.89_440.33.01_linux.run(CUDA TOOLKIT 10.2)
  • cudnn-10.2-linux-x64-v7.6.5.32.tgz
  • Anaconda3
  • pytorch1.10

GPU基础环境配置

Ubuntu安装NVIDIA显卡驱动

使用标准Ubuntu仓库进行自动化安装

首先,检测你的NVIDIA显卡型号和推荐的驱动命令:

ubuntu-drivers devices

== /sys/devices/pci0000:a5/0000:a5:00.0/0000:a6:00.0==
modalias : pci: v000010DEd00001E07sv00001028sd00003718bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-460-server - distro non-free
driver : nvidia-driver-460 - distro non-free

driver : mvidia-driver-470 - distro non-free recommended

从输出结果可以看到,目前系统已连接NVIDIA显卡,建议安装驱动程序是nvidia-470版本的驱动.如果同意该建议,使用Ubuntu驱动程序命令来安装所有推荐的驱动程序.

输入以下命令:

sudo ubuntu-drivers autoinstall

之后执行nvidia-smi可以看到显卡驱动以及一些基本情况,列出表格如图
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第2张图片
但是版本太新可能不兼容,如果后面发现真的不兼容,可以回来卸载后重新安装低版本

sudo apt-get autoremove --purge nvidia-*
sudo apt-get install nvidia-driver-450
nvidia-smi 

显示GPU版本表示安装450成功

CUDA TOOLKIT其余部分的安装

因为实际上CUDA TOOLKIT里面是有Nvidia Driver的
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第3张图片
显卡驱动也就是CUDA DRIVER,上一步已经安装了driver,还需要安装toolkit中剩下的其他内容,最主要的是nvcc。

安装 CUDA TOOLKIT 10.2 (这个是工作站所有用户可以共享的,所以安装到/usr/local)

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第4张图片
提示已经有一个driver了,建议我们先去卸载driver,这里检测到的driver正是之前我们装的系统推荐的那个,本文中是Nvidia470,忽略这个警告,直接continue
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第5张图片
中间有一个协议需要accept

之后在选择安装内容的时候,取消这个driver的安装,防止出现冲突。

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第6张图片
安装完成
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第7张图片
安装完之后需要配置环境变量。

vim ~/.bashrc

文件末尾添加:

#add manually for cuda-10.2 toolkit
export PATH="/usr/local/cuda-10.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH"

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第8张图片

值得注意的是,nvcc显示cuda compilation tools 的版本也就是这里安装的CUDA 10.2和上面表格中显示CUDA version11.4(470.86)可以不一样,版本不同是因为我们先安装了cuda driver,没有用cuda toolkit里面的driver。虽然版本不一样,但是驱动是向下兼容的,由驱动版本决定可安装的CUDAToolkit的最高版本。前者是运行时API,后者是驱动API。
这个是驱动大致的对照图,左边对应nvcc现实的cuda toolkit版本,右边对应driver版本。本文的driver版本是470,远高于cuda toolkit 10左右的版本需求,所以是可以正常使用的。
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第9张图片

安装cudnn

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第10张图片
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第11张图片
上传到目录中,同样将文件移动到/usr/local文件夹下。在之前安装的/usr/local/cuda-10.2旁边解压

sudo tar -zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz

进入cuda-10.2的include文件夹还有lib64文件夹中都已经有了cudnn相关文件。

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

可以看到已安装7.6.5的cudnn
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第12张图片

安装Anaconda3

下载sh文件

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh
bash Anaconda3-5.2.0-Linux-x86_64.sh

此处注意,bash后面是你下载的文件名
后面的步骤很简单,一路yes就可以(此时有一个直接添加环境变量的选项选yes),如果不需要vscode最后一个输no就行。

source ~/.bashrc

再调用anaconda可以正常调用则安装成功

添加镜像源

网上资料很多,但是有时候照做还是有问题,考虑几个修改方法:

  • 进入~/.condarc把所有镜像源拷贝一份,去掉https中的s,同时在最下面加上ssl_verify: false
  • 更新conda:conda upgrade -n base -c defaults --override-channels conda

建立虚拟环境

conda create -n environment_name python=X.X

我创建的是:

conda create -n torch38 python=3.8

Pytorch环境配置

进入官网:
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第13张图片

进入指定的conda虚拟环境:

# 安装pytorch 
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

# 测试 pytorch 显卡是否能用
python -c "import torch; print(torch.cuda.is_available())"     # 结果应为 True

报错,提示需要设置CUDA_VISIBLE_DEVICES
安装nvidia-modprobe解决问题

sudo apt-get install nvidia-modprobe

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第14张图片

Jupyter Notebook安装与服务配置

在base环境下安装jupyter和nb_conda_kernels

可以再jupyter上切换不同的环境

安装

conda install jupyter

生成配置文件

jupyter notebook --generate-config

生成文件的路径系统会给出,vim打开配置文件,在大概75行开始是 NotebookApp(JupyterApp) configuration

在这个部分中修改:

c.NotebookApp.ip = '10.69.254.16'     # 297行设置服务器IP,默认是localhost
c.NotebookApp.password = 'xxxxxxx'			# 412行输入刚刚生成的密钥,这里我用了我的root密码生成的hash密码
c.NotebookApp.port = 8501			# 425行设置端口,随便设,默认是8888
c.NotebookApp.notebook_dir = '/home'     # 393行设置Jupyternotebook 打开的根目录
c.NotebookApp.iopub_msg_rate_limit = 1000000  #默认是1000,改这个是为了防止以后向notebook输出结果速度过快报错。

注1:生成hash密码的方法在password设置的那行代码上面有写,通过在python中执行from notebook.auth import passwd; passwd()设置
注2:找不到设置在哪一行的,在vim中的命令模式下:/notebook_dir可以找到这个词出现的位置。

设置完之后wq退出

直接 jupyter notebook

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第15张图片
此时在任何一台和工作站连了局域网的机器上(因为我设置的10开头的ip是个局域网址)都可以直接打开浏览器,输入ip:port直接登录jupyter notebook。

这样就可以脱离xshell和工作站进行编码和实验啦。如果有数据上传,同样用xftp上传即可。

在这里插入图片描述
Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第16张图片

MNIST实现—深度学习之HelloWrold

Ubuntu配置Pytorch GPU深度学习环境并作为服务器对外提供Jupyter notebook服务_第17张图片
可以看到已经成功调了GPU来训练模型。

多版本cuda切换

可以参考这个:ubuntu18.04切换不同版本CUDA

快捷启动

conda activate base #或者source activate base

jupyter notebook # 或者jupyter-lab,启动lab时把路径里的tree换成lab即可。

新建环境供他人使用

在自己这个用户文件夹下,从新建conda环境开始重新做一遍,根据不同的需求安装不同的依赖,最后在base启动的jupyter中选择不同环境的kernel即可。

你可能感兴趣的:(ubuntu,深度学习,pytorch)