
搞AI这一年多我踩过最大的坑不是模型调参而是把多张显卡组织成一台能干活、不闹脾气的机器。单卡跑大模型显存就是个透明天花板想上70B以上的模型要么租云上几万块一张的卡要么自己拼一台多卡机器。我最终选的方案就是自己搭一台开源开放式多卡工作站也就是圈里常说的openrig方案——不靠量产整机自己选配件、自己排供电、自己调散热把一堆消费级和准专业级硬件拼成一台能跑推理、能微调的算力机。这篇文章就把我这套openrig的完整设计与实操过程整理出来包括为什么这么选、每个零件的参数怎么定、装机过程中哪些细节能让你少走大弯路以及我把整机跑起来后遇到的最典型的几类问题。这套方案适合谁如果你手里有两到四张卡想本地跑跑LLM推理、做做微调实验又不想花几万块去买成套的服务器或者你是个AI方向的学生、独立开发者、小团队运维需要在本地有一台相对安静、且灵活好扩展的算力设备那这套openrig的设计思路和踩坑记录应该能给你省下很多探测时间。1. 整体设计与思路拆解为什么是openrig而非整机服务器1.1 单卡瓶颈显存、带宽与散热三重夹击我一开始也是老老实实用一台普通台式机插一张RTX 409024GB显存看着不小但当你真的去跑一个Qwen等规模的模型时量化后随便一个7B模型就吃掉5到6GB加上上下文窗口、KV cache稍微把max length拉长一点显存直接见底。换成70B的量化模型单卡只能把模型放进去但推理速度惨不忍睹batch稍微大一点就开始OOM。有人会说那就租云嘛。但长期做实验的人都知道GPU云主机在高峰期排队、数据上传带宽、以及按小时计费的心理压力叠加起来短期内也许便宜跑一次长时间微调实验的成本非常不稳定。自家有设备的好处是随便折腾显存不够就堆卡卡不够就加机器。真正让我转向多卡并联方案的是NVLink和PCIe带宽带来的现实收益。现代大模型推理框架比如vLLM、TensorRT-LLM都支持张量并行简单说就是把一层计算切到多张卡上。两张卡之间需要高频交换中间激活值如果走PCIe 4.0 x16实测单方向带宽大约32GB/s比NVLink的600GB/s差了一个数量级。所以硬件方案上优先把同一机箱内卡间互联带宽做足这是openrig能拉开和普通堆卡机差距的核心。1.2 整机服务器PK自组openrig我也认真对比过购买二手整机服务器或者准系统工作站比如拆解某品牌的4U GPU服务器支持4卡双宽GPU看起来省事但真正拿到手你会发现几个问题第一工业服务器风扇全速运行时噪音非常夸张放在办公环境里完全没法接受必须另外配隔音机房第二很多二手准系统的主板是专有规格扩展槽位、电源接口非标准后续维护和升级麻烦第三整机厂商对新款GPU的支持往往滞后你要自己刷BIOS、魔改散热反而比从零DIY更费劲。而openrig思路是把机架式服务器的核心优点——开放扩展、集中散热、模块化供电——移植到开放式机架里所有配件走标准件路线。你可以理解为服务器是把所有东西装进一个黑箱里而openrig是把黑箱拆成几层金属框架把GPU卡像书架一样排开风道完全开放供电系统自己拉线。好处是散热效率极高坏处是防尘和噪音需要自己控制但这在实际使用中完全可以通过定期清灰和选择低转速大风量风扇来平衡。1.3 整体架构规划一张图想清楚所有环节在设计openrig之前我先列了核心约束条件支持4至8张双宽GPU卡同时保留将来扩展的余量风道走前后贯通方向所有风扇单侧出风供电能力冗余不低于整体峰值功耗的120%卡间互联优先支持NVLink至少也要保证全速PCIe通道互不抢带宽系统内存不低于16GB建议32GB起步因为CPU要承担数据预处理和推理调度任务所有零件能在常见电商渠道买到不依赖特殊厂商渠道这个架构规划直接决定了我选的平台。CPU方面消费级酷睿这代产品PCIe通道数量只有20条左右如果想要两张卡跑全速x16加上系统盘和网卡通道数就非常紧张所以我直接选定了支持多通道的工作站级平台。当时看了两个方向AMD TRX系列平台和英特尔W系列平台两者都能提供足够数量PCIe通道其中AMD线程撕裂者Pro更是把通道数给到了96条以上对应多卡扩展最从容。实际装机时我只用了4条PCIe插槽其中GPU占用4条x16、网卡1条x8、存储用M.2直连CPU这样通道分配宽裕不打架。软件层面同样重要。操作系统选了Ubuntu Server LTS容器方案用了Docker集群调度暂时不上Kubernetes因为单机多卡阶段docker compose配合自写脚本管理服务已经够了。有人喜欢一上来就全套K8s我个人的建议是先别折腾AI训练推理对网络和存储的要求极高单机先跑通了再谈横向扩展否则你会在排查基础设施问题中消耗大量精力。2. 核心细节解析与实操要点供电、散热与线缆全规划2.1 供电方案先算总功耗再决定电源数量从GPU规格说起。像RTX 4090这样双宽卡标准功耗是450W瞬时峰值可能冲到600W左右。如果我们插四张卡光GPU就按2400W保守估算。加上CPU这台工作站CPU满载功耗可能到280W还有主板、内存、风扇、硬盘大约100W。整机峰值就是2780W左右这还没算启动瞬间的浪涌电流和显卡驱动重置时的尖峰。市售单电源常见功率在1600W以内再往上就是大功率服务器电源了噪音和价格都不适合桌面环境。所以我直接采用双电源方案——两个1600W电源并联供电。这里有个重要细节不是简单买两个ATX电源插上就完事你要有一根双电源启动同步线让两个电源同时启动、同时输出。我用的是一块双PSU启动适配板它会向两个电源的PS_ON信号同时发送低电平触发信号避免单电源先启动导致负载分配不均。接线规格上每张450W的显卡需要至少两个8Pin PCIe供电接头最好用原生12VHPWR线缆别用转接线因为转接线在长时间高负载下温升非常明显。实际走线时把四张卡的供电线分成两组分别接在两个电源上同时确保每路12V输出不超载。比如A电源负责CPU主板的24Pin和CPU辅助供电以及GPU1和GPU2各一根供电线B电源负责GPU3、GPU4供电线和所有SATA/周边这样均衡一些。2.2 散热风道与机架布局开放机架的优势是我没想到的一开始我担心开放式机架会不会落灰严重实际用了快半年只要房间不是土建施工现场灰尘量完全可控定期一个月吹一次即可。更关键的是散热效果。封闭机箱里GPU背对背安装热风排出路径不畅显卡温度容易卡在82度降频线以下一段时间然后强制降频。开放机架把每张卡的进风和出风区域都暴露在环境中配合机架后侧挂一排12cm风扇形成负压抽风温度表现非常好看。具体的布局是机架共4层底层放电源模块第二层放主板第三层和第四层放GPU卡。GPU通过PCIe延长线连接到主板的x16插槽上这样显卡就不受机箱体积限制可以每张卡间隔一个卡位安装让卡与卡之间有充足气流通道。我实测四张卡在室温26度的房间、满载跑大模型推理时GPU温度稳定在65到72度之间热点温度在80度左右比装到传统机箱里低了接近10度。风扇选型上我踩过坑。一开始用了普通机箱风扇转速拉满但风压不够根本吹不透GPU散热器。后来换了支持PWM调速的工业级双滚珠风扇单把风量能达到150CFM以上转速在1600转/分时噪音还能接受温度表现立竿见影。如果觉得风噪太大还可以在机架外面包一圈吸音棉但注意进风口和出风口坚决不能堵。2.3 PCIe延长线与NVLink桥接最容易被忽视的稳定性细节开放式机架里GPU不可能直接插在主板上PCIe延长线成了必经之路。这里我强烈建议买带屏蔽层的PCIe 4.0延长线那种几块钱一根的裸线在PCIe 4.0高速信号下非常容易出现降速或者不稳定掉卡问题。我最初为了省钱用了两根普通延长线结果一张卡始终跑在PCIe 3.0模式且偶尔掉卡排查了主板设置、驱动版本最后才发现是延长线信号质量太差。换上带屏蔽后的线缆后一次性解决问题。PCIe 4.0高速信号的靠谱传输上限约在30cm左右所以机架布局要尽量让主板插槽和显卡安装位置距离短。如果你布了一个超长走线方案很可能要接受PCIe 3.0的降级运行。实测表明PCIe 3.0 x16跑纯推理场景影响不大但张量并行通信会有可感知的延迟所以优先保持PCIe 4.0。NVLink桥接器这块同样有讲究。NVLink可以让两张卡之间共享显存或者更准确地说以极高带宽进行内存池化。如果你跑大模型的张量并行两张卡之间隔一层NVLink通信开销会显著降低。但NVLink桥接器只支持相邻槽位的两张卡且桥接带宽受桥接器版本影响。我的四卡方案是两两一组用NVLink组成两个对再用PCIe交换机或CPU通道跨组通信。实际表现比全NVLink四卡环要弱一些但成本便宜得多也足够跑绝大多数开源模型。2.4 网络与存储规划别让数据搬运拖后腿很多人搭AI工作站只顾着算力容易把存储和网络放到次要位置。实际用下来模型权重文件动辄几十GB如果内网传输速度只有千兆光是传一个70B模型就要等上小十分钟本地调试开发体验极差。所以我的openrig在网络这块规划了两张网卡板载万兆电口主要承载日常局域网传输另外加了一张25G光纤网卡直连开发机和存储服务器。如果你没有高速存储服务器至少也要在机器内放一块大容量NVMe SSD组RAID或者直接单盘跑模型读权重文件的速度是推理启动时间的关键。存储容量方面建议至少4TB起步。我放了一块8TB的企业级NVMe SSD和一个16TB机械仓库盘。模型文件和数据集都放NVMe上实测加载一个7B模型只要几秒加载70B量化模型也就一分钟不到。机械盘主要充当冷备份定期把训练日志和数据checkpoint转储过去。3. 实操过程与核心环节实现从装机到部署全流程记录3.1 配件清单与选型心得这里给出我当时实际使用的核心配件做一个参考表格不代表唯一答案但大多数组合在兼容性上游刃有余。部件具体型号/规格关键参数备注入手理由机架4层开放式服务器机架深度60cm支持4卡位、前后风扇架开放风道、安装灵活主板工作站级WRX80E支持4路PCIe 4.0 x16多条M.2专为多卡设计通道充足CPU线程撕裂者Pro 3955WX16核32线程PCIe通道128条多卡平台不二之选内存DDR4 ECC 3200 16GB x8128GB总容量UV内存大模型KV缓存才不慌GPURTX 4090 24GB x4双宽、NVLink支持性耗比与生态平衡点系统盘2TB NVMe SSDPCIe 4.0读速7000MB/s系统和docker镜像都放这里数据盘8TB企业级NVMe SSD读速6500MB/s模型权重与数据集集中存储电源1600W白金ATX电源 x2双PSU同步启动总供电冗余充足风扇14cm工业风扇 x6PWM、150CFM机架后侧抽风网络25G光纤网卡 万兆电口SFP28 / 10GBase-T数据搬运不卡脖子先说一下CPU选择。有人觉得AI工作主要靠GPUCPU差不多就行。但多卡推理和多卡训练场景下CPU要负责数据加载、预处理、算子调度、Docker容器开销等任务核心数量太少吃紧。线程撕裂者Pro系列在性价比上确实不便宜但胜在PCIe通道多这点对多卡机来说就是命根子。如果不那么追求极致上一代撕裂者或者至强W系列也可以前提是把PCIe通道数确认清楚。内存容量很多人低估了。以70B量化模型推理为例模型权重大约40到50GB跑起来KV cache又可能吃掉10GB以上再加上系统开销和Docker映射128GB内存运行起来刚好宽裕。如果同时跑微调建议直接上256GB因为CPU内存还要承担训练数据的预取和样本缓冲。3.2 装机走线与开机测试给新手的完整顺序装机顺序上我的建议是先把电源、主板、CPU、内存、系统盘装成一个最小系统插一张显卡在机架原有位置上通电点亮并安装好操作系统然后再逐步加入其他显卡和扩展卡。这样做的好处是遇到问题容易定位不至于一上来四张卡全都插上去结果系统点不亮就直接抓瞎。最小系统搭建完成之后进BIOS完成几项关键设置开启Above 4G Decoding现在可能叫Re-Size BAR Support开启PCIe链路速度强制为Gen4把超线程和Turbo Boost策略设为Auto即可不必手动极限超频内存频率按标称XMP/EXPO设定多通道交叉安装确保对称然后安装Ubuntu Server 24.04 LTS磁盘分区时建议给根分区分配200GB以上空间Docker默认存储位置也放到大容量数据盘上不然系统盘容易被镜像日志塞满。驱动与CUDA环境我强烈建议用NVIDIA官方CUDA仓库来装避免从官网手动下载runfile后与系统自带驱动冲突。参考命令如下# 添加NVIDIA官方CUDA软件源 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update sudo apt -y install cuda-toolkit-12-4 # 重启后验证 nvidia-smi正常情况下nvidia-smi会列出所有四张卡。如果只看到部分卡先不要慌多半是PCIe延长线接触不良或者电源线没插到位重新拔插加紧固就好了。Docker方案上我推荐使用NVIDIA Container Toolkit这样容器内可以直接透传GPU能力。安装完成后启动一个测试容器sudo apt -y install nvidia-container-toolkit sudo systemctl restart docker docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi看到四张卡都出现在容器内的nvidia-smi输出后硬件环境就可以算通过验证了。3.3 部署大模型推理服务vLLM容器化全流程算力底座就绪接下来我直接部署vLLM推理服务作为核心应用。之所以选vLLM是因为它在高吞吐推理方面做得足够出色对多卡张量并行支持更成熟。这里以Qwen2.5-72B-Instruct-GPTQ-Int4模型为例四张卡刚好跑得动。先拉取镜像并准备模型目录mkdir -p /data/models cd /data/models # 用huggingface-cli或模型站点的工具下载对应模型文件 huggingface-cli download Qwen/Qwen2.5-72B-Instruct-GPTQ-Int4 --local-dir /data/models/qwen72b-gptq-int4然后写一个docker-compose.yml文件services: vllm: image: vllm/vllm-openai:latest container_name: vllm_qwen72b runtime: nvidia environment: - HUGGINGFACE_HUB_CACHE/data/models command: --model /data/models/qwen72b-gptq-int4 --served-model-name qwen72b --tensor-parallel-size 4 --gpu-memory-utilization 0.92 --max-model-len 32768 --host 0.0.0.0 --port 8000 ports: - 8000:8000 volumes: - /data/models:/data/models shm_size: 16g几个关键参数值得展开说。--tensor-parallel-size 4就是四卡张量并行意味着模型权重会按张量维度切分到四张卡上每张卡负责一部分计算同时通过NVLink和PCIe交换中间结果。--gpu-memory-utilization 0.92表示把每张卡92%的显存都给模型和KV cache余量留给计算图。这个值不建议设到0.95以上因为CUDA上下文和深度学习框架的碎片化显存需求会造成OOM。--max-model-len 32768要根据显存和显存占用微调太长会挤占KV cache导致实际可用并发变低。启动服务后用curl验证一下curl http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d {model: qwen72b, messages: [{role: user, content: 你好}], max_tokens: 256}第一次请求需要加载模型可能在十几秒到几十秒之间。之后理论上应该回到几十毫秒到几百毫秒的生成间隔。如果响应时间异常缓慢查看日志常见问题要么是模型分片不均匀要么是显存利用率和max length设置冲突。3.4 推理性能实测并发、吞吐与延时数据服务跑起来后我用自己的压测脚本简单打了一下吞吐。从结果来看四卡张量并行跑72B模型在并发32、输入输出长度各512token时吞吐可以稳定在1200到1500 token/s左右单请求首token延迟大约300到500ms。这个成绩对本地推理来说已经是可用水平比单卡跑同模型强得多。如果只跑7B或13B级别的小模型四卡方案显得大材小用直接把tensor-parallel-size设为1或者2同时把并发调高反而可以获得更高的资源利用率。甚至可以把同一台机器切成多个服务一张卡跑7B模型服务、三张卡跑大模型服务通过不同容器端口暴露API这也是openrig灵活性的体现。4. 常见问题与排查技巧实录开机、掉卡、降速与散热4.1 机器无法点亮从最小系统开始逐层排查很多人在装机过程中遇到点不亮的问题会直接怀疑主板坏了其实90%的情况出在内存、供电或者插卡顺序上。这里我整理了一份排查顺序首先只保留CPU、单根内存、核显或亮机卡拔掉所有扩展卡和其他内存短接开机针脚。能点亮说明主板和电源没问题接下来一根一根加内存每加一根都要确认识别。内存都OK后再插显卡这个阶段如果黑屏先看显卡供电线是否插紧再看PCIe插槽是否到位最后再怀疑主板BIOS设置。关于内存插法有个细节像WRX80这种8通道主板内存条必须按CPU内置的通道规则分布不能随便插满就完事。插错通道就算内存容量识别正确访问带宽也会变成单通道性能差一大截。正确做法是按照主板说明书里的推荐顺序比如从靠近CPU的第二、第四、第六、第八根插槽开始对称安装。4.2 系统内只能识别部分GPU的排查实录有一次我把第四张卡插上后系统死活只识别三张卡。检查顺序是先跑lspci | grep NVIDIA看PCIe总线上全不全几张卡如果PCIe能识别但nvidia-smi看不到多为驱动问题重新安装驱动即可如果PCIe层面都缺卡优先级最高的是供电线、延长线接触、插槽物理连接确认卡是否需要额外供电。部分双宽卡的辅助供电接口多达两个甚至三个少插一个会直接导致系统不认卡我那次的问题其实很蠢——电源线标着PCIe 8Pin和CPU 8Pin长得一模一样但线序不同不能混插。有一根线插反了之后虽然卡上的辅助供电指示灯没亮但系统就是检测不完整。换成对应线缆立刻解决。4.3 多卡通信速度不达预期的分析思路如果你跑多卡并行时发现吞吐提升远小于卡数增加首先得怀疑卡间通信协议没有正常工作。最简单的验证方式是用nvidia-smi topo -m查看卡间通信拓扑它会把GPU两两之间的互联方式打印出来。如果是NVLink显示NV#编号如果走PCIe显示PHB或PIX。正常配置下NVLink连着的两张卡通信延迟最低、带宽最高。实测中我发现一个问题在BIOS里启用了Above 4G Decoding后如果PCIe交换机把多张卡挂到同一个Root Port下跨Root Port通信会走系统内部互联速度反而不如预期。解决办法是手工调整插槽优先顺序让有NVLink的卡对尽量占在同一个CPU Root Complex下面。同时确认主板BIOS已开启PCIe ARI和SR-IOV相关选项这两个设置对多卡同时工作的稳定性影响很大。4.4 散热噪声与长期稳定性的经验开放式机架最大问题是声音和防尘。满速运行时六把工业风扇的噪音大约在55分贝左右放在书房会觉得吵。我的做法是接一个PWM温控器把风扇策略设置为根据显卡温度自动调速日常待机时转速压低到800转/分基本无感高负载时自动拉到1200到1500转温度控制在可接受范围。不要直接满载3000转那个声音真的能劝退所有人。防尘方面定期清理是一个方面更重要的是在机架进风侧加一层可水洗的防尘网。我用的磁吸式防尘网每两周拆下来冲一下内部基本没有积灰。再就是湿度控制南方回南天的话建议机架周围放个除湿机不然显卡PCB和电源裸在外面受潮容易出问题。提醒开放机架虽然散热好但对摆放环境有一定要求。不要让机架紧贴墙壁至少留出10到15厘米的后排风空间否则出风受阻温度会显著上升。4.5 各类问题速查表现象可能原因解决方案系统点不亮内存未插好或通道不对最小系统逐根排查按主板通道顺序安装只能识别部分卡供电线未插全或插错确认所有8Pin/12VHPWR接口核对线序nvidia-smi显示错误码43驱动版本与CUDA不匹配升级到NVIDIA官方推荐版本并禁用Nouveau卡间通信走PCIe而非NVLink插槽位置不对或桥接器未装好调整卡位重新安装NVLink桥接器GPU温度过高风扇策略太温柔或风道受阻调整PWM温度曲线清理进出风口推理速度提升不明显tensor parallel设置偏大或模型太小观察nvidia-smi利用率调整并行度Docker容器内看不到GPUNvidia Container Toolkit未正确安装重装toolkit并重启docker服务我个人体会最深的一点是openrig这种方案的真正价值不在某个牛掰的硬件单品而在于当你理解了算力机的底层架构后可以根据自己的实际需求快速调整配置想加卡加卡想换平台换平台不会被封闭生态绑定。现在这台四卡机跑了两个多月除了定期清灰和维护几乎没有因为硬件问题重启过。如果你也准备搭一台自己的AI工作站欢迎参考这套思路从确定核心需求和用量计费开始一步一步来不要一上来就追求八卡满配先把两卡跑通再逐步加码这才是最稳的路线。