机箱外体积都不算:homelab扩展7GPU升级方案分享
机箱外体积都不算:homelab扩展7GPU升级方案分享
本文曾在 chiphell、 chiphell微信公众号 、v2ex 、知乎 、酷安、 bilibili专栏 发表,此为后续微调版本,如有不同以本文为准
提示:文章内部分硬件较为小众,外加市场供求影响,价格可能会受到波动,请理智判断自身需求,有需要及时采购。作者没有和任何商家有关系,对部分数据会进行脱敏处理。
前言
继上篇文章 EPYC 8盘3.5寸机械+多盘nvme闪存 【25G高性能】 NAS搭建方案分享 已经过去了整整一年,为了“跟上AI浪潮”,我决定对homelab进行一次全面升级。
这次升级的主要目标是将原本的存储型转变为存算一体型的系统。要使机器具备大模型的推理能力,并具备一定程度的大模型微调能力和深度学习开发能力。此外,还需要确保系统在噪音敏感的家庭环境中运行时不会产生过多噪音。
我选择在原有小机箱的基础上进行改造,而不是使用商业的准系统机架式GPU服务器,主要考虑到以下:
- 成本:在已有设备基础上进行升级可以有效控制成本
- 灵活:要将算力资源解耦,可以在未来根据需求增删模块
- 噪音:要保持整体噪音水平可控,机架服务器准系统大多噪音不可控
原本机器是6*PCIe单槽半高的规格,而且现有NVMe硬盘占用了多数PCIe通道,直连的通道已经很难继续扩展GPU。更换扩展性更强的主板虽可行,但半人马座机箱对主板宽度的限制较大,简单调查后例如H12SSL、H13SSL、rome D8这些扩展更强的主板都会遇到版型超宽或放入后右侧空间过少导致无法接驳SAS/SATA硬盘的问题。对于EPYC平台,半人马机箱目前看起来只有H11SSL最为合适。
我曾考虑过半高单槽直插的GPU,包括Tesla P4、Tesla T4、Tesla A2、Tesla L4,甚至是魔改单槽散热款的A2000、A1000 SFF、RTX 4060等,但在计算剩余PCIe通道后,直插单卡无法完全满足我的需求。
接下来,我将详细介绍此次升级的具体内容和实现过程。
GPU升级过程
1. 4卡SXM2扩展(四卡v100)
2024年前市场上出现了一批属于超微1028TVRT系统的备件,即AOM SXM2/AOM SXMV底板,为DIY玩家上SXM2 GPU提供了条件。可以安装4块Nvidia SXM2插槽的GPU。底板可以提供四路NVLink,是PCIe设备无法达到的。进行大模型调优时NVLink必不可少,
而且tesla V100 16G-SXM2 价格比PCIe版本低不少。
安装过程中,底板为裸PCB板,需要处理与宿主机的连接和GPU散热问题。AOM SXM2使用的是非标准插座“JPCIE”和主机进行连接,好在已经能买到JPCIe转PCIe的连接线/转接卡。
起初尝试过自行DIY机箱、DIY分体软管水冷散热,甚至采购了水冷头,但进展不顺利。若采用水冷方案,外挂的冷排和走线以及底板的固定都是不小的工程。
三月底,市场上出现了适用于AOM SXMV底板的成品3U准系统,内置合理的风道,可以直接使用原装拆机的风冷散热。经过测试,成品3U准系统的噪音在可接受范围内,风扇通过滑动电阻手动调节转速,这样散热和噪音问题都解决了。
2. 5卡PCIe扩展
仅使用四张V100(Volta架构)GPU,因其架构不够成熟,Tensor Core没有INT4、INT8整数计算能力,不支持INT4、INT8意味着用V100推理时效率会很低,只能使用GPU SM核心来计算,Tensor Core无法发挥作用。四卡V100硬跑INT4算力可能都超过不了一张3090显卡,无法满足要求。而后续的turing架构开始支持。
64G显存如果使用FP16模式推理,只能跑7B小模型,当前开源模型要发挥好的效果也就是能一定程度展现出涌现性公认是模型体积至少要大于30B。
考虑后认为需要继续扩展GPU设备,以便尽可能在FP16模式下运行大模型,或用PCIe GPU单独推理大模型,以达到较快的输出速率。目前性价比最高的推理卡是2080Ti魔改22GB版,20系这代geforce GPU的NVLink并未被驱动限制,实测2080Ti和V100的P2P NVLink规格完全一致。
另外,2080ti是最后一代可以开vGPU的游戏卡。
四月份市场上出现了少量PM8546 96xG3芯片的PCIe扩展柜,型号浪潮BX512-IP属腾讯定制OEM产品。可用一个PCIe 3.0x16扩展出五个PCIe 3.0x16,该定制系统支持最高三槽厚显卡。需要注意,浪潮BX512-IP如果需要安装nvlink桥需要使用3-slot规格。
虽然PEX8796也有相同的扩展性,比如去年大船到岸的dell VK911(右图)。去年下半年kcores也制作了PEX8796转出10个SFF-8654-8i(PCIe 3.0x8)的DIY扩展方案(左图),但拿PEX8796扩展卡来加GPU还是需要DIY固定/散热/供电结构,工程难度不低。
尝试安装浪潮BX512-IP扩展柜时,宿主调用GPU时出现系统崩溃,表现为“watchdog: BLD: soft lockup CPU#13 stuck for 26s! Iny open 0:865”。
查看dmesg记录后,问题确定为GPU连接中断,推测是PCIe信号完整性问题,在BIOS中禁用DMA保护和PCIe Spread Spectrum后,系统无报障,问题得以解决。
踩坑建议:不推荐消费级主板使用浪潮BX512-IP扩展柜,做好无法兼容的准备。
浪潮BX512-IP扩展柜自带的函道扇虽然可以调速,最低25%转速也很吵,遂全部拆除,替换为两把12025风扇,放置在靠近switch芯片的隔层。
改装后实测可以静音化运行,web后台检测到芯片控制在40~50度,远低于85度阈值
扩展柜最高可以支持5卡扩展,这里先暂时插两张2080ti+一张tesla P4。经测试也可以插nvme硬盘
3. 主板直插PCIe设备掉卡BUG修复
超微H11SSL主板在pve系统启动时会随机丢失部分nvme设备,需要彻底断电重启后才能重新识别。该问题去年刚组装好就有,换主板也没解决。推测是由于PCIe设备过多,Linux系统在引导时来不及全部加载。存算一体改装后因为pcie设备增多,问题更加凸显。
为了解决这个问题,新购买了一个PEX8747 PCIe扩展卡。将一个NVMe盘插去自用的台式机,剩下四张2TB NVMe盘全部挂在PLX芯片下。
因为去年乘大船有购买一个sn640 8T,四枚2T NVME+sn640 8T共16T闪存池也够用。经测试系统启动时不再随机丢失PCIe设备,所有设备均能正常加载和识别,问题得以解决。
CPU更换
将原本的EPYC 7D12更换为EPYC 7282,提升了整体计算能力。7D12虽然功耗较低,但单核频率较低,而7282在功耗稍微增加的情况下,提供了更高的频率(全核3.1GHZ)和更多的内存通道(4→8),适合GPU计算需求。
最近受挖矿影响,EPYC主板和CPU价格上涨,7D12大涨,7282因大船到货市场供大于求,价格相对较低。于是决定“升级”到7282,甚至回血了1k+(笑)
此外,新一批7K62也刚到岸,性价比也很高。新购可以考虑7k62。
内存升级
内存从96GB升级到384GB。大模型的训练和推理对内存容量需求非常高,需要2倍于显存的内存容量才比较稳妥。因此采购8条64g recc 2400内存,共512GB
换用7282后还是遇到了掉内存通道的问题,八通道只认出了七通道,再重启就只剩六通道了。:(((
推测是主板问题,毕竟u买来是全新未上机的。最终决定卖掉两条内存,采用六通道384GB内存配置,这样也能完全满足需求。
踩坑建议:epyc主板容易出现问题,掉内存通道掉pcie特别头疼,正经用就全新的吧
闪存池调整
将原有的52TB SSD调整为 42TB+8TB SSD解决稳定性(上文提到)闪存池由winserver虚拟机创建,共享到pve宿主或任意虚拟机
上机测试/展示
四卡v100-16 800gbps互联
双卡2080ti 800gbps互联
p2p实际测速:
Unidirectional P2P=Disabled Bandwidth Matrix (GB/s)
D\D 0 1 2 3 4 5
0 775.43 10.12 11.50 11.40 5.78 5.77
1 10.16 780.47 11.53 11.45 5.77 5.80
2 11.58 11.57 779.69 10.11 5.78 5.79
3 11.53 11.55 10.13 780.47 5.77 5.78
4 5.79 5.78 5.82 5.96 531.04 5.78
5 5.81 5.80 5.83 5.83 5.78 530.32
Unidirectional P2P=Enabled Bandwidth (P2P Writes) Matrix (GB/s)
D\D 0 1 2 3 4 5
0 775.82 48.49 48.48 48.48 5.78 5.77
1 48.48 779.30 48.48 48.48 5.77 5.76
2 48.48 48.49 778.14 48.48 5.76 5.77
3 48.48 48.48 48.48 779.30 5.77 5.78
4 5.77 5.80 5.86 5.93 530.78 47.10
5 5.77 5.77 5.78 5.86 47.10 530.14
Bidirectional P2P=Disabled Bandwidth Matrix (GB/s)
D\D 0 1 2 3 4 5
0 777.75 10.50 14.33 14.36 8.50 8.62
1 10.45 759.42 14.43 14.45 8.58 8.61
2 14.53 14.45 779.11 10.43 8.54 8.63
3 14.59 14.46 10.39 779.50 8.54 8.58
4 8.58 8.62 8.60 8.53 531.63 6.10
5 8.56 8.51 8.58 8.57 6.11 531.27
Bidirectional P2P=Enabled Bandwidth Matrix (GB/s)
D\D 0 1 2 3 4 5
0 779.50 96.84 96.88 96.83 8.55 8.63
1 96.90 779.11 96.92 96.92 8.48 8.56
2 96.92 96.92 781.25 96.91 8.41 8.54
3 96.90 96.91 96.91 779.30 8.52 8.53
4 8.59 8.64 8.62 8.56 531.61 94.11
5 8.56 8.53 8.56 8.53 94.14 530.43
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 CPU Affinity
GPU0 X NV2 PHB PHB NV2 NV2 0-31 0
GPU1 NV2 X PHB PHB NV2 NV2 0-31 0
GPU2 PHB PHB X NV2 PHB PHB 0-31 0
GPU3 PHB PHB NV2 X PHB PHB 0-31 0
GPU4 NV2 NV2 PHB PHB X NV2 0-31 0
GPU5 NV2 NV2 PHB PHB NV2 X 0-31 0
简单跑一个通义千问110B版本测试下:
价格单
以下是此次homelab升级过程中涉及的主要硬件和相关价格(价格仅供参考,具体以实际采购为准):
项目 | 型号/名称 | 数量 | 单价(人民币) | 备注 |
---|---|---|---|---|
GPU | V100 SXM2 | 4 | 6400 | 每张约1600 |
GPU | 2080ti -22g | 2 | 5500 | |
CPU | AMD EPYC 7282 | 1 | -1050 | 替换原有EPYC 7D12,减去旧u回血,价格负 |
内存 | 64GB DDR4 2400 ECC | 6 | 2300 | 总计384GB,减去旧内存回血 |
连接器 | PCIe 转 SFF-8654-8i | 3 | 520 | 140 |
连接器 | JPCIe 转 SFF-8654-8i | 2 | 280 | 140 |
连接器 | SFF-8654交叉线 | 6 | 300 | |
连接器 | nvlink 3lot | 1 | 200 | 2080ti用 |
GPU扩展底板 | AOM SXMV | 1 | 1250 | 裸板 |
GPU扩展柜 | 用于AOM SXMV底板 | 1 | 980 | 准系统带电源 |
GPU扩展柜 | 浪潮BX512-IP | 1 | 2800 | 准系统带电源 |
PCIe扩展卡 | PEX8747 4nvme | 1 | 350 | 解决掉卡问题 |
散热器 | 拆机sxm2 gpu 散热器 | 4 | 600 | 单价150不包邮 |
总计花费 20430 ¥
有问题评论区交流,感谢你的观看!此外提醒,认清需求,理智消费~