机箱外体积都不算~ homelab 外挂 7GPU 存算一体升级小记

101 天前
 piero66

机箱外体积都不算~ homelab 外挂 7GPU 存算一体升级小记

提示:文章内部分硬件较为小众,外加市场供求影响,价格可能会受到波动,请理智判断自身需求,有需要及时采购。作者没有和任何商家有关系,对部分数据会进行脱敏处理。

前言

继上篇文章 EPYC7D12 8 盘 3.5 寸机械+多盘 nvme 闪存 [ 25G 高性能] NAS 搭建方案分享 已经过去了整整一年,为了“跟上 AI 浪潮”,我决定对 homelab 进行一次全面升级。

这次升级的主要目标是将原本的存储型转变为存算一体型的系统。要使机器具备大模型的推理能力,并具备一定程度的大模型微调能力和深度学习开发能力。此外,还需要确保系统在噪音敏感的家庭环境中运行时不会产生过多噪音。

我选择在原有小机箱的基础上进行改造,而不是使用商业的准系统机架式 GPU 服务器,主要考虑到以下:

  1. 成本:在已有设备基础上进行升级可以有效控制成本
  2. 灵活:要将算力资源解耦,可以在未来根据需求增删模块
  3. 噪音:要保持整体噪音水平可控,机架服务器准系统大多噪音不可控

原本机器是 6*PCIe 单槽半高的规格,而且现有 NVMe 硬盘占用了多数 PCIe 通道,直连的通道已经很难继续扩展 GPU 。更换扩展性更强的主板虽可行,但半人马座机箱对主板宽度的限制较大,简单调查后例如 H12SSL 、H13SSL 、rome D8 这些扩展更强的主板都会遇到版型超宽或放入后右侧空间过少导致无法接驳 SAS/SATA 硬盘的问题。对于 EPYC 平台,半人马机箱目前看起来只有 H11SSL 最为合适。

我曾考虑过半高单槽直插的 GPU ,包括 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 ¥

有问题评论区交流,感谢你的观看!此外提醒,认清需求,理智消费~
4464 次点击
所在节点    NAS
40 条回复
piero66
101 天前
@zhaidoudou123 chiphell 、zhihu 、coolapk 、bili 不需要图床的也投稿了,去那边看吧
NewHere
101 天前
为啥我去黄鱼上看,浪潮 BX512-IP 是 4 卡扩展柜,而且是只能插涡轮卡的那种
zhaidoudou123
101 天前
@piero66 #21
我去找找
按理说这 cn 域名我没理由打不开呀..
sdd11
101 天前
@piero66 你这个 P2P 的测速的 GPU 编号是不是和 topo 的编号不一致,测速的 0 1 2 3 号 GPU 到自己的带宽是 780G ,4 5 号 GPU 到自己的带宽是 530G ,530G 的这两个才是 2080ti 吧。这样就能解释 P2P 带宽了,就是只有 NVLINK 直连的才是 800G ,只要走 PCIE 就很慢。
sdd11
101 天前
@inorobot 是用 VLLM 么?是 Tensor 并行还是 Pipeline 并行?
0o0O0o0O0o
101 天前
别人家的 homelab
piero66
101 天前
@NewHere 有两种,我这种货比较少
ihuotui
101 天前
不如直接 4090 吧,个人一般跑推理不是训练。
piero66
101 天前
@ihuotui 2 万预算买 4090 能有 108G 显存么:)
Pteromyini
101 天前
@ihuotui #28 在显存面前算力还是不够看啊,两个 4090 48GB 显存撑死跑 34B 这个规模的模型,70B 以上的规模 q4 量化都不太够
wm5d8b
100 天前
感谢 op 分享 BX512-IP 扩展柜,我之前在考虑使用多个 oclink 扩展坞的方案,还是这个扩展柜方便
comlewin
100 天前
能不叫 homeidc 啊
akin520
100 天前
看着你的感觉超静音呀,我的 4 卡 P100,声音超大呀
ScqLl
100 天前
要不是电费太贵我也想整了,幸好有云 GPU
playboy0
100 天前
VK911 一共都没有多少货,有一个在你手里呀,牛
piero66
100 天前
@akin520 所以说要思路打开,机架式 gpu 准系统散热设计不适合家用
hawei
100 天前
好赞
wm5d8b
99 天前
op 的 BX512-IP 扩展柜 可以分享下入手渠道吗,我找了找没有短的,都是 700+长的,switch 芯片在风扇正前方
piero66
99 天前
@wm5d8b 关键字 GPU 扩展柜
inorobot
63 天前
@sdd11 vllm 多卡推理 --tensor-parallel-size 配置成卡数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1061355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX