Ubuntu + RStudio + Tensorflow的安装

2021-08-14  本文已影响0人  多多爸
  • Rstudio创始人Allaire和Keras之父Chollet合写的“R语言和深度学习”,宣告R也可以做深度学习。书里并不推荐windows 10上运行Tensorflow的GPU版本,而是在Ubuntu上。当然要用GPU版,只好装Ubuntu。
  • 随着安装过程中不断查找资料,发现windows版本的Tensorflow-GPU可能也运行得不错了,这一点有待证实。
  • 这本书的附录A给出了GPU版本安装过程,里面的命令已经过时,好在给出的网站还在。但是网站所给的例子是基于Ubuntu18.04和cuda11.0的,如果完全copy网站的命令进行安装会遇到麻烦,我在这里足足卡了两个星期。
  • 这一篇记录整个安装过程,重点在本地GPU支持的安装。安装之前我连Ubuntu都没听说过,显卡方面的知识约等于零——事实证明这样也行。
  • 安装一共有四步
    1. 安装Ubuntu
    2. 安装R4.1
    3. 安装Rstudio和Tensorflow
    4. 安装GPU支持
    以下是安装过程和所参考的资料。

1. 安装Ubuntu

2. 安装R 4.1

按照R官网的安装教程即可,按顺序执行第一个框里的命令。在执行完第二个命令之后敲入

gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 

如果出现

298A3A825C0D65DFD57CBB651716619E084DAB9

的key值,就继续,如果没有,执行以下命令安装key值。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo apt update

如果系统中有老版本的R,可以看这个网页如何卸载。
完成后如果在应用菜单里找到了R,就是安装成功。

3. 安装Rstudio和Tensorflow包

  1. 下载Rstudio安装包
    RStudio官网提供了Ubuntu安装包,找最新的版本下载。
    安装步骤按照How to install RStudio on Ubuntu 20.04 Focal Fossa Linux
    执行。

  2. 安装完成后运行Rstudio,若提示configuration failed because libcurl was not found,可能是因为库不完整,需要阅读错误提示,找到所缺库的名字通过终端安装,我自己手动装了三个库libcurl4-openssl-dev, libssl-dev, libxml2-dev二号坑

sudo apt-get install libcurl4-openssl-dev libssl-dev libxml2-dev
  1. 在RStudio中安装Tensorflow

安装过程在Rstudio官网,执行

install.packages("tensorflow")
library(install_tensorflow)

注意安装过程中系统会问是否安装Miniconda Would you like to install Miniconda? [Y/n]:一定要选Y。(选n的话需要手动装aniconda——重装Rstudio并不会有再选一次的机会……三号坑,大坑

4. 安装 GPU支持(四到N号坑,数不清试了多少次)

在这一步需要安装三样东西:nvidia显卡驱动、cuda、和cuDNN,这三样的版本号要一致。要命的是Tensorflow网页给出的命令参考,如果不加改动照着做的话,会导致版本冲突(下面会详细解释)。对于新手来说尤其要命,因为不懂这些命令是什么意思,也就无从发现版本冲突。

解决方案是所有东西的都装最新版本。这句话听着好像多余,但是开发和维护cuda、tensorflow和Rstudio是三伙不同的人,版本上不同步、被迫迁就旧版本是有可能的。前几次安装cuda出错以后我去找答案,见到一个论坛上有人说Rstudio只支持cuda11.0,把显卡驱动和cuda都降级问题就能解决,事后证明这个方案行不通,而这个答案距现在也就一年的样子。再一次,作为新手,这种情况下想做出正确判断是很难的。(大坑

注意Rstudio官网给出的GPU支持部分完全过时,可以放心略过。

需要参考的是Tensorflow的GPU支持,安装例子在Ubuntu 18.04 (CUDA 11.0)部分。

安装GPU本地支持一共分为三步,每一步会先列出网页上的原始命令,之后是我在此基础上进行的修改。对照着记录的原因是,cuda未来仍然会升级,但Tensorflow的网页更新可能不会那么及时。知道为什么修改和如何修改,在新版本cuda出来以后就知道如何处理。

具体操作:

1. 指定程序源

Tensorflow网页的原始命令

# Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
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

实际使用的命令

# Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
sudo apt-get update

这里做了两个改动:

2. 安装nvidia显卡驱动

# Install NVIDIA driver
sudo apt-get install --no-install-recommends nvidia-driver-450
# Reboot. Check that GPUs are visible using the command: nvidia-smi

3. 安装cuda11.4

Tensorflow网页的原始命令

# Install development and runtime libraries (~4GB)
sudo apt-get install --no-install-recommends \
    cuda-11-0 \
    libcudnn8=8.0.4.30-1+cuda11.0  \
    libcudnn8-dev=8.0.4.30-1+cuda11.0

# Install TensorRT. Requires that libcudnn8 is installed above.
sudo apt-get install -y --no-install-recommends libnvinfer7=7.1.3-1+cuda11.0 \
    libnvinfer-dev=7.1.3-1+cuda11.0 \
    libnvinfer-plugin7=7.1.3-1+cuda11.0

实际使用的命令

sudo apt-get install cuda-11-4_11.4.1-1_amd64.deb
sudo apt-get install libcudnn8_8.2.2.26-1+cuda11.4.deb
sudo apt-get install libcudnn8-dev_8.2.2.26-1+cuda11.4_amd64.deb
sudo apt-get install libnvinfer8_8.0.1-1+cuda11.3_amd64.deb
sudo apt-get install libnvinfer-dev_8.0.1-1+cuda11.3_amd64.deb
sudo apt-get install libnvinfer-plugin8_8.0.1-1+cuda11.3_amd64.deb

最后,终于,启动Rstudio,运行

library(tensorflow) 
tf$constant("Hellow Tensorflow")

看到一串“successfully”就算成了。之后又装了GPU版本,运行命令

library(tensorflow)
install_tensorflow(version =  "gpu")

这个包有450M,下载时会断,如果一次安装不成功,再试几次就可以了。


为什么会有连环坑

当几个要件由不同公司提供,一个要件更新,其他要件难以立刻跟上,因此产生了版本冲突。这时候网上的每个解决办法都是临时性的,按照这些办法做,很可能会产生新的错误提示,于是安装过程坑里套坑,逐渐发散,离目标越来越远。识别出连环坑,对及时调整策略止损是非常重要的。

两个连环坑的例子:

靠谱的解决办法还是都装最新版本,网上各论坛的、半年之前的解决版本冲突的办法都不要尝试。

上一篇下一篇

猜你喜欢

热点阅读