Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本

创建GPU云服务器

本文使用GCP的机器,GPU选择T4,费用大概$0.4/h按秒计费,比国内GPU云便宜很多。如果你用的国内机器需要对conda和pip换源,不然会很慢。

选择服务器配置

配置信息如图:
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第1张图片
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第2张图片
由于GCP的CPU、内存、GPU都可以在关机状态下随意修改,所以这里只选择满足初装条件的配置,后续可以根据不同任务自行配置相关资源。

我这里系统映像选择的是Ubuntu18.04 LTS(注意不是带Minimal的!),不同版本的系统相关软件安装会有很大区别,所以一定要注意系统版本。硬盘尽量大一点。

登录服务器

创建成功后会给一个临时外部IP,这里我没有把临时IP转成静态。因为,GPU服务器费用很高,我们平时不用的时候要把服务器停掉,而静态IP在服务器停止状态会收占用费。GCP的动态IP除非长时间不用(大概一个月?),否则基本不会变。

点击页面的SSH会弹出一个窗口登录服务器
GCP登录

安装显卡驱动

添加依赖并更新系统

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update

安装驱动

不限于T4,其他Nvidia显卡应该也能通过这条命令安装驱动

sudo apt-get install --no-install-recommends nvidia-driver-430

重启服务器测试驱动

使用命令nvidia-smi测试GPU驱动

sudo reboot
nvidia-smi

驱动正常显示如下:
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第3张图片
这里右上角的CUDA Version: 10.2指的是该版显卡驱动最高支持的CUDA版本,要确保这里的版本号不低于你需要的CUDA版本,否则你需要升级显卡驱动。

安装Anaconda

下载安装包

到Anaconda官网下载64位Linux安装脚本
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第4张图片

wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
chmod +x Anaconda3-2020.02-Linux-x86_64.sh  #给安装权限
./Anaconda3-2020.02-Linux-x86_64.sh  #执行安装脚本

一路回车输入yes同意协议,然后确认安装目录。还会问你是否初始化conda,我输的是yes

配置conda

安装完直接输入conda,会提示conda: command not found,需要配置一下
~/.bashrc

vim ~/.bashrc

在最后一行加上

export PATH=$PATH:/home/×××/anaconda3/bin

×××替换成你的登录用户名,export PATH=$PATH:【你的安装目录】
保存退出,在终端执行

source ~/.bashrc

创建虚拟环境

我要安装的是TensorFlow2.2,pytorch1.5以及TensorFlow1.13.1。其中TensorFlow2.2和pytorch1.5需要CUDA10.1,而TensorFlow1.13.1需要CUDA10.0,所以我创建2个虚拟环境:

conda create -n tf_torch python=3.7
conda create -n tf13 python=3.6

Python版本可以自行根据需要选择。

安装TensorFlow2.2

我们进入创建的第一个虚拟环境

conda activate tf_torch

全自动安装

用conda安装TensorFlow-gpu,注意只有后面加上-gpu才能让conda自动安装CUDA,cudnn等相关依赖

conda install tensorflow-gpu==2.2

Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第5张图片
可以看到下载的依赖包里有CUDA10.1和CUDNN7.6.5。这种安装方式是最方便的,再也不用为CUDA版本苦恼了~

测试TensorFlow-GPU状态

$ python
Python 3.7.7 (default, May  7 2020, 21:25:33) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'2.2.0'
>>> tf.test.is_gpu_available()
WARNING:tensorflow:From <stdin>:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.config.list_physical_devices('GPU')` instead.
.
.
.
tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Tesla T4, Compute Capability 7.5
True

可以看到TensorFlow2.2的GPU是可用的

安装pytorch1.5.1

省心安装

如果你使用的国内源,可能需要删掉命令最后的-c pytorch

conda install pytorch==1.5.1 torchvision cudatoolkit=10.1 -c pytorch

因为TensorFlow2.2和pytorch1.5可以共用CUDA10.1和CUDNN7.6.5,所以不用下载相应包,如果是全新环境,conda会自动帮你装上GPU依赖。

测试Ptorch-GPU

$ python
Python 3.7.7 (default, May  7 2020, 21:25:33) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.5.1'
>>> torch.cuda.is_available()
True

可以看到pytorch的GPU版也安装成功了

安装TensorFlow1.13.1

CTRL + D 退出Python命令行,切换到我们创建的第二个虚拟环境

conda activate tf13

省心安装

conda install tensorflow-gpu==1.13.1

Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第6张图片
可以看到conda自动帮我们选择了对应的CUDA、CUDNN版本。

测试TensorFlow1.13.1-GPU

$ python
Python 3.6.10 |Anaconda, Inc.| (default, May  8 2020, 02:54:21) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.13.1'
>>> tf.test.is_gpu_available()
True

导入tf和测试GPU的时候都会输出一堆信息,不用管,只要命令被正常执行就行。

安装jupyter notebook

jupter安装在哪个虚拟环境应该都可以,我习惯把它装在经常使用的环境

安装

conda activate tf_torch
pip install jupyter

配置jupyter

生成配置文件

jupyter notebook --generate-config

打开配置文件

vim .jupyter/jupyter_notebook_config.py

修改配置文件
添加以下内容:

# Application(SingletonConfigurable) configuration
#------------------------------------------------------------------------------

## This is an application.

c = get_config()
c.NotebookApp.ip = '*'   # 可访问IP
c.NotebookApp.open_browser = False  # 启动不打开浏览器
c.NotebookApp.port = 8008  # 访问端口号

## The date format used by logging formatters for %(asctime)s
#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'

## The Logging format template

找到下面这行内容删除前面#号,最后改成True

#  IP, bypassing same-origin checks.
#  
#  Local IP addresses (such as 127.0.0.1 and ::1) are allowed as local, along
#  with hostnames configured in local_hostnames.
c.NotebookApp.allow_remote_access = True

## Whether to allow the user to run the notebook as root.
#c.NotebookApp.allow_root = False

## DEPRECATED use base_url
#c.NotebookApp.base_project_url = '/'

保存退出

设置云服务器防火墙

找到防火墙设置,放行相应端口
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第7张图片

启动jupyter

在用户目录下创建workspace文件夹作为jupyter notebook的工作目录

mkdir workspace
cd workspace
jupyter notebook  # 启动notebook

成功启动,显示如下
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第8张图片
在本地的浏览器访问服务器的外部IP:你设的端口,我这里是8008
出现如下界面:
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第9张图片
在Token处填上启动jupyter notebook,终端里面给出的token,New Password填上你给jupyter设的密码,点下面的log in and new password。
这样下次再访问,输入密码就可以了

如果提示Invalid credentials,多半是你复制的token有问题,检查一下。

成功后,进入jupyter notebook主界面
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第10张图片

实现jupyter notebook切换虚拟环境

安装插件

CTRL + C 退出jupyter,切换到相应虚拟环境安装ipykernel以及给notebook添加kernel。
因为下面的命令需要root权限,所以我们切换到root

sudo -i

参照上面的conda配置,修改root的~/.bashrc

然后依次执行下面命令

source activate tf_torch
conda install ipykernel
python -m ipykernel install --name tf_torch
source activate tf13
conda install ipykernel
python -m ipykernel install --name tf13
logout # 退出sudo

测试jupyter切换内核

进入workspace目录,启动jupyter notebook

jupyter notebook

输入之前设置的密码登录
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第11张图片
点new的下拉,能看到已经有了我们新建的kernel
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第12张图片
我们新建文件测试一下环境:
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第13张图片
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第14张图片
可以看到2个虚拟环境各版本TensorFlow、pytorch的GPU都能正常调用。
而且,同一个ipynb文件可以通过切换kernel的方式,非常方便的切换虚拟环境。
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第15张图片

补充

如果不使用GPU服务器,请及时停止,需要的时候再开启
Ubuntu18.04使用Anaconda安装多版本CUDA实现jupyter切换TensorFlow-gpu及pytorch-gpu版本_第16张图片
实例停止后,在没有静态IP,自定义镜像、快照的情况下将不再扣费。
但是,还有一点需要注意,GCP的流量费是额外收取的。如果进行大流量操作,可以考虑通过GD来中转。

你可能感兴趣的:(NLP实战,ubuntu,tensorflow,pytorch,自然语言处理,深度学习)