基本配置
系统:Ubuntu20.04
显卡:GTX 960M
首先检查一下系统配置,使用uname -a
查看系统版本
$ uname -a
Linux bing-Lenovo-Y50p-70 5.15.0-58-generic #64~20.04.1-Ubuntu SMP Fri Jan 6 16:42:31 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
使用lspci
查看所有硬件列表
$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.1 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #2 (rev d5)
00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation HM87 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)
08:00.0 Network controller: Intel Corporation Wireless 3160 (rev 93)
09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
0a:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5249 PCI Express Card Reader (rev 01
当然,你也可以点击右上角,选择的Settings
,查看找到最后一项About
,查看基本配置
$ nvidia-smi
Sun Feb 5 16:09:29 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.78.01 Driver Version: 525.78.01 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A |
| N/A 35C P8 N/A / N/A | 8MiB / 2048MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 888 G /usr/lib/xorg/Xorg 2MiB |
| 0 N/A N/A 1483 G /usr/lib/xorg/Xorg 2MiB |
+-----------------------------------------------------------------------------+
检查一下显卡驱动
$ nvidia-detector
nvidia-driver-525
关于如何安装Ubuntu的显卡驱动,这里推荐我在前面写的另外一篇文章,点这里
前往官网选择CUDA的版本
Nvidia cuda 官网 https://developer.nvidia.com/cuda-toolkit-archive
这里需要如何选择呢?
我们可以从下向上开始选型,在从上向下安装环境,比如:先确定需要的TensorFlow版本,确定cuDNN的版本,再确定CUDA的版本,而Nvidia的版本选择最新的或者系统推荐的版本。
Nvidia驱动:选用高版本的(甚至是最新的驱动)
CUDA版本:较低版本的CUDA
cuDNN版本:与你的CUDA版本对应
TensorFlow版本:与CUDA及cuDNN对应
首先我们前往官网,这里我们选择cuda Toolkit 11.8
的版本,根据提示选择自己需要系统,如下所示:
这里需要注意,如果选择最新的CUDA版本,有可能没有对应的cuDNN版本哦。
生成下载安装的命令,如下所示:
我们逐一执行安装命令,如下所示:
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
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
注意,如果你之前安装过其他更新版本的cuda,重新下载执行上面的命令后,可能安装的还是安装之前的那个版本,所以,在安装前,可以检查一下本地缓存的cuda包:
#查看缓存中有的cuda版本 $ sudo apt-cache madison cuda cuda | 12.0.0-1 | file:/var/cuda-repo-ubuntu2004-12-0-local Packages cuda | 11.8.0-1 | file:/var/cuda-repo-ubuntu2004-11-8-local Packages $ sudo apt-get install cuda=11.8.0-1```
我们测试一下是否安装成功
$ nvcc
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit
nvcc还不能执行,提示你需要安装nvidia-cuda-toolkit
,注意,千万不用安装
,这里只是环境变量的问题;我们可以查看一下安装目录,如下:
$ cd /usr/local/cuda-11.8/bin
$ ./nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
nvcc的版本是我们期待的11.8
,一下步添加环境变量;
vi ~/.bashrc
# 末尾添加如下内容
export PATH="/usr/local/cuda-11.8/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME="/usr/local/cuda-11.8:$CUDA_HOME"
生效环境变量
source ./bashrc
再次测试一下nvcc -v
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
cuda 11.8 安装成功!
cuDNN版本官网下载 https://developer.nvidia.com/cudnn
进入官网,这里需要输入Nvidia的账号密码,没有密码的话注册一个即可
选择与CUDA 11.8
对应的cuDNN
版本Download cuDNN v8.6.0(October 3rd,2022), for CUDA 11.x
我们选择for Linux x86_64(Tar)
这个版本下载,下载后
tar zxvf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz -C ./cudnn-8.6_cuda11
解压出来我们可以看到
我们这个库copy到/usr/local
目录
sudo mv cudnn-8.6_cuda11 /usr/local/
设置环境变量
vi ~/.bashrc
# 末尾添加如下内容
export LD_LIBRARY_PATH="/usr/local/cudnn-8.6_cuda11/lib:$LD_LIBRARY_PATH"
至此,我们把cuda库及cuDNN库的安装过程手动都走了一遍。
然而,实际上我们将会使用更加简单的方法搭建Tensorflow框架,即使用Anaconda安装,即使前面cuda及cuDNN都不用安装都可以自动为你把整个tensorflow开发环境安装好!(泥马,不早说!
)
安装Anaconda
我们可以通过前往官网下载Anaconda,然而下载非常慢,所有我们选择清华镜像源下载,下载地址 https://mirrors.tuna.tsinghua.edu.cn/
# 进入donwloads
cd ~/Downloads
# 给执行权限
chmod +x ./Anaconda3-5.3.1-Linux-x86_64.sh
# 开始安装
$ ./Anaconda3-5.3.1-Linux-x86_64.sh
注意,安装过程中有一系列的交互输入:
上面这一步为阅读许可,我们按Q
即可,接着问你是否同意,我们输入yes
同意即可,如下所示
接着,问你安装的路径,我们根据情况,设置安装安装路径即可,也可直接回车,使用默认安装路径,如下所示
开始安装,安装结束后,还有两个提示
1)是否添加环境变量?输入yes
即可
2)是否安装VScode,输入no
即可
注意,安装完成后,需要重新启动一个新的终端才可以正常使用
conda
命令
安装完成后,我们打开一个新终端,验证一下Anaconda
$ conda --version
conda 4.5.11
$ which conda
/home/bing/anaconda3/bin/conda
Anaconda安装好后,我们的python环境也安装好了,我们再测试一下
$ python --version
Python 3.7.0
$ which python
/home/bing/anaconda3/bin/python
前提是安装好显卡驱动及Anaconda之后,我们也可以使用下面的方式,快速tensorflow环境
使用Anaconda搭建更方便,conda可以创建一个虚拟的沙箱环境,所有的依赖版本,包括cuda,cuDnn,python等,都在一个指定环境下安装。
我们设置国内的conda镜像源,编辑.condarc
配置文件
# 编译
$ vi ~/.condarc
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# - defaults
show_channel_urls: true
ssl_verify: false
查看conda的设置情况
$ conda config --show
安装tensorflow前,我们先看看可安装的版本
conda serach tensorflow-gpu
tensorflow有cpu版本,还有gpu版本,推荐使用tensorflow的gpu版本
创建一个新的环境tf2
,指定某些关键的组件版本
conda create -n tf2 tensorflow-gpu=2.1 python=3.7
安装完成后,tensorflow、cuda、cuDNN、python都安装下来了,其中tensorflow及python是我们规定的版本,其他是自动安装的版本。这一步安装需要比较长的时间
查看所有环境
$ conda env list
# conda environments:
#
base * /home/bing/anaconda3
tf2 /home/bing/anaconda3/envs/tf2
安装完成tf2虚拟环境后,可以激活该环境,并安装一下pip
# 激活tf2环境
conda activate tf2
# 设置pip国内镜像源
(tf2)$ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装ipython
(tf2)$ pip install ipython
这里需要
注意这个bug
,默认情况下进入tf2下的ipython
命令其实是base
环境下的命令;我们分别在base环境及tf2环境下,使用which python
及which ipython
查看,发现两个环境下的ipython
路径都一样,这显然不对的;所以我们需要在tf2下,再次安装一下ipython
测试tensorflow及gpu是否正常可用
(tf2)$ ipython
Python 3.7.13 (default, Mar 29 2022, 02:18:16)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.34.0 -- An enhanced Interactive Python. Type '?' for help.
输入如下命令
import tensorflow as tf
tf.test.is_gpu_available()
返回Out[3]: True
,表示gpu可用
前往官网下载PyCharm,下载PyCharm
下载后,解压压缩包,如下
进入bin目录,右键打开终端,执行pycharm.sh
$ ./pycharm.sh