写在前面
最近在耍一些开源的ai大模型
,很早之前在服务器上搭建过NVIDIA驱动
和CUDA
,但是没写成笔记,导致了昨天我再整的时候各种问题。今天顺利完成,打算记录一下,避免踩坑。
一、条件准备和避坑指南
- 硬件,我的显卡是
NVIDIA Corporation GK110GL [Quadro K5200]
,可以用lspci | grep -i nvidia
命令查看 - 软件
- 系统版本,我用的是
liunx
发行版ubuntu
。千万注意你的显卡和ubuntu
版本。很有可能第一次只能安装成功NVIDIA驱动
,但是CUDA
一直失败。原因在于CUDA
的要求是gcc
、kernel
、glibc
版本对应,请看 system-requirements。具体怎么折腾我马上讲到。 - 确认
NVIDIA驱动
,NVIDIA驱动官网 在这里根据显卡选择,如果列表中都没有,那说明当前显卡不支持,换显卡吧 - 确认
CUDA
版本,NVIDIA驱动
安装成功后,执行nvidia-smi
可以查看到当前显卡支持的CUDA
版本。再去 cuda-toolkit 寻找对应版本的CUDA
。
- 系统版本,我用的是
注意注意注意,这里有个超级巨坑,一定要注意(我特意写在前面了,不要上来就折腾,别翻车了都不知道怎么翻的)。
你要是直接安装了gcc
,并且成功安装了 NVIDIA驱动
,再去安装CUDA
,大概率会失败,很多人都是卡在这里被各种失败搞的头大,其实原因就是没有使用CUDA
官方的系统版本,导致软件环境不对(gcc
、kernel
、glibc
),最终结果就是那个CUDA
的安装脚本就失败了。
避坑方法:
-
第一步:正常去安装
NVIDIA驱动
,不要管什么系统版本和gcc
啥的,只要能让nvidia-smi
这个命令可以执行就行,然后就可以知道你当前的显卡支持的CUDA
版本了(下图显示了CUDA Version:11.4
,这就是显卡支持的CUDA
版本) -
- 第二步:去cuda-toolkit,根据这个
CUDA
版本寻找安装页面(看图里的version
这是系统版本,我选的的是ubuntu
,这里最大系统版本是20.04
,看到这里最好是把系统换成这下面列出的系统版本),如果你当前的系统版本不在这个列表中,最好是换操作系统,要杠的请继续。
- 第二步:去cuda-toolkit,根据这个
-
第三步:到这里就根据你的显卡成功确定了受支持的操作系统版本了,有了正确的
操作系统版本
之后,意味着kernel
、glibc
都没问题了,需要额外注意gcc
版本。访问 system-requirements ,根据操作系统版本
确认gcc
版本(我这里要选择的是ubuntu 20.04
,gcc
版本为9.4
)
到这里,基本就确定了以下细节:
- 硬件型号
- 根据
nvidia-smi
确认的cuda
版本 - 根据
cuda
版本确认的受支持的操作系统
版本 - 根据
cuda
受支持的操作系统
版本确认的gcc
版本
二、安装NVIDIA驱动
假设已经通过前面的步骤确认了gcc
版本,如果没有确认,那就随便装,参考第一步
1、查看显卡信息,执行:lspci | grep -i nvidia
2、卸载自带的驱动 ,执行:sudo apt purge nvidia*
3、禁用自带的nouveau
驱动 ,执行:nouveau nvidia
- 新建文件,执行:
sudo vi /etc/modprobe.d/blacklist.conf
- 写入以下内容
blacklist nouveau
options nouveau modeset=0
- 更新系统 ,执行:
sudo update-initramfs -u
- 查看是否被禁用,执行:
lsmod | grep nouveau
,空白输出表示被禁用(我用的是ubuntu server
版本这里始终是空白的,桌面版本还需要停掉相关服务sudo service lightdm stop
)
我不想在这里展开说nouveau
驱动是什么,有兴趣的自行百度。
4、查看gcc
版本,执行: gcc -v
。有可能输出没有gcc
或gcc
版本不是第一步中确认的版本
- 安装指定版本的
gcc
,我这里安装的是gcc 9
ll /usr/bin/gcc* ll /usr/bin/g++* sudo apt install g++-9 make -y sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/x86_64-linux-gnu-gcc-9 100 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/x86_64-linux-gnu-g++-9 100 ll /usr/bin/gcc* ll /usr/bin/g++*
- 要是看到了多个
gcc
版本,执行sudo update-alternatives --config gcc
,设置默认gcc
版本
5、下载对应显卡的驱动
- 访问 NVIDIA驱动 下载对应显卡的驱动。
- 我的显卡是
Quadro K5200
- 点击查找之后,出现的页面
- 点击查看,出现下载按钮
- 复制这个下载按钮的地址即可,或者下载了传到要安装的服务器上去。
最终我从官网得到的下载地址是https://cn.download.nvidia.com/XFree86/Linux-x86_64/470.256.02/NVIDIA-Linux-x86_64-470.256.02.run
5、安装驱动
- 给安装脚本可执行权限,执行:
chmod a+x NVIDIA-Linux-x86_64-470.256.02.run
- 执行安装脚本
sudo ./NVIDIA-Linux-x86_64-470.256.02.run -no-x-check -no-nouveau-check -no-opengl-files
说明:
-no-x-check: 安装时关闭X服务;
-no-nouveau-check: 安装时禁用nouveau;
-no-opengl-files: 只安装驱动文件,不安装OpenGL文件
- 耐心等待,中途会弹出好几个确认框,全部按回车键,但是注意其中一个(
NVIDIA X
)要选yes
- 耐心等待执行完成后,确认驱动安装是否成功
nvidia-smi
,显示如下说明成功了。
三、安装CUDA
注意,如果到了这一步,还没有搞清楚第一步中最后确认的受支持的操作系统
版本、gcc
版本。这里不用进行下去了,请返回第一步。继续下去100%
会失败。
安装步骤:
- 根据
nvidia-smi
的输出信息确认CUDA
版本 - 访问cuda-toolkit 选择对应
CUDA
版本安装方法
- 一行行复制页面中的
Base Installer
两行代码执行 - 等待一会,出现下面的内容表示安装成功
五、安装CUDNN
- 访问 cudnn-downloads 通过界面选择版本,要是没有适合当前系统的,请访问 cudnn-archive 存档 选择对应
CUDA
版本的CUDNN
版本
- 一行行复制页面中的
Base Installer
两行代码执行 - 没报错误就说明安装完成了
到这里关于NVIDIA
部分就全部完成了,下面开始安装大模型虚拟环境
五、安装Conda
- 访问 anaconda 存档,下载符合系统版本的安装文件,最好下载最新的版本。
- 我得到的地址是
https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
- 安装,执行:
sh Anaconda3-2024.10-1-Linux-x86_64.sh
- 安装过程中出现的询问全部直接按回车
- 安装完成后,默认的安装位置是
/root/anaconda3
。 - 如果当前用户不是
root
,会发现conda --version
命令执行失败(在不到conda
),就执行以下代码
# 切换到root用户
sudo su root
# 追加当前用户下的环境变量
echo "export PATH=/root/anaconda3/bin:$PATH" >> .bashrc
# 生效
source .bashrc
- 初始化
conda
,执行conda init
下面是conda
基础环境搭建
- 以下代码在
root
用户下执行(前面的代码中已经切换到root
了) - 创建一个虚拟环境(
名称、python版本
),执行:conda create -n dev python=3.8 -y
- 激活环境(环境
名称
)conda activate dev
- 如果发现激活环境出现错误,请执行以下代码
退出虚拟环境
conda deactivate
进入虚拟环境
conda activate dev
六、安装pytorch
- 这里的操作都需要在
conda
虚拟出来的环境中执行,conda activate dev
- 访问 pytorch ,根据
操作系统
版本和CUDA
版本选择。
- 我这里选择的是
# CUDA 11.3 conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
- 检查是否安装成功
python
import torch
print(torch.__version__) # 输出PyTorch版本号,确认安装成功。
print(torch.cuda.is_available()) # 输出 true 表示 cuda 可用,false 表示不可用
到这里完事。大模型的搭建工作就完成了,可以开始跑大模型了。
下面附带记录一下在esxi 7
中对虚拟机的设置,用来支持显卡直通,跑ai大模型
七、esxi
设置虚拟机
- 设置显卡直通
- 虚拟机内存设置
- 新增虚拟机
pci
设备
- 选择
pci
设备
- 设置虚拟机启动引导模式,(
CUDA
要求是EFI
模式)
- 最后点确定,开始启动。后面进入系统后正常开始安装
NVIDIA
相关和conda
相关即可。
评论区