文章目录
基本硬件环境
硬件基本信息
硬件 | 型号 |
---|---|
CPU | I7-9700k |
GPU | RTX 2080ti |
内存 | DDR4 2666 16GB*2 |
主板 | ASUS Z390-A |
机箱 | Tt(Thermaltake) 启航者S5 |
电源 | 海盗船 850W 支持2080ti |
SSD固态硬盘 | 三星 500GB M.2接口 860 EVO |
HHD机械硬盘 | 西部数据 1TB SATA3接口 |
CPU散热器 | 九州风神 玄冰400 12cm |
机箱散热器 | 先马(SAMA) 黑洞 12cm * 3 |
SSH
SSH无密码登陆
-
安装SSH Server
Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
-
登陆本机
ssh localhost
此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 ,但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
-
SSH 无密码登陆
首先退出刚才的 ssh,回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit # 退出刚才的 ssh localhost cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以 cat ./id_rsa.pub >> ./authorized_keys # 加入授权
此时再用
ssh localhost
命令,无需输入密码就可以直接登陆了
安装驱动
linux安装NVIDIA显卡驱动
驱动下载地址 ,下载时切记选择.run版本,我们下载的版本是NVIDIA Linux-x86_64-430.40.run
安装驱动之前要安装其他需要的依赖工具:
sudo apt-get install gcc g++ make
检测驱动是否成功安装
方法1:使用nvidia-smi命令测试
英伟达系统管理接口(NVIDIA System Management Interface, 简称 nvidia-smi)是基于NVIDIA Management Library (NVML) 的命令行管理组件,旨在(intened to )帮助管理和监控NVIDIA GPU设备。
在终端输入命令nvidia-smi
方法2:使用nvidia-settings命令
在终端输入命令nvidia-settings
会调出NVIDIA的驱动管理程序:
如果打开的页面能够看到驱动的版本号,如本案例所示为430.40,则nvidia-setting安装正常。
搭建深度学习环境
CUDA 10.0安装
进入CUDA toolkit download官网之后会显示CUDA最新版本,这个时候先别急着选系统和下载文件类型,先看一下下什么样的CUDA版本能够跟PyTorch适配。
-
[外链图片转存失败(img-iwQF93nZ-1567431503797)(https://yalana.oss-cn-hangzhou.aliyuncs.com/2019-9-week1/pytorch%20select.png)]
我们能看到可选择的CUDA版本只有9.2和10.0,因此我们去CUDA官网下载10.0版本
-
CUDA toolkit起始界面
-
选择适配的CUDA版本
打开显示的是最新的10.1 版本,这里我们选择“Legacy Releases”查看之前发布的版本,并如下图所示选择“CUDA Toolkit 10.0”版本
-
定制化下载CUDA 10.0
-
安装CUDA
sudo sh cuda_10.0.130_410.48_linux.run
然后会出现很长的协议书,一直按到最后出现如下需要用户选择的界面:
之后,按照提示安装即可。我依次选择了:
1 accept #同意安装 2 n #不安装Driver,因为已安装最新驱动 3 y #安装CUDA Toolkit 4 <Enter> #安装到默认目录 5 y #创建安装目录的软链接 6 y #复制Samples一份到家目录
安装完成界面(由于我们没有选择安装driver,因此会显示不完全安装,但是CUDA toolkit都已成功安装就可以了):
以及安装过程中有CUDA location:
在本例中cuda被安装到的路径为
/usr/local/cuda-10.0
-
更改环境变量、创建动态链接库并创建链接文件
-
声明环境变量
$ sudo vim ~/.bashrc
在文件(在用户目录下)的尾部,输入内容如下:
export PATH=/usr/local/cuda-10.0/bin${PATH:+:$PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出,并输入下面指令使环境变量立刻生效:
$ source ~/.bashrc
-
设置环境变量和动态链接库
$ sudo vim /etc/profile
在打开的文件末尾加入:
export PATH=/usr/local/cuda/bin:$PATH
-
创建链接文件
$ sudo vim /etc/ld.so.conf.d/cuda.conf
在打开的文件中添加如下语句:
/usr/local/cuda/lib64
保存退出,然后执行
$ sudo ldconfig
使链接立即生效。
-
-
检查CUDA是否安装成功
nvcc --version
-
CUDA Sample测试
切换到 CUDA 10.0 Samples 默认安装路径(即在/home/用户/NVIDIA_CUDA-9.1_Samples 目录下), 终端下输入:
$ cd NVIDIA_CUDA-10.0_Samples $ sudo make all -j4
-
查看CUDA 驱动和CUDA toolkit版本
$ cd bin/x86_64/linux/release $ ./deviceQuery
Q:这个时候存在一个问题 如果CUDA驱动比CUDA版本要高 是否可以支持?
安装cuDNN
先在NVIDIA官网注册用户名和密码,然后进入cuDNN下载页面,需要与BUDA10.0环境适配,因此我们选择下载以下几项来安装:
-
首先解压tgz包
tar -zxvf cudnn-10.0-linux-x64-v7.6.2.24.tgz
-
复制文件到cuda环境
sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
-
安装deb包
sudo dpkg -i libcudnn7_7.6.2.24-1+cuda10.0_amd64.deb sudo dpkg -i libcudnn7-dev_7.6.2.24-1+cuda10.0_amd64.deb sudo dpkg -i libcudnn7-doc_7.6.2.24-1+cuda10.0_amd64.deb
-
测试是否安装成功
cp -r /usr/src/cudnn_samples_v7/ ~ cd ~/cudnn_samples_v7/mnistCUDNN make clean && make ./mnistCUDNN
显示“Test passed!”即测试通过!
安装Python、Anaconda和Pip
Python
-
下载python 3.7.2 源程序压缩包
$ sudo wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
-
解压
$ tar -xzvf Python-3.7.2.tgz
-
配置
$ cd Python-3.7.1 $ ./configure --enable-optimizations
执行上述语句将启用代码的发布版本,可以优化二进制文件以更好的更快的运行,但是需要运行测试,编译时需要花费一些时间(大约半小时),也可以不进行这一项配置。
-
编译和安装Python 3.7.2
$ sudo make $ sudo make install
- Debugging
在执行
$ sudo make install
时出错-
出现的问题
“zipimport.ZipImportError: can’t decompress data; zlib not available Makefile:1130: recipe for target ‘install’ failed make: *** [install] Error 1“
解决方案
安装zlib1g-dev
$ sudo apt install zlib1g-dev
-
出现第二个问题
“ModuleNotFoundError: No module named ‘_ctypes’
Makefile:1130: recipe for target ‘install’ failed
make: *** [install] Error 1”解决方案
$ sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev $ sudo apt-get install libffi-dev libssl-dev libreadline-dev -y
然后重新执行
$ sudo make install
,显示:
-
查看Python版本
$ python --version
Anaconda
Method 1 参考Anaconda快速安装攻略
由于在官网下载非常慢,并且经常网络断掉,因此最好在清华大学开源软件镜像站中下载,具体下载链接 ,在该页面滑倒最后可以下载最新版本。本案例选择下载Anaconda3-5.2.0-Linux-x86_64.sh
版本。
-
进入下载文件的位置
$ cd Downloads/
-
运行.sh文件:
$ bash Anaconda3-5.2.0-Linux-x86_64.sh
-
进入注册信息页面,输入’yes’
安装过程中会提示
Anaconda3 will now be installed into this location:
/home/silver/anaconda3- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
我们不更改安装路径的话继续输入
出现如下界面则说明anaconda成功安装,这里询问是否需要安装VScode,一般不需要的话就输入"no"
-
将anaconda加入系统环境变量
sudo vim ~/.bashrc
加入:
export PATH=/home/silver/anaconda3/bin:$PATH
-
在终端中输入
conda info
即可查看详细信息
如何启动Anaconda图形化界面
$ source ~/anaconda3/bin/activate root
$ anaconda-navigator
Method n(官网下载非常慢 不推荐!) 进入Anaconda官网下载页面
下载相应版本安装即可:
sudo sh Anaconda3-2019.07-Linux-x86_64.sh
安装PyTorch
进入PyTorch官网,根据自己的环境来定制化选择PyTorch下载安装版本,选好之后复制下方的命令行:
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
下载完成提示:
安装Tensorflow
-
首先安装NVIDIA必要组件:
$ sudo apt-get install libcupti-dev
-
先确保linux上pip可用
$ sudo apt-get install python3-pip python3-dev # for Python 3.x
-
然后用pip3(针对python3.x版本)安装gpu版本的TensorFlow
$ pip3 install tensorflow-gpu
安装过程中遇到了两个错误提示:
-
ERROR1:
ERROR: 1.14.0 has requirement setuptools>=41.0.0, but you’ll have setuptools 39.1.0 which is incompatible.
-
出错原因:setuptools 版本太低
-
解决方案:更新setuptools版本 输入:
pip install --upgrade setuptools
-
命令执行结果:
-
-
ERROR1:
ERROR: Cannot uninstall ‘wrapt’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
-
出错原因:不能够卸载’wrapt’,因为我们不能准确判断它归属于哪个文件,这将会导致部分卸载
-
解决方案:输入
pip install -U --ignore-installed wrapt enum34 simplejson netaddr
-
命令执行结果:
-
-
-
此时再重新执行
$ pip3 install tensorflow-gpu
当我们解决完各组件的安装问题后,即可成功安装tensorflow,安装成功界面如下:
-
检测tensorflow是否安装成功并查看版本号
import tensorflow as tf print(tf.__version__) ##两条下划线
-
在VS Code中运行一个Tensorflow程序
-
案例来自斯坦福大学NLP课程 cs224n Lecture7 参考链接
-
程序执行之前需要安装numpy包
import tensorflow as tf import numpy as np # create data x_data = np.random.rand(100).astype(np.float32) # 随机生成100个随机数列 y_data = x_data*0.1+0.3 ###Create tensorflow structure start### Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0)) # W大写代表可能是权重矩阵,里面的参数分>别是[1] 代表1维矩阵 ,生成随机数范围指定从-1.0到1.0 biases = tf.Variable(tf.zeros([1])) y = Weights * x_data + biases loss = tf.reduce_mean(tf.square(y-y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) # 0.5代表学习率 train = optimizer.minimize(loss) #训练的过程就是不断在最小化损失函数的过程 # deprecated # init = tf.initialize_all_variables() init = tf.global_variables_initializer() ###Create tensorflow structure end### sess = tf.Session() sess.run(init) for step in range(201): sess.run(train) if step % 20 == 0: print(step,sess.run(Weights),sess.run(biases))
-
终端输出结果
我们在终端执行结果界面可以看到程序已经运行在RTX 2080 Ti上,GPU提供7.5的算力。
-
至此,深度学习环境搭建完成!![撒花]
今天也是一个爱(有)学(耐)习(心)的女孩纸呢嘻嘻~
Reference
我在安装NVIDIA驱动时也遇到过突然系统重启进入TUI(文本命令行界面),如果想要进入图形界面需要Ctrl+Alt+F1
,或者TUI界面下,Ctrl+Alt+F1+F2
一起按一定能进入图形界面。