最近发现了一台3年前的服务器空着,V100的显卡也不算太差,不如玩一玩大模型。
 

刚刚开始发现这服务器确实太久没更新使用了,这古早的显卡驱动和cuda,压根没办法跑现在新的大模型。真就是从“头”开始搭环境。

这台服务器是21年的机器,显卡驱动最高可支持的cuda版本是11.2,现在安装的cuda版本是11.2。干脆写个笔记记录一下,提供cuda升级思路,也帮大家更多的从使用角度了解一下cuda。

我这里是Ubuntu环境哦,如果你在操作过程中出现了我未提及的情况,直接评论即可。我会解决并完善这个文档。

一、认识cuda

CUDA(Compute Unified Device Architecture)是由NVIDIA推出的一种并行计算平台和编程模型,旨在利用NVIDIA GPU的并行计算能力。(这种概念就有点无聊,只要知道是什么,能干什么,怎么用就行)

就是你要用nvidia的显卡进行高性能计算,你就用cuda。

首先纠正第一个常见惯性错误:CUDA不是你安装的,而是你的路径指向的。

通常会有人认为它是一个可以【更新】的,update一下11.2就更新到12.0。但事实并非如此。

你可以选择安装12.0但这个时候原来的11.2还存在,并不是“以旧换新”而是“新旧共存”,如果你不需要11.2了可以卸载,达到“去旧留新”的目的

1、查看当前显卡信息

先看一下显卡基本信息:

nvidia-smi

这里可以看到显卡型号、显存、驱动等相关信息。不要被这里的CUDA Version: 11.8迷惑了。

这里显示的是在当前显卡驱动版本下最大可支持CUDA版本为11.8。(如果你安装的版本<11.8就可以不更新显卡驱动,不过确实有些情况下临近版本也不要更新显卡驱动,比如可能11.9也不用更新,但是这里还是建议大家同步更新。保持版本同步。)

(如果没有上述的信息输出,你可能没有安装驱动,请直接跳转步骤二,可以安装CUDA的同时安装对应的驱动)

2、查看当前CUDA版本

nvcc -V

这里可以明确当前CUDA版本为11.3。

还记得上面提到的吗?CUDA不是你安装的,而是你的路径指向的。/usr/local/cuda一般是一个软链接,指向真正的cuda目录。

ls -l /usr/local

其实同时安装了cuda11.2和11.3,但是CUDA版本取决于哪个CUDA目录在你的默认路径(环境变量)中。也就是我们nvcc -V 查看到的版本。

执行下面命令,输出当前路径:

echo $PATH
  • 如果当前路径有:usr/local/cuda、usr/local/cuda-11.2、usr/local/cuda-11.3,按照优先级当前版本为11.3。
  • 如果当前路径只有:usr/local/cuda、usr/local/cuda-11.2,哪怕有软路径的指向存在,当前版本也只是11.2。

至此可以一定程度上理解为,升级CUDA就是切换更高的CUDA版本,就是修改默认路径中的CUDA目录。

3、切换CUDA版本

如果你发现自己本地已经安装了需要的版本,只是因为上面的情况未被使用,按照下面的内容切换CUDA版本即可。

如果你没有的话,按照二、安装CUDA后再回来切换版本即可

(1)临时修改

如果只是特定项目需要特定的CUDA版本,可以使用如下命令临时修改。

export PATH=/usr/local/cuda-xx.x:$PATH

(2)永久修改默认CUDA

vim ~/.bashrc    #打开环境变量

按‘i’开启编辑,在末尾插入下面的内容:

export PATH=/usr/local/cuda-12.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH

按‘esc’退出编辑模式,输入:wq保存并退出。

运行如下指令使其生效:

source ~/.bashrc

再次输入nvcc -V查看当前CUDA版本,已经更新为12.0

二、安装CUDA

打开链接选择CUDA版本:CUDA Toolkit Archive | NVIDIA Developer

(我这边按照后续需要选择12.0,大家可以视自身情况选择更高版本。)

按照自己的系统情况选择,补充一个查看Ubuntu版本的命令行:lsb_release -a

选定后下面会给出两行命令(我对应的命令如下),下载并运行。

wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run
sudo sh cuda_12.0.0_525.60.13_linux.run

按照提示安装即可,这里红色框选的部分【是否安装显卡驱动】需要注意一下。

nvidia-smi命令,查看当前驱动最大可支持的版本为12.0。我需要安装的版本为12.0,无需安装新的驱动。这里不选择(enter即可取消勾选)。

如果你要安装的版本大于当前显卡驱动支持的最大版本,先把当前显卡驱动卸载干净(前往四、卸载显卡驱动)。再回来勾选驱动和CUDA一起安装。(也可以倒过来四、三、二,先单独更新驱动再回来装CUDA)

安装完成如下显示,红色框选部分为官方提示下一步要干啥(就是添加路径)。

至此安装完成了新版CUDA,到一、3、切换CUDA版本即可。

三、安装显卡驱动

确定没有驱动再安装,如果此前有驱动只是版本过低的话请卸载再安装。

nvidia驱动下载:https://www.nvidia.cn/Download/index.aspx?lang=cn

输入你的显卡信息即可:

终端执行如下命令来安装驱动:(换成你自己下载的版本和路径)

sudo ./NVIDIA-Linux-x86_64-525.147.05.run

选择continue

提示是否需要32位兼容,不需要,no即可

Install NVIDIA's 32-bit compatibility libraries?

DKMS注册内核模块,直接no不需要

Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later

是否运行Nvidia-xconfig来配置X configuration文件,选择yes

Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X?  Any pre-existing X configuration file will be backed up.

如果提示这个Error,说明Xserver还没关,重新执行四、卸载显卡驱动中的内容关闭Xserver

执行nvidia-smi命令能看到显卡相关信息即安装成功。

四、卸载显卡驱动

  • 删除可能存在的驱动
sudo apt-get remove --purge nvidia*
  • 禁用原有的开源驱动:(通常没有哈)
sudo vi /etc/modprobe.d/blacklist-nouveau.conf

要是你有的话,如下操作禁用:

添加下面的内容来拉黑驱动;

blacklist nouveau
options nouveau modeset=0

保存后更新一下你的修改:

sudo update-initramfs -u

重启服务器即可完成禁用,成功的话如下命令没有输出:

lsmod | grep nouveau
  • 关闭桌面系统

X Server,用于在Linux下显示桌面和其他相关可视化环境。安装显卡驱动时必须要将目前的桌面服务关闭才能成功

sudo service lightdm stop

最后可以安装pytorch和tensorflow等机器学习库了。这些库的版本需要查一下和当前CUDA兼容的版本是哪个。链接如下:

https://pytorch.org/get-started/previous-versions/?spm=a2c6h.12873639.article-detail.18.553a718bd9UWB0

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐