V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。
piero66
V2EX  ›  NAS

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

  •  
  •   piero66 · 50 天前 · 4152 次点击
    这是一个创建于 50 天前的主题,其中的信息可能已经有所发展或是发生改变。

    shoutu-gai.jpg

    机箱外体积都不算~ 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 )

    aomsmv.jpg

    2024 年前市场上出现了一批属于超微 1028TVRT 系统的备件,即 AOM SXM2/AOM SXMV 底板,为 DIY 玩家上 SXM2 GPU 提供了条件。可以安装 4 块 Nvidia SXM2 插槽的 GPU 。底板可以提供四路 NVLink ,是 PCIe 设备无法达到的。进行大模型调优时 NVLink 必不可少,

    而且 tesla V100 16G-SXM2 价格比 PCIe 版本低不少。

    sxmv-tech.jpg

    安装过程中,底板为裸 PCB 板,需要处理与宿主机的连接和 GPU 散热问题。AOM SXM2 使用的是非标准插座“JPCIE”和主机进行连接,好在已经能买到 JPCIe 转 PCIe 的连接线/转接卡。

    riser1.jpg

    riser2.jpg

    起初尝试过自行 DIY 机箱、DIY 分体软管水冷散热,甚至采购了水冷头,但进展不顺利。若采用水冷方案,外挂的冷排和走线以及底板的固定都是不小的工程。

    v100core.jpg

    三月底,市场上出现了适用于 AOM SXMV 底板的成品 3U 准系统,内置合理的风道,可以直接使用原装拆机的风冷散热。经过测试,成品 3U 准系统的噪音在可接受范围内,风扇通过滑动电阻手动调节转速,这样散热和噪音问题都解决了。

    svmbox.jpeg

    box2.jpg

    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 的游戏卡。

    gpubox.jpg

    四月份市场上出现了少量 PM8546 96xG3 芯片的 PCIe 扩展柜,型号浪潮 BX512-IP 属腾讯定制 OEM 产品。可用一个 PCIe 3.0x16 扩展出五个 PCIe 3.0x16 ,该定制系统支持最高三槽厚显卡。需要注意,浪潮 BX512-IP 如果需要安装 nvlink 桥需要使用 3-slot 规格。

    pex8796.jpeg

    vk911.jpg

    虽然 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”。

    461722338496_.pic.jpg

    581722346856_.pic.jpg

    查看 dmesg 记录后,问题确定为 GPU 连接中断,推测是 PCIe 信号完整性问题,在 BIOS 中禁用 DMA 保护和 PCIe Spread Spectrum 后,系统无报障,问题得以解决。

    踩坑建议:不推荐消费级主板使用浪潮 BX512-IP 扩展柜,做好无法兼容的准备。
    

    浪潮 BX512-IP 扩展柜自带的函道扇虽然可以调速,最低 25%转速也很吵,遂全部拆除,替换为两把 12025 风扇,放置在靠近 switch 芯片的隔层。

    改装后实测可以静音化运行,web 后台检测到芯片控制在 40 ~ 50 度,远低于 85 度阈值

    removefan.jpg

    web.jpg

    扩展柜最高可以支持 5 卡扩展,这里先暂时插两张 2080ti+一张 tesla P4 。经测试也可以插 nvme 硬盘

    3. 主板直插 PCIe 设备掉卡 BUG 修复

    超微 H11SSL 主板在 pve 系统启动时会随机丢失部分 nvme 设备,需要彻底断电重启后才能重新识别。该问题去年刚组装好就有,换主板也没解决。推测是由于 PCIe 设备过多,Linux 系统在引导时来不及全部加载。存算一体改装后因为 pcie 设备增多,问题更加凸显。

    为了解决这个问题,新购买了一个 PEX8747 PCIe 扩展卡。将一个 NVMe 盘插去自用的台式机,剩下四张 2TB NVMe 盘全部挂在 PLX 芯片下。

    8747.jpg

    因为去年乘大船有购买一个 sn640 8T ,四枚 2T NVME+sn640 8T 共 16T 闪存池也够用。经测试系统启动时不再随机丢失 PCIe 设备,所有设备均能正常加载和识别,问题得以解决。

    CPU 更换

    fixcpuing.jpg

    7282.jpg

    将原本的 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 宿主或任意虚拟机

    上机测试/展示

    neofetch-a.jpg

    nvidia-smi.pic.jpg

    四卡 v100-16 800gbps 互联

    双卡 2080ti 800gbps 互联

    nvlink.jpg

    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 版本测试下:

    bench.jpg

    价格单

    以下是此次 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 ¥

    cable.jpeg

    有问题评论区交流,感谢你的观看!此外提醒,认清需求,理智消费~
    
    40 条回复    2024-09-07 23:59:02 +08:00
    kk2syc
        1
    kk2syc  
       50 天前
    好!快进到人手一个家用超算机房!
    dapaoge
        2
    dapaoge  
       49 天前
    厉害 大佬
    piero66
        3
    piero66  
    OP
       49 天前 via Android
    @kk2syc 现在的 ai 赛博黄金铲迟早会变成电子垃圾的
    EchoWhale
        4
    EchoWhale  
       49 天前 via iPhone
    羡慕大房子
    goodryb
        5
    goodryb  
       49 天前
    要不是弱电箱放不下,高低我也整一套
    b1u2g3
        6
    b1u2g3  
       49 天前
    OP 你风道没有考虑么?看着热散不出去呀。
    piero66
        7
    piero66  
    OP
       49 天前 via Android
    @b1u2g3 1/4 面为开放环境,会自然对流
    Navee
        8
    Navee  
       49 天前
    🐂🍺
    这是自建机房了吧。
    sdd11
        9
    sdd11  
       49 天前 via iPhone
    2080ti 和 v100 之间并没有 nvlink 直连吧,是经过了 plx 的,为啥也能跑满 nvlink 得带宽呢
    NCZkevin
        10
    NCZkevin  
       49 天前
    太强了
    inorobot
        11
    inorobot  
       49 天前 via iPhone
    我是整了 4 块 4060Ti 跑推理,64G ,如果上拆分能装 8 卡,能 128G ,基本各种模型都能跑了
    piero66
        12
    piero66  
    OP
       49 天前 via Android
    @sdd11 v100 和 2080ti 是两个簇,比裸奔没桥的好点,比不上 a100 后面的八路 nvlink 。v100 这代最大就四路 nvlink ,八卡 v100 也一样是两个簇走 cpu 交换数据
    piero66
        13
    piero66  
    OP
       49 天前 via Android
    @inorobot 可惜微调刚需 nvlink
    chesha1
        14
    chesha1  
       49 天前
    论单精度性能,4 张 v100 还不如一张 4090 吧,不过显存大确实是巨大优势
    GrayXu
        15
    GrayXu  
       49 天前
    完美,看完舒服了
    piero66
        16
    piero66  
    OP
       49 天前 via Android
    @chesha1 简单来说,微调单 v100 算力接近 3090
    kenny9572
        17
    kenny9572  
       49 天前
    不错,很有参考意义
    zzzyk
        18
    zzzyk  
       49 天前
    最后的交换机有点格格不入呀。
    piero66
        19
    piero66  
    OP
       49 天前 via Android
    @zzzyk 挡不住便宜啊
    zhaidoudou123
        20
    zhaidoudou123  
       49 天前
    为什么你的 freeimg.cn 的图我一个都打不开..😂
    piero66
        21
    piero66  
    OP
       49 天前 via Android
    @zhaidoudou123 chiphell 、zhihu 、coolapk 、bili 不需要图床的也投稿了,去那边看吧
    NewHere
        22
    NewHere  
       49 天前
    为啥我去黄鱼上看,浪潮 BX512-IP 是 4 卡扩展柜,而且是只能插涡轮卡的那种
    zhaidoudou123
        23
    zhaidoudou123  
       49 天前
    @piero66 #21
    我去找找
    按理说这 cn 域名我没理由打不开呀..
    sdd11
        24
    sdd11  
       49 天前
    @piero66 你这个 P2P 的测速的 GPU 编号是不是和 topo 的编号不一致,测速的 0 1 2 3 号 GPU 到自己的带宽是 780G ,4 5 号 GPU 到自己的带宽是 530G ,530G 的这两个才是 2080ti 吧。这样就能解释 P2P 带宽了,就是只有 NVLINK 直连的才是 800G ,只要走 PCIE 就很慢。
    sdd11
        25
    sdd11  
       49 天前
    @inorobot 是用 VLLM 么?是 Tensor 并行还是 Pipeline 并行?
    0o0O0o0O0o
        26
    0o0O0o0O0o  
       49 天前 via iPhone
    别人家的 homelab
    piero66
        27
    piero66  
    OP
       49 天前 via Android
    @NewHere 有两种,我这种货比较少
    ihuotui
        28
    ihuotui  
       49 天前
    不如直接 4090 吧,个人一般跑推理不是训练。
    piero66
        29
    piero66  
    OP
       49 天前 via Android
    @ihuotui 2 万预算买 4090 能有 108G 显存么:)
    Pteromyini
        30
    Pteromyini  
       49 天前
    @ihuotui #28 在显存面前算力还是不够看啊,两个 4090 48GB 显存撑死跑 34B 这个规模的模型,70B 以上的规模 q4 量化都不太够
    wm5d8b
        31
    wm5d8b  
       49 天前 via Android
    感谢 op 分享 BX512-IP 扩展柜,我之前在考虑使用多个 oclink 扩展坞的方案,还是这个扩展柜方便
    comlewin
        32
    comlewin  
       48 天前
    能不叫 homeidc 啊
    akin520
        33
    akin520  
       48 天前
    看着你的感觉超静音呀,我的 4 卡 P100,声音超大呀
    ScqLl
        34
    ScqLl  
       48 天前
    要不是电费太贵我也想整了,幸好有云 GPU
    playboy0
        35
    playboy0  
       48 天前
    VK911 一共都没有多少货,有一个在你手里呀,牛
    piero66
        36
    piero66  
    OP
       48 天前 via Android
    @akin520 所以说要思路打开,机架式 gpu 准系统散热设计不适合家用
    hawei
        37
    hawei  
       48 天前
    好赞
    wm5d8b
        38
    wm5d8b  
       47 天前 via Android
    op 的 BX512-IP 扩展柜 可以分享下入手渠道吗,我找了找没有短的,都是 700+长的,switch 芯片在风扇正前方
    piero66
        39
    piero66  
    OP
       47 天前 via Android
    @wm5d8b 关键字 GPU 扩展柜
    inorobot
        40
    inorobot  
       11 天前 via iPhone
    @sdd11 vllm 多卡推理 --tensor-parallel-size 配置成卡数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5292 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:25 · PVG 09:25 · LAX 18:25 · JFK 21:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.