ARTICLE DETAIL

资讯详情

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

openrig开源硬件框架:多显卡DIY算力平台的搭建与散热供电实战

openrig开源硬件框架:多显卡DIY算力平台的搭建与散热供电实战 “openrig”这个词拆开看就是 open rigrig 在国外硬件圈子里很常见意思是“架子、设备组、工装组合体”。我最早是在逛 GitHub 的时候刷到这类项目的当时心里一个念头就是这不就是我一直想要的“裸体显卡之家”吗。如果你家里也堆着三四张显卡或者你正琢磨着搭建一套自己的算力设备、渲染工作站那这篇文章应该能帮上忙。简单来说openrig 解决的是三个实际问题机箱装不下、散热跟不上、电源接口不够用。它把显卡、电源、控制板这些组件从传统机箱里解放出来装到一个开放式的框架上再配上监控和供电管理形成一套很适合DIY的开源硬件方案。这篇内容我打算这么展开先帮你把整个 openrig 的核心设计思路捋清楚再做系统层面的拆解然后记录一套我自己实操过的装配流程最后整理几个常见问题与排查经验。写这些东西不是为了堆参数而是因为我确实踩过不少坑供电线烧过、风扇风道没走对导致显卡降频、控制板固件刷坏了又重新编译……这些都经历过。希望你想动手的时候能少走这些弯路。1. 项目定位openrig 到底是什么解决什么问题1.1 从“装进机箱”到“直接把硬件摊开”传统塔式机箱的逻辑是“把所有零件封装进一个带颜值的外壳里”但这套逻辑在显卡数量变多之后会越来越别扭。首先是尺寸问题现在中高端显卡动不动就是三风扇、三百多毫米长你一装就是三四张普通机箱根本没有那么多PCIe插槽位更不用说供电走线和散热风道。其次是散热问题多张显卡贴在一起热风互相串扰温度比单卡场景高出一大截哪怕机箱里装了一堆风扇效率也不高。为什么一定要强调“开放式”这里有一个很直观的工程逻辑如果散热器直接暴露在空气中风道就不需要经过机箱外壳气流可以从四面八方进来。openrig 的思路就是拿一个金属框架把主板、电源、显卡像“摊煎饼”一样水平或垂直展开每一张卡之间留出足够的间隙。这样风道短、阻力小、热量散得快而且你要拔个卡、调个线都不需要关机箱开侧板手伸进去就能操作。我自己第一次搭的时候还有点担心“裸露会不会不安全”后来发现只要固定得住、接线规范开放式结构反而比闷罐机箱更可控。因为你一眼就能看到所有部件状态哪个风扇不转、哪根线松了、哪里积灰都清清楚楚。这种“可视化”本身就是一种运维价值。1.2 openrig 的核心特性与开源生态openrig 并不是某一个公司出的商品机而是一个由社区驱动、以“开源设计文件 固件代码 硬件清单”组合起来的知识库类项目。通常你在 GitHub 上能找到它的 3D 建模文件一般是 STEP 或 STL 格式也有对应的接线图、元器件清单BOM和控制板固件。你完全可以按照文档自己采购铝型材、打印结构件、焊接控制板。这背后有一个很关键的理念硬件领域的“开源”不只是把图纸发出来而是支持你按自己的实际需求去改。装三张卡是一种结构装六张卡可以拉长型材用 ATX 电源可以用服务器电源也可以。它不是固定死的一个产品而是一套方案模板。对不同的使用者openrig 的用途也可以灵活理解对AI推理或图形渲染的玩家来说它是一台可随时加卡的算力扩展平台对硬件DIY爱好者来说它是一套结构、散热、供电的综合练手项目对家里有多余显卡想二次利用的人来说它比重新买一台整机划算得多。1.3 适用场景与读者画像openrig 这类方案不是给所有人准备的。如果你只需一张显卡打游戏那普通机箱完全够用没必要折腾开放式框架。但如果你是下面这几类人它确实值得研究你已经有两张以上显卡且因为主板插槽位置和机箱空间问题放不下你需要长时间跑显卡负载比如做渲染、训练模型、跑分布式计算任务你手头有旧电源、旧主板、旧显卡想低成本拼一台高密度算力设备你对开源硬件感兴趣想拿一个真实项目来实践 CAD、3D 打印、固件开发甚至 PCB 设计。这几类人群在实操中往往有几个共同的隐性需求希望整机容易维护、希望温度可控、希望供电稳定、希望成本尽量低。openrig 在解决这些问题上确实比商业产品灵活但前提是你得愿意动手。我也见过不少人买齐螺栓之后因为没耐心调“型材水平”而中途放弃——这东西考验的其实就是手和脑。2. 总体架构拆分结构、供电、散热、控制四大子系统2.1 结构设计料件选择与组装思路openrig 最核心的结构件通常是铝型材。这玩意儿在工业自动化领域用了五六十年了可靠、强度高、易切割又有各种现成的角件、T型螺母和螺栓连接方案。常见的规格是欧标 4040 铝型材也就是截面 40mm x 40mm如果只是搭一个负载较轻的框架2020 或 3030 也能用但考虑到要挂电源、显卡托架和控制板我个人推荐主框架用 4040横向支撑用 3030 就够了。选铝型材的好处是“容错率高”。装错了可以拆掉重新拼切短了可以换个连接件弥补不像焊接框架一样一步定型。而且整个机架的尺寸可以根据显卡长度自行调整。比如一张长 340mm 的显卡你框架横向跨度至少要留到 400mm 左右才能让供电接头、散热鳍片和固定托架都有余量。这里有一个容易忽略的点“显卡长度”不是你唯一要量的尺寸——PCIe 延长线或者显卡背板还可能会突出一点粗装测量时最好拿卡实际摆一下。组装顺序也有讲究。我的习惯是先搭底座和侧立柱但不要把螺栓完全锁紧把所有结构件都拼到位之后再整体校正水平和垂直度最后统一用扭矩螺丝刀锁紧。如果一开始就把单个角件拧到死后面装横梁的时候会发现孔位对不上只能全部松开重来。这算是结构装配经验里最实用的一条。2.2 供电链路从电源到显卡的完整回路供电是 openrig 这类设备里最容易出问题、也最需要预先计算的部分。单张显卡的峰值功耗经常被大家低估。比如某些高性能显卡满载能到 300W 以上瞬间峰值可能再高出 20% 到 30%。那么你装 6 张卡的时候理论上就要预留 6 x 300W 1800W 的显卡供电能力再加上主板、CPU、风扇、控制板这些组件整机功耗很容易超过 2000W。供电链路应该从源头就留好余量而不是等电闸跳了再换电源。选电源时有两条路可走一是用普通 ATX 电源二是用服务器电源比如常见的 750W 或 1200W 电源模块。ATX 电源接线简单、接口标准还有一个好处是自带各种保护电路适合新手。但大功率 ATX 电源价格偏高而且体积比较大。服务器电源功率密度高、便宜但噪音通常比较感人输出接口也需要自己转接。如果你预算有限又有一点动手能力可以考虑“服务器电源 转接板”的组合。“转接板”是用来把服务器电源的金手指接口转成普通的 PCIe 62pin、SATA 或者 12V 输出的板子网上很常见。一组关键建议所有供电线材选择 18AWG 或更粗规格的线细线在长时间高电流下会发热PCIe 供电插头要插到底听到卡扣“咔哒”声才算到位不要把太多显卡堆在一个电源上的同一路输出尽量分散负载建议在总输入端加一个断路器或保险管价格不贵风险减半。另外如果主板需要接多张显卡建议用 PCIe 转接卡竖装支架套件或者线缆延长不要硬把显卡物理压在主板上。转接线的质量不能省屏蔽差的数据线在长时间高负载下可能出现信号不稳定具体表现是你跑着跑着某张卡就掉了。2.3 散热与风道不只是加风扇那么简单很多人觉得开放框架就是“裸着散热根本不需要风扇”这是最大的认知误区。显卡散热器是朝下或者侧向放置的时候如果周围没有空气流动热量就会在当地堆积自带风扇会把热风吹到邻近的板卡上形成热岛。openrig 的开放性解决的是“风道阻力”问题不是“热交换”问题。也就是说你依然需要风扇只是风扇效率比机箱内高得多而已。风道设计有一些基本逻辑可以参考进风要靠近显卡风扇侧出风要和热量聚集区形成对流。一组常见的布局方式是框架一侧安装一排 120mm 或 140mm 风扇向机架内部送风另一侧自然排出如果空间允许也可以在显卡背板上方加装一排抽风风扇。注意不要形成“两个风扇对着吹”的局面那不是加强散热而是两股气流打架。风扇选型上我一般首选 4pin PWM 风扇配合主板或控制板调速。三针风扇价格便宜但不能根据温度自动调速噪音会比较烦人。风量和静压是两个指标开放式框架下侧重风量外送风为主穿甲弹式的集中通道才侧重静压。一个简单的经验值——在常规环境温度下600W 的发热量大概需要 120CFM 级别的基础风量可以通过两三个 120mm 高速风扇获得然后根据实测温度上下调整。还有一个容易踩的坑显卡如果竖装也就是 I/O 挡板朝上PCB 和地面垂直散热器热管的走向会和水平安装时不同在某些型号上确实会损失一点散热效率。解决办法很简单买卡之前看一眼热管走向或者在装好之后跑一次烤机测试温度比水平安装高 5℃ 以内基本可以接受超过 10℃ 就要考虑改横装。2.4 控制与监控让机架自己“开口说话”openrig 区别于“一个破架子”的地方是它可以被赋予简单的“智能监控”能力。通常会用一块 ESP32、Arduino 或树莓派 Pico 作为控制板接上温湿度传感器比如 DHT22、DS18B20、电压电流模块和风扇驱动模块然后通过串口或者 WiFi 把数据发到本地网页或者 MQTT。这样你不需要蹲在机器旁边看温度计打开手机就能知道每张卡附近的温度变化。我自己一般不会让控制板直接参与主供电因为涉及高压大电流的开关控制安全复杂度会上升不少。控制板更适合干三件事采集传感器数据、控制风扇转速、异常时推送告警。比如在固件里写一个简单的温差判断逻辑如果框架顶部温度比环境温度高 15℃ 以上风扇转速直接拉满。这就是个很实用的“土法恒温器”。如果你懂一点嵌入式编程甚至还能用单片机根据显卡负载自动调整风扇策略。比如从系统读取 GPU 温度数据通过串口转发给控制板再控制风扇PWM。这个功能不需要很复杂的算法一个简单的比例映射就能做得不错。openrig 的魅力正在于此硬件的上限是固定的但控制逻辑可以一直改你有多少想法它就能变得多“聪明”。3. 实操记录从零件到跑起来3.1 物料清单与采购建议这里给出一份我实际装配过程中用到的物料清单按“结构 / 供电 / 散热 / 控制”四类来列方便你按图索骥。不过这只是参考不用完全照抄——不同框架尺寸、不同显卡布局具体数量肯定会变。类别物料项数量备注结构4040 铝型材长度按设计裁切6-10 根主框架立柱与横梁结构3030 铝型材4 根辅助支撑、传感器支架结构角件 / 内六角螺栓 / T型螺母1 套连接与固定建议多备供电ATX 电源 1200W 或服务器电源组合1-2 个根据显卡总功耗预算供电PCIe 转接线 / 显卡竖装延长线同显卡数选屏蔽好的品牌散热120mm PWM 风扇4-6 个高速型可测转速散热风扇防尘网若干有效降低积灰速度控制ESP32 开发板1 块带 WiFi方便远程看数据控制DS18B20 温度探头3-4 个防水型测温更稳控制风扇 PWM 驱动模块1-2 个别把多个风扇直接挂 GPIO其他线材 / 扎带 / 绝缘胶带若干整理供电与信号线采购建议上铝型材可以在本地或电商平台上按裁切长度购买一般商家支持定制长度切割。螺丝角件买型材店配套的就好但注意欧标和国标的规格差异别买错型号。电源我个人的建议是如果整机功耗在 1500W 以内一个好一点的 1600W 大牌 ATX 电源省事又安全如果超过 2000W那就考虑双电源方案或者服务器电源矩阵。显卡延长线这个钱不要省买便宜的延长线一旦出现信号不稳定你排查起来会崩溃。3.2 装机步骤与线材整理下面是我实际装配的一套顺序每一步都有它存在的理由先把 4040 铝型材按设计长度切割好端面毛刺打磨干净。型材切歪了会导致框架垂直度出问题所以这一步宁可切长一点后续再用角件调整。用角件将底座框架拼装起来此时所有螺栓只用手拧到七成紧保证后续可以微调。锁好侧立柱和顶部横梁形成完整的框架。这时候用水平尺校正底座如果歪了松左下角或右前角对应的螺栓垫上薄垫片再锁紧。固定主板托盘。很多 openrig 设计会有一个亚克力或金属板作为主板安装位注意让主板的 I/O 接口朝向框架外侧方便插网线和 USB。安装电源。ATX 电源的螺丝孔位和 4040 型材不直接兼容通常需要买电源支架或者再用一块转接板。电源出风口要朝外不能贴住型材遮挡出风。布置供电线缆。先把 24pin 主板供电和 CPU 供电接好再走显卡供电线。所有线尽量沿着型材槽位走用扎带固定不要在风扇前方横穿。固定显卡托架和 PCIe 转接延长线。这一步最考察耐心因为要同时兼顾“金手指接触可靠”和“显卡不会晃动”。我习惯先把延长线固定在主板 PCIe 插槽上再把显卡插到延长线的另一端并用托架支撑通电前反复确认金手指是否插到位。安装风扇。先把风扇固定在侧面的风扇支架上再连接 PWM 线到主板的 CPU_FAN 或控制板。开机前手动拨一下扇叶确认没有被线材卡住。线材整理这件事看起来只是“美观问题”实际上直接影响故障排查效率。我只说一个真实经历有次机器莫名重启排查到最后发现是一根 PCIe 供电线外皮破损露出了里面一小截金属正好搭在框架的铝型材边缘上。这种事故如果线材都理干净、套上绝缘护套基本不会发生。3.3 控制板固件烧录与基本配置控制板我用的是一块 ESP32第一次烧录固件的时候要注意先接一根 USB 线到电脑装好 CH340 或 CP2102 的驱动然后在 Arduino IDE 里选择正确的开发板型号和端口。上传之前把 BOOT 引脚拉低很多开发板在软件里设置 DTR/RTS 就能自动进入下载模式我在这上面卡了半小时最后发现是线的问题——手里那根 USB 线只能充电不能传数据。所以也提醒一下别拿“充电线”去刷固件。下面是一个最小化的 ESP32 固件示例作用是读取 DS18B20 温度并通过网页显示超过阈值时点亮一个 GPIO 控制的风扇。我这个例子把逻辑写得尽量简单重点是让你看到“传感器读取 简单控制”的过程。#include OneWire.h #include DallasTemperature.h #include WiFi.h #include WebServer.h #define ONE_WIRE_BUS 4 #define FAN_PIN 5 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(oneWire); const char* ssid your_wifi; const char* password your_password; WebServer server(80); float tempC 0.0; void handleRoot() { String html htmlbodyh1openrig temp/h1p; html String(tempC) °C/p/body/html; server.send(200, text/html, html); } void setup() { Serial.begin(115200); sensors.begin(); pinMode(FAN_PIN, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(WiFi.localIP()); server.on(/, handleRoot); server.begin(); } void loop() { sensors.requestTemperatures(); tempC sensors.getTempCByIndex(0); Serial.println(tempC); if (tempC 45.0) { digitalWrite(FAN_PIN, HIGH); } else { digitalWrite(FAN_PIN, LOW); } server.handleClient(); delay(2000); }这段代码非常基础实际部署时你最好加一个看门狗、断线重连或者 MQTT 上报。但核心逻辑不变把温度读出来跟阈值比一比再控制风扇。对于长期跑负载的设备我建议阈值设低一点不要等温度到了 70℃ 再全力散热电子元器件长时间工作在高温区间寿命衰减是实打实的。3.4 通电测试与拷机验证全部装完之后不要急着一次性把所有显卡都接上。第一次通电最好只接主板和一张显卡先验证系统能正常启动。主板上电之前先用万用表量一下电源的 5V 待机和 12V 输出有没有正常电压防止电源本身有问题殃及主板。这一步很多人嫌麻烦但我每次换新电源都必须做花三十秒能省一整天的排查时间。启动成功后先进入系统查看显卡是否被正确识别操作系统里都能直接看到显卡列表再运行一段负载压力测试一般可以选渲染或跑模型的负载时间控制在 5 到 10 分钟即可。同时观察系统日志里有没有 GPU 掉卡、驱动报错等记录。如果一张卡跑稳定了再逐张增加。这里的关键是“逐卡增加”不是一次性插满六张再开机——不然出问题你根本分不清是哪张卡引起的。拷机时的温度数据值得记下来。我自己通常用软件记录每张卡的“核心温度、显存温度、风扇转速、功耗”记录间隔 10 秒一条跑满载 30 分钟。这一份数据对后续优化风道、调整风扇转速策略都非常有用。没有数据做支撑你后续的“优化”其实都是在猜。4. 常见问题与排查技巧实录4.1 开机不稳定、显卡识别不到这是开放框架类机器最容易遇到的问题。关于原因我自己的经验排序是PCIe 延长线质量或插接不到位、供电不足、主板 BIOS 设置的 PCIe 通道数有问题。你可以按这个顺序排查先检查延长线两端的卡扣是否“咔哒”入位以及显卡供电线是不是都插上了有的显卡需要两个 8pin只插一个也能点亮风扇但系统识别不到。换一个 PCIe 插槽槽位试一下排除某个槽本身的问题。把主板 CMOS 重置一次进入 BIOS 后将 PCIe 链路速度手动设置为“Gen3”而非“Auto”。在延长线场景下自动协商有时会异常Gen3 反而更稳。如果只有一张卡正常两张卡以上就不稳优先怀疑电源功率不足或单路负载过高。4.2 供电不足与电压跌落电压跌落的表现是高负载运行一段时间后整机突然重启或者某几张卡同时掉线供电线缆摸起来发烫。这时候不要只怪电源品牌还要考虑线材截面积是不是不够。举个例子一张 300W 的显卡按 PCIe 12V 算电流大约是 25A。一条 18AWG 的线理论上能承受一定电流但在长时间满负载下它的电压降和发热都会变大。如果同一根线上并联了两张卡风险直接翻倍。解决思路有几种一是换用更粗的 16AWG 或 14AWG 供电线尽量缩短长度二是把显卡供电分散到不同电源或不同输出口上三是增加一个 DC-DC 电源模块作为中间转换。另外如果你用了便宜的分线器一拖多建议果断扔掉那种东西在高压大电流场景下纯粹是定时炸弹。4.3 高温降频和风道死角累计运行一段时间后你会发现某一两张卡的温度比其他卡高出一大截而且越跑负载越“掉速”。这通常就是局部的风道死角。开放式框架不是神如果某张卡的前面正好被电源线挡住或者两张背靠背的显卡间距太近散热就会变得不均匀。解决方法是调整卡位间距至少保证卡与卡之间有 3cm 以上的间隙或者加一个小尺寸的“导风罩”用 3D 打印或亚克力做一个简单的风道让气流可以精准吹过热区。我自己实际测过同样的机架只是调整了风扇摆放方向和添加了两块导流板最高温那张卡能降 8-10 ℃。这个提升比换风扇大得多值得优先折腾。积灰问题也要在结构上提前想好。开放式框架更容易吃灰尤其是风扇正对着散热鳍片吹的时候半年下来鳍片缝隙里就塞满了毛絮。我在每个进风口都加了防尘网清洗时只需要拆防尘网不用整机清灰。这个投资回报率极高。4.4 控制板连不上、数据乱跳ESP32 控制板连不上 WiFi多半是供电不稳定。ESP32 对供电比较敏感用劣质 USB 线供电时会因为电压跌落而反复重启。量一下控制板的输入电压最好保持在 5V ± 0.25V 之间。另外不要把控制板和风扇大电流线共用一组电源模块——风扇启动瞬间的电流波动会把控制板“带崩”。数据乱跳的问题一般出在传感器接线DS18B20 是单总线协议对线缆长度和接触电阻敏感接头松动就会读到 85℃ 或 -127℃ 这种异常值。建议传感器线越短越好最好加一个 4.7kΩ 的上拉电阻到数据线。如果你看到温度读数尬在 85℃ 不动那基本就是传感器通信失败先量线通断再查上拉电阻基本都能解决。4.5 一个我很想强调的维护习惯我遇到过很多人机器装好之后跑三个月不拆开检查。开放框架虽然方便但“裸露”也意味着“风险无遮挡”线材老化、风扇轴承缺油、螺丝震动松动都会慢慢冒出来。我自己的习惯是每个月做一次快速巡检断电后检查所有螺丝是否松脱、供电线端子有没有变色、显卡金手指部分有没有氧化痕迹顺手把防尘网冲洗一次。不要等到系统开始出问题了再查那时候通常已经晚了。写在最后的几点心里话我在 openrig 这类项目上花的时间不算少装过两套框架也帮朋友改过好几版布局。我个人最大的体会是这种“开放式设备”真正考验人的不是硬件拼装本身而是“你会不会为后续维护留余量”——线材多留一点、风扇位置多预留一个、控制板的传感器探头多固定几个位置这些细节在当时看都是很小的决定但三个月后回头看它们决定了这台设备是“顺心工具”还是“折腾之源”。最后再分享一个小技巧在框架的铝型材上贴几个小的水平泡或者干脆用激光水平仪做一次精确校正会让后续所有转接支架的安装都舒服很多。有些人觉得这是多此一举但你只要试过一次“因为框架底歪导致四张卡不在一个平面上”的尴尬就会回来感谢这个建议。openrig 是个很有延展性的项目四卡布局只是起点后面你完全可以按自己需求去扩展双电源、水冷排、独立控制面板等等。动手之前多想一步动手之后就会顺很多。
返回列表