为了让大模型发挥更大用途,决定在本地搭建大模型微调环境,在原有的PC上加装Tesla V100,前前后后耗时一个多月,遇到若干技术问题,好在目前已基本得到解决,也打破了很多网上店家包括身边专家对GPU搭建上的一些认知误区,特此记录。
1,为何是Tesla V100:
为了节省开支,考虑到原PC内置RTX 4070Ti有12G的显存,能够达到40G显存的最低要求,必须选择32G以上的显卡,能达到此要求的,并且性价比最高的,显然首选V100。 最终选定的型号是Tesla V100-SXM3-32GB, PCIe 接口,定制版。是网上能买到的最便宜的32GB V卡。 咸鱼上便宜,有的才几千,不敢买,网上被骗的太多。京东上3万起步,太贵。PDD上没有。最终选定的是淘宝,当时售价是1.19w (现在已经调价为1.59w)。
2,PC上能混装数据中心V卡和个人用的RTX卡吗?
去年年初购买的PC,当时还只是想用来做一般的深度学习训练,以为有8GB显存就够了。定了一个相对便宜的配置:ATX机箱,i5 13400F, 16G RAM, RTX4070Ti,1T SSD,850W电源,技嘉B760M主板。后来大模型出现后,发现系统GPU显存成了瓶颈,7B以下,量化后,勉强能跑。再大点的模型,就很难跑起来,试了很多方法,包括用网上免费显卡主机,模型优化,都不能完全覆盖需求,因此升级本地显卡成了必选项。V100毕竟是5年前的产物,和4070中间差了2个大的版本迭代,能否混用,之前一直是有担心的。网上查阅很多资料,特别是V100在PC上的安装,得出结论,可以混装。这主要是得益于Nvidia公司的超强的架构把控,最大程度的实现了向后兼容,用最新版本的显卡驱动以及cuda可以适配以往数年前的显卡。
3,ATX机箱如何插入V100
ATX机箱偏小,虽然主板上有两个PCIe插槽,但下方的插槽跟主板上的接线端子靠的非常近,基本就是摆设,同时考虑到原电源功率不足以驱动两块显卡同时工作,最终选择了v100显卡外置。
4,外置显卡具体怎么做
查阅资料后,选定了OCuLink总线方案来达成外置显卡接入PC。替代方案有PCIe延长线,雷电口,USB 3.0 等。 为了不损失性能,且具备扩展能力,最终确定为OCuLink。外置显卡需要额外购买的配件有:500W ATX电源(200元),OCuLink转接板(400元),GPU支架(40元),定制风扇(40元)。几个细节要注意:1,外置电源瓦数不要太低,电源上要有开关,V100标称功率250W,选用电源是500W 长城品牌,主要考虑是未来扩展以及电源上其他供电方式会分担一部分功率。2,电源接通后,一般是不能正常点亮的,还需要主板接线端子开关脚低电平信号,我用的是一根短铁丝把4,5两个管脚短接解决了这个问题。 3,OCuLink 外置转换板上配有风扇4pin接线柱,但无调节风扇能力,接上风扇后,风扇狂转,声音偏大,待久了受不了。需要把定制风扇接线穿过机箱,接到主板上,主板一般会有多个预留的风扇4pin口,随便选一个近的插上,后期用FanControl软件来控制转速。4,OCuLink外接卡有GPU 6pin电源插槽,V100上有两个8 pin电源插槽,这两个都需要接入GPU电源, GPU电源与PCI电源不可混用,否则会引起短路,直接让电源停止工作。v100上的2个8 pin电源是为了分流,同时2个8pin的最左侧2个管脚全部接地,因此随便选一个8pin,插入一个8 pin电源就行。5,前期实验,这个电源线可以不接。主板仍然能够识别显卡,并可以顺利安装驱动,通过nvidia-smi可以查看设备信息以及进行简单的cuda调用,但很不稳定。接通v100上的电源后,就可以长时间稳定工作了,6,OCuLink内外两块板是 通过2根M2数据线连接,两根顺序如果接反,会导致外置显卡性能下降,从原来的PCIe 3 X 16 降为 PCIe X 4,如果系统配置上显卡总线信息不对,则对调2个数据线就能解决。 7,外置显卡必须先上电,再接通启PC电源,重启是无法识别新加入的外置显卡的, 这应该是OCuLink接入方式的一大弊端。8,V100制冷优先选用定制风扇,相比水冷方案,不拆显卡,长时间跑模型,温差能控制在50度以内,不会有啥问题。
5,如何点亮及安装驱动
N卡做工非常精细,只要不是特别野蛮操作,一般不会出问题,好几次带电操作插拔显卡,显卡仍然坚挺。前期没有购买外置接入配套设备时,由于电源功率不足,需要轮番插拔2个显卡中的一个,而V100没有视频输出,因此只能通过ToDesk软件,手机远程登录电脑,进行相关操作。如果插入v100,bios自检无法通过,则需要修改bios配置,对于B760M主板,默认的支持4G以上显卡的自动选项是不行的,需要改为Enable。
应该是英伟达官方故意为之,V100-SXM3-32GB这一型号被官方在Windows10,11驱动里抹除了,需要手工修改inf文件。以最新的552.22驱动包为例,找到解压后的驱动包,再Display.Driver目录下,用记事本打开nv_dispsig.inf文件,查找NVIDIA Tesla V100-SXM2-32GB所在行,增加NVIDIA_DEV.1DB8.12AB.10DE = "NVIDIA Tesla V100-SXM3-32GB" 以及 %NVIDIA_DEV.1DB8.12AB.10DE% = Section029, PCI\VEN_10DE&DEV_1DB8&SUBSYS_12AB10DE 。 然后进入免签名模式安装驱动即可。
Linux系统则简单很多,以Ubuntu 24.04为例,系统装完,选最新Nvidia官方驱动安装就行.
驱动安装好之后,接着装cuda toolkit, cudnn, pytorch。 然后就能愉快玩耍了。
命令截图留作纪念: