ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零搭建开放式算力机架:多卡GPU本地大模型完整指南

从零搭建开放式算力机架:多卡GPU本地大模型完整指南 显存不够是几乎所有玩本地大模型的人都会撞上的墙。去年把项目从云GPU迁到本地之后我搭的第一台多卡机器就是开放式算力机架圈里习惯叫 open rig一个金属框架显卡像货架上的商品一样并排挂起来电源裸放在旁边没有机箱、没有风道、也没有任何遮遮掩掩。第一眼看觉得太过粗犷但几个月跑下来我反而认为这是个人和小团队做本地推理、模型微调、数据标注最合适的硬件形态之一。这篇文章不吹产品我把从硬件选型、功耗接线、系统部署到模型服务化的完整链路连同踩过的坑一起写清楚给正准备自建本地算力的人一个能直接照着抄的参考。1. 为什么选择开放式算力机架算力需求与硬件形态的匹配1.1 本地大模型推理的真实显存需求在动工之前先把显存需求算明白。这个账不算清楚后面买卡很容易拍脑袋。先说推理场景。跑一个 7B 参数的模型FP16 精度下权重大约占 14GB一张 24GB 的 3090 或 4090 单卡能跑但并发请求一上来显存立刻紧张70B 模型用 4bit 量化后权重约 35-40GB再加上 KV Cache 和运行时开销单卡 24GB 基本没戏至少两张卡做张量并行更大的 MoE 模型四卡都只是起步。如果你要对外提供服务还得预留并发流的显存余量不是刚好能加载权重就行。再说微调。QLoRA 4bit 微调 7B 模型单卡 24GB 勉强能跑全参数微调 7B实际显存需求往往在 60GB 以上多卡是硬性条件。数据标注、批量生成这类场景看似模型小但对并发要求高显存大小直接决定吞吐量上限。结论很直接要稳定好用地跑本地模型两张 24G 卡是保底四张起步才是常态。多 GPU 不是可选项而是刚需。在这种需求下相比买昂贵品牌工作站开放式机架是最具性价比的实现方式这也是 open rig 在本地 AI 圈子里持续流行的根本原因。1.2 开放式机架 vs 塔式整机 vs 机架式服务器没有对比就没有说服力。我自己用过品牌塔式工作站也摸过正经的机架式服务器分别说一下感受。对比维度开放式机架品牌塔式工作站机架式服务器硬件成本低框架几百块配件自由组合高品牌溢价明显更高商用主板和电源贵扩展能力卡位可随框架调整随时加卡受机箱空间和电源功率限制槽位多但机箱内部空间是硬约束散热逻辑完全裸露自然对流依赖环境通风有风道但多卡满载噪声不小强制风冷暴力散热动静堪比飞机故障排查全开放一眼定位问题需要开箱逐步拆查维护方便但环境要求高噪音水平显卡风扇电源风扇中等偏高高负载整机风扇起飞长期处于高噪音状态适合人群开发者、微型团队个人桌面少量卡企业机房、正式生产环境开放式机架三个核心优势最吸引我。一是省掉了机箱风道这层设计GPU 温度直接取决于室温夏天开空调就完事。二是故障定位极快哪块板子短路、哪个电源供电不稳裸板状态下肉眼就能看到配合万用表十分钟能判断个大概。三是改造自由度高四卡想升六卡换个大框架就行不用重新买整机。缺点是同样明显积灰快、裸露面板怕液体、噪音没有机箱遮挡这些后面都有对应方案。综合下来如果你和我一样是个人开发者或三五个人的小团队有独立房间或储物间open rig 就是很务实的路线。1.3 一套可复制的硬件清单基于我实际组装和长期维护两台机器的经验给一份清单作参考品牌不写死避免带货嫌疑重点在规格匹配机架铝型材3D打印件组成的六卡位开放式框架价格大概 200-500 元重点是卡位间距足够。主板支持 PCIe Bifurcation 的 ATX 板AMD X570/B550 或 Intel Z690/Z790 都行。CPU8 核以上即可推理场景对 CPU 算力要求不高微调场景可以上更高核心数。内存64GB 起步四卡以上建议 128GB。很多人会忽略系统内存但大模型加载时权重要暂存在内存里内存不足直接容器 OOM。电源多路 ATX 电源组合比如 1600W 加 1000W或者两组 1600W重点看后续功耗计算。显卡2-6 张 3090、4090 或专业卡显存优先于一切。PCIe Riser 线x16 转 x16 软排线多备两根便宜但关键。辅助件防静电手环、万用表、测温枪、气吹、绝缘垫。这份清单完全按能长期满载跑 AI 任务的标准配置不是好看党路线。2. 核心硬件选型每一块配件都在决定整机上限2.1 GPU 选型显存容量优先于算力GPU 是整台机器的灵魂也是最容易纠结的部分。我的排序原则很简单显存容量 显存带宽 浮点算力。3090 目前二手性价比最高24GB 显存350W 功耗能跑绝大多数推理任务。但它有两个让人头疼的地方一是二手市场矿卡混着卖你得会看核心温度和显存温度曲线二是原厂散热条件下显存温度偏高长时间满载最好自己换硅脂垫。这台机器有 NVLink 接口双卡 NVLink 融合显存对某些场景有帮助但实际收益不理想所以我对 NVLink 的态度一直是有就当没有。4090 性能强不少单卡 24GB但功耗墙到 450W没有 NVLink。多卡接线时 12VHPWR 接口对线材质量要求很高供电不稳容易直接黑屏。推理时 4090 的优势主要在显存带宽token 生成速度会比 3090 快一截但价格也比二手 3090 贵得多。如果你预算有限我建议先上 3090 跑通流程后面再加 4090。专业卡A6000、RTX 6000 Ada 这类48GB 显存起步适合全参数微调或者单卡跑 70B 量化模型但价格是消费卡的数倍。对于绝大多数个人和小团队先用消费卡把业务验证起来等明确需要更大单卡显存再换专业卡是比较务实的路径。混合插卡也能跑但张量并行要求所有卡规格一致混插时通常只能降低到最小显存那张卡的规格浪费大不建议。2.2 主板、CPU 与 PCIe 通道的匹配关系这一节是很多人装机时最容易翻车的地方。为什么你的主板带不动四张卡表面看槽位不够本质是 CPU 提供的 PCIe 通道数不够。主流消费级 CPU 可用 PCIe 通道大约也就 20-28 条四张卡每张走 x16 需要 64 条通道差得远。解决路径有三条。第一条直接用服务器或工作站平台比如 Xeon、Threadripper通道数多但板子和 CPU 成本高普通人不一定需要。第二条消费平台开启主板 BIOS 里的 PCIe Bifurcation把 x16 物理槽拆成 x8x8甚至 x4x4x4x4再通过转接卡扩出多个物理插槽。这是目前 DIY 多卡机器的主流做法。第三条加 PLX PCIe 交换机卡能显著扩通道但价格不低除非你卡特别多否则没必要。需要强调一点Bifurcation 支持与否要看主板说明书很多 B660/H610 板子没有这个选项。我第一台机器翻过一次车板子 BIOS 里根本找不到拆分选项最后只能换板子重装。所以选板子之前第一件事就是查 Bifurcation 支持情况。通道数量之外PCIe 链路速率也影响上限。对推理来说x8 的 PCIe 4.0 带宽约 16GB/s喂饱单卡基本够用如果只有 x4 带宽张量并行通信会明显变慢现象就是多卡跑起来速率和单卡一样甚至更差。内存也别省。大模型权重加载时CPU 内存是暂存层启动瞬间会把模型权重读进内存再拷贝到显存内存不足直接进程崩溃。建议双通道起步四卡机器直接 128GB。2.3 电源分配与 PCIe Riser 转接的细节电源是 open rig 最不能省钱的地方。我的原则是宁可多不可少宁可靠不可杂牌。先算功耗。以六张 4090 为例单卡 TGP 450W六张共 2700W主板、CPU、内存、周边风扇和外设大概再加 200W合计 2900W。电源长期负载控制在额定功率的 80% 以内比较稳妥也就是总额定功率至少在 3600W 以上。所以常见方案是两组 1600W 电源或者一组 2000W 加一组 1600W。如果预算紧用两组 1000W 加严格的电量分配也能跑但余量小电源故障概率会明显增加。接线要做好负载分区。我实际采用的方案是电源 A 负责主板、CPU 和 GPU1-3电源 B 负责 GPU4-6 和机架风扇。两路电源同时上电。这里有一个细节两个 ATX 电源要做到同步启动需要把两个电源的 PWR-ON 信号线并联或者用一个双电源启动同步器。如果不做同步副电源晚启动会导致开机瞬间某几张卡没供电轻则报警重则损伤硬件。PCIe Riser 线是另一个关键点。尽量选 x16 转 x16 的软排线带供电增强的那种插头要能锁住。Riser 供电不要从主板取直接用电源模组线供电不足的典型表现是显卡概率性不识别和负载一上来就重启。我踩过的坑是便宜 Riser 线在满载时直接烧了接头换品牌线之后到现在没出过问题。还有一个很容易忽略的点220V 市电单回路承载能力。普通墙插回路一般是 16A 空开理论最大约 3500W六卡满负载已经接近极限。如果整屋走同一个回路开空调再满载跑卡跳闸是必然的。装机前先确认配电箱至少单独给这台机器一个回路。2.4 机架结构与固定方式网上的开放式机架要么是全金属矿架要么是铝型材加 3D 打印件自己拼。我的建议是买成熟一点的成品框架注意几个关键点。卡位间距至少 40mm太密等于闷罐。开放式机架没有强制风道全靠自然对流卡间距不够的话上下两块卡互相加热显存温度很难压住。显卡安装方向尽量竖装让热气流自然向上排出。底部和顶部不要堆放杂物。机架固定方面重心高是六卡机器的通病框架底部要配重或者靠墙固定防止磕碰倾倒。金属部分做好接地一是防止静电累积二是万一漏电有个保护。电源如果直接放木地板上垫一块绝缘垫小细节但很实用。3. 装机与接线实战从裸件点亮到驱动验证3.1 装机顺序先裸奔再上架装机最大的教训就是别急着把硬件全部装到框架上。我的流程是先在桌面做裸板测试把主板、CPU、内存、电源和第一张显卡接好短接 24pin 启动电源确认 BIOS 能点亮再逐张加卡每加一张卡就用nvidia-smi验证识别。这样一旦点不亮问题范围被压到最小而不是六张卡全部装上之后手忙脚乱。裸奔测试没问题后再按框架、主板、电源、内存、Riser 线、显卡这个顺序逐层安装。装 Riser 线时先把一头插到主板 PCIe 槽另一头插到显卡并确认卡扣到位最后再锁显卡固定螺丝。线缆不要扎太紧留小半拳的活动余量后面换卡维修都会方便很多。3.2 供电线缆规划一个完整的六卡示例用六张 4090 的场景把供电规划说透。整机满载功耗 2900W 上下按 80% 负载原则电源总额定应该不低于 3600W。我的分配方式是电源 A1600W 额定主板 CPU 散热风扇约 200WGPU1 GPU2 GPU3每卡按 450W 算共 1350W合计约 1550W接近满载短时可承受。电源 B1600W 额定GPU4 GPU5 GPU6共 1350W机架排风扇约 100W合计约 1450W。每张 4090 都必须用独立模组线不能用一分二的并联线否则线材过热会烧接口。模组线插入电源端和显卡端都要听到卡扣声。电流层面再算一次220V 电压下2900W 大约是 13A 电流。普通墙插回路 16A 空开能带但如果同一回路还挂了别的电器基本就会跳闸。我实际是把机器插到空调回路或者单独拉了一路线才彻底摆脱跳闸问题。如果确实没有独立回路又必须跑满六卡降低功耗墙是最有效的兜底手段。nvidia-smi -pl 300可以把 4090 的功耗锁到 300W六卡满载总功耗降到约 2000W电流降到 9A 左右普通墙插也能扛。推理性能损失没有想象中大主要影响并发吞吐上限。3.3 第一次点亮后的检查清单开机之后不要急着装驱动挂服务先把基础状态确认一遍。进 BIOS 看 PCIe 设备列表确认所有显卡都被主板识别。有些主板默认只认部分槽位需要开启 Above 4G Decoding 和 Resizable BAR这是多卡寻址的关键选项不开的话上面的槽可能直接不可用。进系统后用nvidia-smi查看显卡列表正常应该每张卡都有温度、风扇、显存信息。我遇到过开机认五卡不认第六卡的情况排查链路是这样的先把第六卡换到已经确认能识别的槽位如果问题跟着卡走就是卡或 Riser 线的问题如果问题留在槽位就是主板或电源供电的问题。用替换法问题通常半小时内可以定位。空载状态下手摸一下每张卡的散热风扇是不是都在转温度应该在 50℃ 以内超过 60℃ 说明该卡风扇没转或者 Riser 供电异常。3.4 系统安装、驱动与容器运行时操作系统我推荐 Ubuntu 22.04 或 24.04 LTS。驱动安装建议通过 NVIDIA 官方 runfile 或者使用 Ubuntu 官方源不要盲目装最新版先确认 CUDA 版本兼容性。我之前装过一次太新的驱动导致容器内 CUDA 工具链不匹配花了半天重新排查。驱动装完不要忘了 nvidia-container-toolkit这是 Docker 能直通 GPU 的关键sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker验证命令nvidia-smi nvidia-smi topo -m lspci | grep -i nvidia nvidia-smi dmon到这里open rig 的硬件平台就算真正跑起来了下一步开始干活。4. 算力验证与模型推理部署把算力变成可用的服务4.1 多卡通信验证别被 PCIe 链路骗了多卡机器不是插上就能用先确认卡与卡之间的通信能力。nvidia-smi topo -m会输出拓扑矩阵消费级显卡之间一般没有 NVLink通信走 PCIe 交换矩阵里显示 PHB 或者 PIX 都是正常现象。想知道真实通信带宽用 nccl-tests 跑一个 all-reduce 基准./build/all_reduce_perf -b 128M -e 4G -f 2 -g 4四卡场景下吞吐如果能到几 GB/s 以上推理完全够用。如果只有几百 MB/s大概率是某张卡 PCIe 链路降到了 x1。用nvidia-smi -q -d PCI查看每张卡当前的 Link Speed 和 Link Widthx16 的物理槽因为接触不良降级成 x1 的情况我遇到过拔插重装即可解决。对模型推理来说张量并行通信也不是时刻都要满带宽只有每次生成 token 时需要聚合各卡结果所以 PCIe 4.0 x8 的链路已经能支撑 Qwen 和 LLaMA 这类模型的流畅解码。训练场景对带宽要求高得多但那是后续的话题。4.2 用 vLLM 把模型变成 OpenAI 兼容服务多卡就位后我推荐直接用 vLLM 把模型加载成服务OpenAI 兼容接口上层应用不用改代码就能接进来。一个典型的双卡 70B 量化模型启动命令docker run --gpus all \ --shm-size 32g \ -v ~/models:/models \ -p 8000:8000 \ vllm/vllm-openai \ --model /models/llama-3-70b-instruct-gptq \ --tensor-parallel-size 2 \ --max-model-len 8192 \ --gpu-memory-utilization 0.9参数含义tensor-parallel-size必须和卡数匹配gpu-memory-utilization是显存占用上限留一点余量给运行时和并发 KV Cachemax-model-len控制最大上下文长度太小浪费模型能力太大会直接显存爆掉。启动后验证接口curl http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d {model:/models/llama-3-70b-instruct-gptq,messages:[{role:user,content:你好}],max_tokens:128}能正常返回内容说明从硬件到软件栈已经完全打通。4.3 常见失败排查链路从驱动到显存到容器多卡部署大模型失败场景相对集中我经历过的几个典型问题值得展开。第一个是 vLLM 启动时报 No available memory for KV cache。表面是显存不够实际是gpu-memory-utilization设置不合理或者max-model-len太大导致预留 KV Cache 失败。先把 utilization 降到 0.85再把 max-model-len 减半多数情况能解决。第二个是张量并行模式下容器 OOM但 GPU 显存明明有剩余。这是系统内存不足。vLLM 多卡加载时每张卡都会在内存里有对应的权重映射内存小了直接整容器杀掉。解法是在docker run里把--shm-size加大到 32G同时确认物理内存本身够大。所以我在选型阶段反复强调内存 128GB 起步就是为这个场景准备的。第三个是nvidia-smi能看到卡但 Docker 内报 could not select device。几乎都是 nvidia-container-toolkit 没配置好或者驱动版本和容器 CUDA 版本不匹配。按前面 3.4 的步骤重新配置 runtime并重启 docker 服务问题立刻消失。第四个是推理速度极慢。先用nvidia-smi dmon看 GPU 利用率利用率低说明瓶颈在 CPU 数据处理或者模型权重加载利用率 100% 但 token 速率上不去往往是显存带宽瓶颈。这个现象在 3090 上比 4090 明显换卡或者压缩模型精度都能改善。这些排查链路本质上是同一件事先确认硬件层通了再确认驱动层通了再确认容器层通了最后才调模型参数。一旦按这个顺序走很少遇到真正无解的玄学问题。4.4 长时间运行的监控与维护机器一旦开始挂服务人就不能完全撒手。我的日常监控靠nvidia-smi轮询就够了nvidia-smi --query-gputimestamp,temperature.gpu,utilization.gpu,power.draw,clocks.sm --formatcsv -l 5另外写一个简单的 Python 脚本每 30 秒采样一次温度超过 88℃ 就发 webhook 告警。不用多复杂的系统脚本能跑两年不漏告警就是合格的监控。5. 稳定性、噪音和电费的现实问题开放式机架的长期考验5.1 散热与防尘开放机架最大的敌人不是温度开放式机架的散热逻辑完全不同。GPU 风扇直接从四周自然空间吸入空气热流向上排出只要卡间距足够室温 25℃ 时满载显存温度绝大部分时候能压在 96℃ 以下4090 甚至经常能稳在 88℃ 附近。温度问题反而比装进闷罐机箱更容易控制。真正的敌人是灰尘。开放式框架没有防尘网运行两周后散热鳍片就能看到积灰。我的处理办法是给机架进风面加装可拆卸的初效滤棉两到三周用气吹清理一次风扇和散热鳍片用软毛刷配合小功率吸尘器处理。风扇策略上我习惯把 GPU 风扇锁定在一个固定转速范围nvidia-smi -lgc 1500,2100可以限制 SM 频率区间间接让风扇转速更稳定。自动变速会导致风扇忽快忽慢的共振噪音锁频之后安静不少。噪音是客观存在的六卡满载时的声压不适合和人在同一个房间工作。我的做法是设备单独放储物间加装一个排风扇把热风抽到窗外人在隔壁远程操作互不干扰。5.2 电力成本一笔必须提前算清的钱电费是很多人决定搭 open rig 之前没算过的账。以六张 4090 满载 2800W 为例每天跑 8 小时电价按 1 元/kWh 计算一个月就是 2800×8×30/1000 672 元如果 7×24 小时满载跑一个月超过 2000 元一年就是两万多。这不是小数字。省钱策略有三个方向。第一错峰运行。峰谷电价地区把批量推理任务调度到夜间成本直接减半。第二设定功耗墙。nvidia-smi -pl 300让每张卡少跑 150W六卡能省下接近 1kW 的用电量推理吞吐损失不明显但电费下降明显。第三空闲自动降载。用脚本监测 GPU 利用率持续低于阈值时把大模型服务收缩到单卡其余卡进入低功耗状态。5.3 远程管理与自动化运维机器放在独立房间后远程管理就是日常。我的基础配置是 SSH 密钥登录关闭密码认证非必要端口全部不对外开放。断电解法靠的是主板 AC Recovery 功能。把 BIOS 里的来电自启打开再配一个智能插座远程切断电源后重新上电机器会自动开机这是最粗暴也最有效的硬重启方案。训练任务跑起来之后日志轮转要提前配好否则长任务两三天后磁盘被日志写满模型没练完机器先挂了。剧本脚本每天清理超过七天的日志文件属于成本最低的保命措施。装完这套 open rig再回头看我当初选它的理由省下来的不仅是硬件预算更重要的是出了问题能自己动手解决。第一次点亮时 BIOS 认不出第六张卡我用了大概半小时定位到 Riser 线换线重插后一切恢复正常。这种做法的底气就是开放式的架构所有部件裸露在外万用表一量、替换法一试故障点就现身了。如果换成品牌整机大概率要送修等零件。真心话是搭 open rig 不是图好看图的是运行的确定性计算资源的每一瓦都放在明面上出了问题也能一眼看到。如果你是第一次搭多卡机器我建议先用二手 3090 练手成本可控踩完一圈坑之后再决定要不要升级这个试错成本远低于闭眼冲全新 4090。我在实际操作中最大的体会是电源和线材绝对不能省其它配件都有替换空间而供电质量直接决定了整机能不能长期稳定跑。这句话放在最后算是我对想入坑的朋友最真诚的一句忠告。
返回列表