侧边栏壁纸
博主头像
术业有道之编程博主等级

亦是三月纷飞雨,亦是人间惊鸿客。亦是秋霜去叶多,亦是风华正当时。

  • 累计撰写 99 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

AI大模型环境搭建

Administrator
2024-12-06 / 0 评论 / 3 点赞 / 71 阅读 / 16789 字

写在前面

最近在耍一些开源的ai大模型,很早之前在服务器上搭建过NVIDIA驱动CUDA,但是没写成笔记,导致了昨天我再整的时候各种问题。今天顺利完成,打算记录一下,避免踩坑。

一、条件准备和避坑指南

  • 硬件,我的显卡是NVIDIA Corporation GK110GL [Quadro K5200],可以用lspci | grep -i nvidia命令查看
  • 软件
    • 系统版本,我用的是liunx发行版ubuntu 。千万注意你的显卡和ubuntu版本。很有可能第一次只能安装成功NVIDIA驱动,但是CUDA一直失败。原因在于CUDA的要求是gcckernelglibc版本对应,请看 system-requirements。具体怎么折腾我马上讲到。
    • 确认 NVIDIA驱动NVIDIA驱动官网 在这里根据显卡选择,如果列表中都没有,那说明当前显卡不支持,换显卡吧
    • 确认CUDA版本,NVIDIA驱动安装成功后,执行nvidia-smi可以查看到当前显卡支持的CUDA版本。再去 cuda-toolkit 寻找对应版本的CUDA

注意注意注意,这里有个超级巨坑,一定要注意(我特意写在前面了,不要上来就折腾,别翻车了都不知道怎么翻的)。

你要是直接安装了gcc,并且成功安装了 NVIDIA驱动,再去安装CUDA,大概率会失败,很多人都是卡在这里被各种失败搞的头大,其实原因就是没有使用CUDA官方的系统版本,导致软件环境不对(gcckernelglibc),最终结果就是那个CUDA的安装脚本就失败了。

避坑方法:

  • 第一步:正常去安装NVIDIA驱动,不要管什么系统版本和gcc啥的,只要能让nvidia-smi这个命令可以执行就行,然后就可以知道你当前的显卡支持的CUDA版本了(下图显示了 CUDA Version:11.4,这就是显卡支持的CUDA版本)

  • 驱动安装成功.png

    • 第二步:去cuda-toolkit,根据这个CUDA版本寻找安装页面(看图里的version这是系统版本,我选的的是ubuntu,这里最大系统版本是20.04,看到这里最好是把系统换成这下面列出的系统版本),如果你当前的系统版本不在这个列表中,最好是换操作系统,要杠的请继续。
      cuda安装.png
  • 第三步:到这里就根据你的显卡成功确定了受支持的操作系统版本了,有了正确的操作系统版本之后,意味着kernelglibc都没问题了,需要额外注意gcc版本。访问 system-requirements ,根据操作系统版本确认gcc版本(我这里要选择的是ubuntu 20.04gcc版本为9.4
    cuda支持.png

到这里,基本就确定了以下细节:

  • 硬件型号
  • 根据nvidia-smi确认的cuda版本
  • 根据cuda版本确认的受支持的操作系统版本
  • 根据cuda受支持的操作系统版本确认的gcc版本

二、安装NVIDIA驱动

假设已经通过前面的步骤确认了gcc版本,如果没有确认,那就随便装,参考第一步

1、查看显卡信息,执行:lspci | grep -i nvidia

显卡信息.png

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。有可能输出没有gccgcc版本不是第一步中确认的版本

  • 安装指定版本的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版本
    设置默认gcc版本.png

5、下载对应显卡的驱动

  • 访问 NVIDIA驱动 下载对应显卡的驱动。
  • 我的显卡是 Quadro K5200
    驱动查找.png
  • 点击查找之后,出现的页面
    查看驱动查找结果.png
  • 点击查看,出现下载按钮
    驱动查找结果下载.png
  • 复制这个下载按钮的地址即可,或者下载了传到要安装的服务器上去。
    最终我从官网得到的下载地址是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
    x驱动选择yes.png
  • 耐心等待执行完成后,确认驱动安装是否成功nvidia-smi,显示如下说明成功了。
    驱动安装成功.png

三、安装CUDA

注意,如果到了这一步,还没有搞清楚第一步中最后确认的受支持的操作系统版本、gcc版本。这里不用进行下去了,请返回第一步。继续下去100%会失败。

安装步骤:

  • 根据nvidia-smi的输出信息确认CUDA版本
  • 访问cuda-toolkit 选择对应CUDA版本安装方法
    cuda安装.png
  • 一行行复制页面中的Base Installer两行代码执行
  • 等待一会,出现下面的内容表示安装成功
    cuda安装成功.png

五、安装CUDNN

  • 访问 cudnn-downloads 通过界面选择版本,要是没有适合当前系统的,请访问 cudnn-archive 存档 选择对应CUDA版本的CUDNN版本
    cudnn下载.png
  • 一行行复制页面中的Base Installer两行代码执行
  • 没报错误就说明安装完成了

到这里关于NVIDIA部分就全部完成了,下面开始安装大模型虚拟环境

五、安装Conda

  • 访问 anaconda 存档,下载符合系统版本的安装文件,最好下载最新的版本。
    conda下载.png
  • 我得到的地址是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版本选择。
    pytorch下载.png
  • 我这里选择的是
    # 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设置虚拟机

  • 设置显卡直通
    esxi切换显卡直通.png
  • 虚拟机内存设置
    虚拟机内存设置.png
  • 新增虚拟机pci设备
    新增虚拟机pic设备.png
  • 选择pci设备
    选择pci设备.png
  • 设置虚拟机启动引导模式,(CUDA要求是EFI模式)
    虚拟机启动引导模式.png
  • 最后点确定,开始启动。后面进入系统后正常开始安装NVIDIA相关和conda相关即可。

个人公众号

3

评论区