0
点赞
收藏
分享

微信扫一扫

使用conda在linux搭建pytorch和tensorflow的GPU运行环境

Tips: 本文使用的服务器为ubuntu18.04(1080ti x2)

步骤总览:

  1. 安装显卡驱动
  2. 下载conda
  3. 配置pytorch环境
  4. 配置tensorflow环境
  5. 国内换源相关

安装显卡驱动

在可视化的界面中可以直接安装系统推荐的驱动,ubuntu详见
本文不是使用可视化安装,而是参考nvidia 510.60.02 版本的官方教程:

  1. 下载驱动
  2. 安装前准备工作:下载编译基本环境、关闭所有OpenGL应用、X Server以及屏蔽Nouveau、关闭bios的secure boot
  3. 安装驱动

下载驱动

(1) 百度搜索"nvidia driver"或者"英伟达显卡驱动"(如果是在需要装环境的设备上搜索的记为情况一,通过远程ssh登陆的为情况二)
百度搜索
(2) 选择你的显卡类型和操作系统,我是装有1080ti的ubuntu amd64位的操作系统,所以选择的是:GeForce 10series, GeForece GTX 1080ti; Linux 64-bit, 保险起见语言选择English.之后点击搜索,点击download(这里要点击download一次)

选择驱动
(3) 进入下面界面,情况一直接点击下载,情况二拷贝下载链接,在远程连接的终端上输入wget +拷贝的链接,注意链接应含有 .run (如:https://www.nvidia.com/content/DriverDownload-March2009/confirmation.php?url=/XFree86/Linux-x86_64/510.60.02/NVIDIA-Linux-x86_64-510.60.02.run&lang=us&type=TITAN)
下载驱动

安装前准备工作

下载编译基本环境

$ sudo apt update
$ apt install build-essential

屏蔽Nouveau

Nouveau是“Accelerated Open Source driver for nVidia cards”,需要在装官网的驱动之前屏蔽.
(1) 修改Nouveau的配置文件,下述代码使用的是here doc的技巧修改配置文件的,也可以以管理员权限使用 vim :在 /etc/modprobe.d/blacklist-nouveau.conf 文件末尾添加下面第二、三行的内容。

$ cat <<EOF | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
EOF

(2) 更新配置并重启

$ sudo update-initramfs -u
$ sudo reboot

(3) 重启后确认一下,重启的时候进入bios,并关闭secure boot(只是为了方便,才在这一步关闭,只要在安装驱动前关闭即可),如果看见Successs表示成功屏蔽

$ lsmod | grep "nouveau" > /dev/null && echo "WARNING: nouveau still active" || echo "Success"

关闭 X server

这里注意,请使用远程ssh操作,关闭X server会关闭图形化界面,不能保证关闭后电脑能够进入图形化界面(似乎与显示器是否接在显卡上有关),所以使用ssh操作比较保险

$ sudo init 3

安装驱动

$ cd directory_of_driver_download
$ sudo bash NVIDIA-Linux-x86_64-*.run
$ sudo reboot

之后一路确认即可后重启,最后用 nvidia-smi 确认一下

下载安装conda

下载conda

推荐使用国内镜像(如果服务器在国内的话),根据服务器选择合适的镜像源,比如我在南京且在高校内,所以选择了南京大学的镜像,类似的有清华、中科大、阿里、腾讯等等。
以南京大学镜像为例,百度搜索“南京大学mirror“,看一看地址: https://mirror.nju.edu.cn/,是南京大学的域名(nju.edu.cn),不是广告。
搜索南大镜像
进去后点击 anaconda,我喜欢用miniconda,当然也可以选择archive,点击后选择符合系统的最新版本,这里和下载驱动一样,分情况一二。比如我是ubuntu amd64位,选“Miniconda3-py39_4.11.0-Linux-x86_64.sh”
选择miniconda
类似的,如果想下载archive版本,我就会选择:
选择conda

安装conda

$ sudo bash *conda3*.sh

一路下一步,即可,这里将conda的安装路径记为 CondaPath (方便之后表述,下文中的CondaPath需要替换成实际安装的路径)

使用conda时可能遇到的问题

(1) 当出现 NoWritableEnvsDirError 的报错时:

$ sudo chmod -R 777 CondaPath

(2) 关闭自动初始化base环境
使用某些版本的vscode + remote ssh的时候建议关闭

$ conda config --set auto_activate_base false

配置pytorch环境

pytorch安装最为简单,可完全参考官网的conda安装.

  1. 创建新的环境
  2. 安装cudatoolkit和pytorch相关包

创建新的环境

nameofenv 替换为自己想设定的名字,比如这里可以设置成 pytorchenv

$ conda create -n nameofenv python=3.9

激活该环境

$ conda activate nameofenv

安装cudatoolkit和pytorch相关包

这里在官网选择好后复杂代码运行即可:
选择pytorch
复制Run this Command对应的this command在终端运行:

$ conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

测试pytorch的gpu

$ python -c "import torch;print(torch.cuda.is_available())"

返回True则说明安装成功,torch是自带cudnn的,所以只需要再设备安装驱动后再conda安装cudatoolkit和pytorch即可。

配置tensorflow环境

本文基于tensorflow官方软件要求进行安装:

必须在系统中安装以下 NVIDIA® 软件:

  1. NVIDIA® GPU 驱动程序 - CUDA® 11.2 要求 450.80.02 或更高版本。
  2. CUDA® 工具包:TensorFlow 支持 CUDA® 11.2(TensorFlow 2.5.0 及更高版本)
  3. CUDA® 工具包附带的 CUPTI。
  4. cuDNN SDK 8.1.0 cuDNN 版本。
  5. (可选)TensorRT 6.0,可缩短用某些模型进行推断的延迟时间并提高吞吐量。

CUDA、cuDNN的conda安装

cuda

cudatoolkit,其实在pytorch的安装时也安装了cudatoolkit11.3,是可以直接套用的: conda install -c pytorch cudatoolkit=11.3 在里的 -c pytorch 可以在 cudatoolkit=11.3 之前或之后,表示在名为 pytorch 的包频道(channel)中下载。
当然更加通用的方法是在anaconda包官网上进行检索:
输入关键词“cuda”:
检索cuda
检索结果如下:
检索cuda结果
挑选一个,这里可以选择下载量最高的 conda-forge 的cudatoolkit,点击后页面会自动生成安装的命令:
forge安装
可以通过在 cudatoolkit 后加 =11.3 来限定下载版本。

cuDNN

方法与cudatoolkit雷同,写本文时不推荐使用nvidia的,目前nvidia的频道版本不是最高的,其实包括cudatoolkit也不推荐下载nvidia版本。
此外推荐下载的还有TensorRT,也可以用类似的方法通过conda下载,但是笔者没有下载。

设置环境变量

在设置之前先定义一些需要结合自己情况替换的名词:

  1. 将Tensorflow的conda虚拟环境记住 envoftf(可以和torch同环境,在torch环境搭建后仅需安装cuDNN即可)
  2. conda 的安装目前 CondaPath,miniconda的默认安装目录是:~/miniconda3,这里使用绝对路径。

完成上述步骤后仍然是不可以使用tensorflow的gpu的,在官方教程中提到需要设置一个环境变量:
官方环境变量设置
(1) 找真正的lib路径
不能直接使用官网提供的,因为使用的是conda,实际这些包并不在 /usr/local/cuda/extras/CUPTI/lib64,可以通过两种方式找到:
(a) 根据规律拼接出目录:CondaPath/envs/envoftf/lib 这里的CondaPathenvoftf 需要自行替换
(b) 利用 find 命令:

$ find CondaPath -name libcu*.so* | xargs dirname | head -n 1

(2) 设置conda环境变量,并重新激活环境(conda activate envoftf)

$ conda env config vars set LD_LIBRARY_PATH=(1)中获得路径

测试tensorflow

python -c "import tensorflow as tf;print(tf.config.list_physical_devices('GPU'))"

返回设备列表,检测GPU数量是否和实际安装的一直。

国内换源相关

和选择conda的镜像一样,选择离稳定且离自己近的镜像源,这里仍然是使用南京大学的镜像.
这里讲解如何获得换源的设置,以ubuntu18.04的apt包源替换为例。

apt 换源

进入mirror的帮助界面:
选择帮助
不同镜像网站帮助放置位置不同,南大的在顶部,清华则是在首页的右下方的相关链接里:
清华使用帮助
进入帮助界面后选择ubuntu,按照里面的描述进行修改即可,清华的比较方便,支持ubuntu版本的选择,而南大需要自己手动修改对应版本名。
修改配置前最好备份原先配置:

$ sudo mv /etc/apt/sources.list /etc/apt/backup.sources.list

如果是其他发行版本的linux,则需选择对应的即可,conda换源也是如此,已经在macos常用的homebrew也是有的.

举报

相关推荐

0 条评论