从今天起咱们就算是正式开始学习TensorFlow2.x了,工欲善其事,必先利其器。上篇文章咱们也提到了,为了便于开发,咱们拥有了一台Linux的服务器,而且购置了一块RTX3070的显卡,硬件设备已经到位了,那么咱们今天要做的就是把TensorFlow2.x的编码环境给配置好。关注专栏《一起来学TensorFlow2.x》,解锁更多相关内容~
目录
一、Anaconda的下载与安装
1.1 下载安装包
首先我们需要安装Python,为了方便,我们使用Anaconda3。首先需要去Anaconda的官网下载Anaconda,这里我下载的是Anaconda3-5.0.1-Linux-x86_64.sh,如下所示:
将下载好的安装包上传到Linux对应的目录下:
1.2 运行安装向导
1、通过以下命令运行安装向导:
bash Anaconda3-5.0.1-Linux-x86_64.sh
2、接受下面的协议,一路按回车键
3、直到出现以下内容,选择yes
4、选择安装路径,这里我选择的是默认安装路径,回车即可。
/root/anaconda3
5、接下来需要一段时间进行安装,安装过程中会出现是否添加到环境变量,选择yes。显示如下画面时,表示安装完成。
1.3 测试是否安装成功
1、重启服务器
reboot
2、查看对应的版本
以上就是Anaconda的安装过程,非常简单。接下来便是NVIDIA驱动的安装。
二、安装NVIDIA独立显卡驱动
要想使用咱们的RTX3070显卡。需要首先安装一下显卡驱动。下面一起来看一下如何安装NVIDIA显卡驱动。
2.1 安装基础的依赖环境
这里需要注意的是,并不是所有的用户都需要执行此步,如果已经有了这些依赖的小伙伴,可以直接忽略此步。
yum -y install gcc kernel-devel kernel-headers
2.2 检查内核版本与源码包版本是否一致
1、检查内核版本
ls /boot | grep vmlinu
2、检查源码包版本
rpm -qa | grep kernel-devel
这里值得注意的是:必须保证内核版本与源码包的版本一致,如果不一致,在安装过程中会报错。如果不一致,可以点击此处进行下载。
2.3 下载并上传NVIDIA驱动包
1、首先需要去NVIDIA官网下载相应的驱动包,点击此处跳转NVIDIA官网。填写相关信息,点击搜索,如下所示:
2、点击下载
3、将下载好的驱动包上传到相应的目录,并修改权限:
chmod -R 777 ./NVIDIA-Linux-x86_64-455.45.01.run
2.4 安装NVIDIA驱动包
到了最关键的一步——安装驱动包了,安装之前我找了很多安装的教程,又得屏蔽这个那个,又得重启服务器生效的。可能我胆子比较大,总喜欢挑战一些不可能。也有可能是我运气比较好,总之我是一次安装成功了,来看一下我都干了些啥事吧。
2.4.1 关闭图形化界面
在安装Linux系统的时候,我保留了图形化界面,没有选择最小化安装。如果是最小化安装的朋友们就可以忽略这一步了,直接进行下一步。如果没有最小化安装,在安装NVIDIA驱动包之前需要先关闭图形化界面。命令如下:
systemctl set-default multi-user.target
关闭图形化界面后,重启服务器(reboot)。
2.4.2 安装驱动包
./NVIDIA-Linux-x86_64-455.45.01.run
等待安装完成即可。
2.4.3 开启图形化界面
使用如下命令重新开启图形化界面:
systemctl set-default graphical.target
同样的,需要重启一下服务器。
2.4.4 测试安装是否成功
在终端输入以下命令:
nvidia-smi
如果安装没有问题的话,应该会出现如下界面:
好的,至此,咱们的NVIDIA驱动也已经安装成功了。接下来我们再来看一下CUDA的安装。
三、安装CUDA Toolkit
3.1 下载安装包
1、同样的,我们需要去官网下载对应的安装包,点击这里,跳转官网,点击下载。
2、选择对应的目标平台
然后下方会自动弹出下载步骤:
3、在终端运行以下命令进行下载
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
3.2 安装CUDA
3.2.1 修改权限
通过以下命令修改安装包的执行权限:
chmod -R 777 ./cuda_11.1.0_455.23.05_linux.run
3.2.2 安装
./cuda_11.1.0_455.23.05_linux.run
安装完成后,屏幕上会出现如下内容:
Please make sure that
- PATH includes /usr/local/cuda-10.1/
- LD_LIBRARY_PATH includes /usr/local/cuda-10.1/lib64, or, add /usr/local/cuda-10.1/lib64 to /etc/ld.so.conf and run ldconfig as root
这是提示我们修改环境变量,在~/.bashrc 文件中添加如下内容:
# add nvcc compiler to path
export PATH=$PATH:/usr/local/cuda-11.1/bin
# add cuBLAS, cuSPARSE, cuRAND, cuSOLVER, cuFFT to path
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64:/root/anaconda3/pkgs/cudatoolkit-11.0.221-h6bb024c_0/lib
3.2.3 测试安装是否成功
在/usr/local/cuda/extras/demo_suite目录下执行如下命令:
./bandwidthTest
如果出现下图内容,说明安装成功:
当然,也可以输入nvcc -V进行查看:
安装完CUDA之后,还需要安装一下cuDNN。深度神经网络库(cuDNN)是经GPU加速的深度神经网络基元库。cuDNN可大幅优化标准例程(例如用于前向传播和反向传播的卷积层、池化层、归一化层和激活层)的实施。
四、cuDNN的安装
4.1 下载安装包
同样的还得需要去官网下载相应的安装包,请点击这里进行下载,需要注意的是,cuDNN需要注册才能下载,下载时需要与cuda的版本相对应。
下载完成后,将tar包上传到对应的目录:
4.2 安装cuDNN
4.2.1 解压
执行以下命令将目录下的tar包解压:
tar -zxvf ./cudnn-11.1-linux-x64-v8.0.5.39.tgz -C ../modules/
4.2.2 拷贝相应文件
按照下面的方式将相应的文件拷贝到cuda对应的目录中:
cp /opt/modules/cuda/include/cudnn.h /usr/local/cuda/include/
cp /opt/modules/cuda/lib64/libcudnn* /usr/local/cuda/lib64/
4.2.3 文件赋权
给对应的文件赋权:
chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
cuDNN到这里就算是安装结束了,它的安装稍微简单些。接下来就是TensorFlow的安装了。
五、安装TensorFlow
5.1 安装TensorFlow
1、首先使用conda新建一个虚拟环境(xzw)
conda create -n xzw
2、进入虚拟环境
source activate xzw
3、安装TensorFlow,这里可以使用conda进行安装,但是它的下载速度真的是令人恶心,所以我这里使用的是pip安装。
pip install tensorflow
这里不用刻意的去安装tensorflow-gpu,直接安装tensorflow即可,当然有版本要求的朋友们可以在安装的时候指定版本,如下:
pip install tensorflow==2.4.0
如果不指定版本,那么它默认安装的就是最新的版本。等待安装完成就可以了,可以使用conda list命令列出所有安装的内容:
4、使用下面的命令退出虚拟环境
conda deactivate
5、使用下面的命令删除虚拟环境
conda remove -n xzw --all
5.2 整体测试
终于到了整体测试的环节了,既然咱们所有的环境基本上都已经搭建完了,那么就可以进行整体测试了,写一个简单的TensorFlow代码,看看有没有使用GPU来提升代码的运行速度。测试代码比较简单,如下所示:
import tensorflow as tf
from tensorflow.keras import *
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data(
path='mnist.npz'
)
network = tf.keras.models.Sequential()
network.add(tf.keras.layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(tf.keras.layers.Dense(10, activation='softmax'))
network.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)
network.fit(train_images, train_labels, epochs=5, batch_size=128)
test_loss, test_acc = network.evaluate(test_images, test_labels)
print('test_acc:', test_acc)
将上面的代码保存到test.py文件中,运行python test.py,同时使用如下命令监控GPU资源:
watch -n 0.1 nvidia-smi
通过上图可以发现,GPU正在加速,证明咱们的环境配置没有问题,终于可以愉快的撸代码了。但是,又有一个问题出现了,在Linux系统上调试代码实在是非常的不方便,于是便有了下面的操作。
5.3 PyCharm远程调用Python虚拟环境
1、点击新建项目
2、添加interpreter
3、输入服务器对应host、port、username等信息,点击next。
4、输入密码
5、找到服务器对应的Python虚拟环境的位置,添加路径。
6、更改项目存储的路径,此路径为在本地编写的代码同步到Linux服务器上的路径,即项目在服务器存放的路径。点击create完成项目创建。
这样的话,就可以在本地进行代码的编写与调试,没问题后在服务器上运行代码,这次是真的可以愉快的撸代码了。
到这,咱们的TensorFlow2.x的代码环境基本上已经搭建完成了,就等着接下来一起学习TensorFlow2.x了,本文到此已经接近尾声了,你们在这个过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了什么问题~