
OpenRig这个项目最早其实就是我想把手里几张显卡拼成一台能长期跑大模型的“自留地”机器。买云服务器按小时计费太肉疼数据出口还要过一层又一层审批而现成的AI一体机要么贵要么封闭拆都拆不开。折腾了大概两个月我把这台机器从硬件选型到软件栈再到日常维护的所有配置都整理成了一个开源仓库取名OpenRig——Open是开放rig是那套为特定任务专门拼装的设备。这整个过程踩了不少坑也有不少“早知道就好了”的瞬间这篇文章就把完整链路写出来给想在本地落地大模型推理、又不想上来就被各种术语劝退的人做个参考。如果你手里已经有一张能跑CUDA的N卡哪怕只是16GB显存OpenRig这套方案都能给你一个从装机到部署的直接模板。如果你还没买卡文章里也会把选型逻辑讲透——为什么要优先看显存显存带宽影响什么电源留多少余量才不会让整台机器在推理峰值时突然黑屏。这不是一篇讲“概念”的文章里面每个步骤都是我实际跑过、记录过、也回滚过的你照着抄作业基本能一次跑通。1. OpenRig是什么一台“开源整机”的定位与设计取舍1.1 为什么叫rig不叫服务器rig这个词在硬件圈子里其实很常用指的不是标准机架上那种规规矩矩的服务器而是为了某件事专门拼出来的一套设备——水冷分体机叫rig采矿机叫rig模拟器座舱也常被叫rig。OpenRig借用这个词就是在强调一件事它不是某个厂商交付给你的黑盒子而是一份可以自己攒、自己改、自己修的开源设计方案。OpenRig仓库里实际包含三部分内容。第一是硬件清单BOM从主板、电源、显卡到机箱风道都标明了型号选择和替代方案第二是部署脚本从Ubuntu系统安装完成之后开始一条命令把驱动、容器、推理引擎全部拉起第三是运维规范包括日志轮转、模型更新流程、显存温度阈值报警这些不太性感但非常重要的细节。把这三个部分拆开看你会发现OpenRig本质上不是一个“软件项目”而是一套把硬件和软件绑定在一起的参考实现。为什么强调“绑定”因为本地推理的性能瓶颈绝大多数时候在硬件而不是软件。同一套vLLM部署脚本放在RTX 3090和RTX 4090上吞吐量可能差出30%以上同一张卡插在主板上PCIe通道没接满模型加载时间和并发表现也会明显下滑。OpenRig把系统盘、模型盘、显卡、内存这些物理层面的东西全部定死再往上面叠软件配置这样别人复现的时候不会因为某个部件不同而跑到一半不知所措。1.2 它解决什么问题选择本地推理而不是云API最常见的原因有三个。第一是数据安全企业内部的一些文档、代码库、客服对话记录按规定不能出内网本地部署是最直接的解法第二是长期成本如果每天都在高频调用模型几个月下来API账单很可能比一台整机还贵第三是自由度和可控性你可以随时换模型、改采样参数、接自定义工具而不需要等待平台方上线某个功能。但OpenRig的目标用户并不是“所有想用大模型的人”。如果你只是偶尔写个文案、做一次翻译云API便宜又省事完全没必要自己养一台rig。OpenRig适合的是那些已经把大模型用到了日常工作中、并且能够接受一定硬件维护成本的个人开发者或者三五个人的小团队。它给出的是一条不依赖外部服务的私有化路线代价是你得学会看日志、跑命令、给显卡清灰。我自己的使用场景是三个方向本地知识库问答、代码库辅助分析、批量文本处理。这三个方向有一个共同点它们都需要上下文里带上大量内部数据而这些数据放在公共云上不太放心。OpenRig跑起来之后所有流量都在局域网内部完成模型权重、检索结果、对话记录全部停留在本机磁盘上这个“不出门”的属性是它比云方案最本质的差异。1.3 与云API和品牌工作站的区别很多朋友会问OpenRig和自己买一台品牌AI工作站有什么区别品牌工作站的核心优势是开箱即用和统一售后但劣势也很明显——价格里包含了大量溢价配置固定想升级必须找厂商OpenRig走的完全是另一个路线自己选件、自己组装、自己调优节省成本的同时也把技术债全揽到自己头上。为了看得更清楚我列了一张对比表基于实际体验整理维度云API商用品牌工作站OpenRig前期投入无高中等显卡是大头长期成本随用量线性增长固定但含溢价固定主要为电费数据出入口必须出内网不出内网不出内网灵活性受平台限制受厂商限制完全可控需要的技术能力低低中高性能上限取决于预算高但贵高取决于显卡配置性能方面只要显卡到位OpenRig跑推理的速度并不比云上同型号GPU差因为本机没有虚拟化损耗PCIe通道直连显存带宽完整。差的其实是运维体验云平台给你直接打好了驱动、配好了弹性伸缩OpenRig这边一切靠自己。但从另一个角度看这也意味着你对其中的每一层都有完全的掌控权——出问题的时候你能顺着日志一层层挖到底而不是对着客服工单干着急。2. 硬件底座的选型与装机稳定跑推理的物理前提2.1 GPU选择显存、显存带宽和散热本地跑大模型最绕不开的就是显卡。我的选型逻辑可以压缩成三句话显存决定你跑多大的模型显存带宽决定生成速度散热决定它能稳定跑多久。显存容量是第一硬指标。以7B到8B级别的主流开源模型为例FP16全精度权重大约需要14GB到16GB显存量化到4bit之后大约降到4GB到6GB但还要留出上下文缓存KV cache和运行时的临时激活值实际占用会比权重本身大不少。我实测下来16GB显存跑7B量化模型比较舒服24GB显存则可以跑13B到14B的量化模型也能在7B模型上开很长的上下文窗口。如果你预算只够买8GB显存的卡那基本只能跑3B到7B的小模型并且上下文限制很死——不是不能用但体验和24GB的方案有明显差距。显存带宽决定了解码速度。这里说一个很容易被忽略的事实大模型生成是显存带宽密集型任务计算量反而不是瓶颈。简单的估算方法是看显存带宽数字——RTX 4090大概在1000GB/s上下RTX 3090大概在936GB/s而很多入门卡只有一半不到。带宽高意味着每秒钟能把更多权重数据从显存喂给计算单元token生成速度自然更快。我在4090上跑7B量化模型实测速度大概在每秒100到140个token换到带宽减半的卡上同样的模型可能直接掉到每秒50个token文章没看完人就等困了。散热属于“平时感受不到、坏了才后悔”的维度。推理任务和游戏不一样它可以长时间让GPU保持高负载运行显卡风扇一直满转显存温度缓慢爬升。我的建议是别只盯着GPU核心温度显存温度热点温度才是更需要注意的指标。如果显存长期超过90度出现花屏、掉驱动的概率会显著增加。所以机箱内部要给显卡留够间距或者直接上开放式机架加一个工业风扇对着吹——丑但好用。2.2 CPU、内存与主板别让PCIe通道拖后腿显卡确定之后很多人会忽略CPU和主板随便拿个旧平台就往上怼。这其实是一个隐藏很深的坑。推理引擎启动时需要把模型权重加载到显存这个操作会读一遍CPU主存里的数据内存带宽低的话加载时间会拉长另外如果配置了CPU offload或者跑embedding模型CPU的性能直接关系到响应速度。我的建议是上一颗主流的8核以上处理器内存至少32GB起步OpenRig的默认配置给到64GB跑多路并发时不会捉襟见肘。主板方面最值得关注的是PCIe通道分配。一张显卡跑x8和x16的通道带宽从实际推理性能来看差距其实不大但如果你计划插两张卡主板是否能提供两条完整的x16通道、还是会把第二张卡降速到x4就非常关键了。x4带宽对AI推理来说是实打实的瓶颈多卡并行时显存间通信会卡在PCIe带宽上吞吐提升幅度变得很难看。我踩过的坑就是买了一块便宜的B650主板两个物理插槽看着都是全长x16实际带宽却是共享的x8x4插上第二张卡后性能还不如单卡单独跑。另外要提醒的是电源供电接口。现在的AI显卡功耗都很高一张旗舰卡满载能到450W上下两张卡加CPU和其他配件整机峰值功耗轻松突破1000W。电源选型时别卡着功耗算要留至少30%到50%的余量因为显卡在推理过程中会有瞬时功耗尖峰电源不够会直接触发过载保护断电——表现就是机器“突然重启”。我自己的配置给的是1300W铂金电源两张卡满载时电源风扇也只是轻微加速稳得不行。2.3 存储与网络模型仓库的布局思路存储这个环节看起来和推理无关实际影响比很多人想象的大。模型文件动辄几十GB从Hugging Face下载或者从内部镜像同步都需要一块速度足够的硬盘。OpenRig的默认方案是两块NVMe SSD一块500GB到1TB做系统盘和容器存储另一块2TB专门做模型仓库。模型仓库盘建议选带独立缓存的PCIe 4.0盘实测加载一个7B量化模型只需要十几秒而如果放在机械硬盘上加载时间长到你会怀疑是不是卡死了。模型加载完成之后推理过程几乎不会读磁盘所以存储对生成速度没有直接影响但它影响的是“切换模型”的体验。如果你经常需要在不同的模型之间切换比如对话用7B代码用14B检索用embedding小模型加载速度和多模型共存能力就很重要。一个实用技巧是把要常驻的几个模型放在模型仓库盘用软链接管理版本给vLLM服务配置preloaded_models启动时一次性加载到显存需要换模型时重启容器即可。网络方面OpenRig默认只跑在内网千兆网口在局域网内部处理并发是完全够用的。但如果你的模型要从外网镜像拉取建议配置直接放到内网文件服务器上或者用定时同步的方式在凌晨低峰期下载避免白天带宽被模型文件占满导致业务访问卡顿。多机协同的场景比如一台GPU跑推理、一台CPU跑向量库需要万兆或者至少2.5G网口否则embedding调用和检索请求会有明显延迟。3. 系统与推理引擎的落地从裸机到可用服务3.1 驱动与CUDA版本配对是第一课硬件装好之后进入软件环节第一步就是装驱动。这一步真的要沉住气版本配对该花的时间一定不能省。我用的是Ubuntu 22.04长期支持版装NVIDIA驱动有两条常见路径一条是直接用apt装发行版仓库里的驱动另一条是从NVIDIA官网下runfile手动装。我的建议是优先用apt方式因为后续内核升级时驱动和内核模块的兼容性问题会少很多。驱动装好之后验证方法是运行nvidia-smi看到GPU列表和驱动版本、CUDA版本号就说明基本成功。这里有一个经常让人confused的地方系统里显示的CUDA版本和PyTorch自带的CUDA runtime不一定是一回事。如果你只是跑vLLM、PyTorch这类框架不需要单独安装完整CUDA Toolkit因为框架的wheel包自带runtime只有在需要从源码编译自定义算子的场景下才需要把CUDA Toolkit版本和驱动版本严格对上。我踩过的坑是装了最新驱动后发现某个老版本PyTorch报libcudart.so找不到。排查下来发现是驱动版本新到兼容了CUDA 12.x但PyTorch是CUDA 11.8编译的runtime也不匹配。解决办法其实很简单——用容器镜像让每个服务锁定自己的CUDA版本而不是在宿主机上装一个全局的Toolkit到处用。OpenRig的部署脚本里默认就用了PyTorch官方镜像和vLLM官方镜像宿主机只需要一个能正常工作的驱动就够剩下的事情都丢给容器解决。3.2 推理引擎的取舍llama.cpp、vLLM与TensorRT-LLM推理引擎这一层OpenRig目前主要用了两个Ollama和vLLM。Ollama适合个人交互调试一条命令就能把模型拉下来并提供OpenAI兼容接口vLLM适合作为稳定的公共服务对外提供因为它的连续批处理continuous batching机制能显著提高多用户并发下的吞吐量。以两张RTX 3090 24GB的配置为例我在OpenRig上做过的对比测试大概是这样跑7B量化模型时Ollama单并发响应速度快交互体验好但一旦同时有5个以上的请求打进来vLLM借助连续批处理总吞吐量能比逐个排队高好几倍。原因在于vLLM不是等一个请求完全生成完再处理下一个而是把多个请求的动态解码过程在GPU上重叠执行显存利用率高得多。TensorRT-LLM我也试过性能确实能达到极致但代价是模型转换和构建引擎的过程比较繁琐每换一个模型都要重新跑一遍优化流程。除非你需要为特定模型做生产级极致优化否则我不太推荐把这套引擎作为默认选择。如果你的场景是“先跑起来再说”那我的建议是Ollama上手vLLM上线TensorRT-LLM留到确实需要压榨性能时再研究。引擎上手难度并发吞吐多卡支持推荐场景Ollama极低中有限个人调试、快速试用vLLM中高好多用户公共服务TensorRT-LLM高极高好生产级极致优化3.3 OpenRig的容器编排与任务管理软件栈的骨架我用的是docker compose把所有服务的管理收口到几个yaml文件里。核心服务包括三个vLLM推理服务、WebUI界面Open WebUI、向量数据库。这个组合基本覆盖了本地大模型最常见的玩法——日常对话、知识库检索问答、API调用。下面是一个最简化的vLLM服务定义你可以直接参考services: vllm: image: vllm/vllm-openai:latest container_name: openrig-vllm command: --model Qwen/Qwen2.5-7B-Instruct --max-model-len 8192 --gpu-memory-utilization 0.92 --served-model-name qwen2.5-7b ports: - 8000:8000 volumes: - /mnt/models:/root/.cache/huggingface shm_size: 16gb deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu]几个值得注意的细节shm_size一定要调大默认值太小会导致多进程数据共享时报错模型权重目录用volume挂载避免每次启动容器都重新下载gpu-memory-utilization控制在0.90左右留出一点显存给WebUI和向量库的embedding模型。如果你要常驻两个不同引擎的服务建议用systemd unit管理容器启动顺序或者写一个简单的启动脚本避免机器重启后服务没拉起来。任务管理方面OpenRig没有引入K8s那种重型调度因为单机场景下没必要。我用的是一套非常朴素的方案常驻服务vLLM、WebUI随系统自启按需服务比如跑一次微调、批量清洗数据用tmux拉起用完就停。这套“两张座椅”策略在几个人到十几个人的小团队里用着完全够维护心智也低很多。3.4 对外接口与局域网访问vLLM启动之后会默认暴露OpenAI兼容的RESTful接口路径为/v1/chat/completions这意味着几乎所有支持OpenAI API的工具都可以通过换base_url的方式直接接入OpenRig。设置环境变量即可切换base_url指定为http:// :8000/v1key随便填一个你自定义的值vLLM默认不校验key内容。局域网访问的安全是OpenRig方案里需要认真对待的一环。我的原则很简单服务绑定内网IP不暴露公网。如果你有多地办公需要远程访问推荐用组网工具把所有节点放到同一个虚拟局域网里这样服务和开发机之间的通信和局域网一样直接不需要在公网上开任何端口。组网工具本身是加密的只要节点端做好认证安全性比直接暴露公网端口要高得多。另一个实用建议是WebUI和管理端口加一层简单的登录认证Open WebUI本身支持账号体系开箱就能用。3.5 首次启动与基线测试从镜像到真正跑通第一次启动大概二十分钟。我强烈建议在进入业务测试之前先给OpenRig建立一个性能基线记录几个关键数字——首token延迟TTFT、平均生成速度token/s、在固定并发下的总吞吐量。这些基线数据在你以后换模型、调参数、升级驱动的时候非常有用能够告诉你性能变化是来自于哪次调整。我的基线测试方式是用一个简单的Python脚本并发发一批请求每次记录三个指标然后汇总平均值。第一次跑的时候我顺便打开nvidia-smi的watch模式观察显存占用和GPU利用率确认模型确实加载到了显存且在持续计算。这一步看起来平淡但能筛掉大量后续可能出现的问题如果显存占用上不去说明量化配置有问题如果GPU利用率频繁掉到0说明有CPU瓶颈或者数据加载卡顿。实际操作中我遇到过多次“模型响应慢但GPU利用率不高”的情况最终定位都是输入长度过长导致prefill阶段计算量过大——这些都要靠基线数据才能快速判断。4. 性能调优的实操记录让每一GB显存都干活4.1 先搞清楚优化目标延迟还是吞吐调优之前先明确一个问题你更在意单次请求的速度还是整体系统在多人同时用的时候能不能扛住流量这两个目标会导向完全不同的参数配置。如果是个人交互式使用首选优化首token延迟和生成速度如果是一个团队共用一个服务那核心指标是总吞吐量也就是单位时间内能处理多少请求即使单个请求慢一点也没关系。vLLM里的max_num_seqs就集中体现了这个取舍。这个参数控制并发序列数调高可以提升吞吐但会占用更多显存做KV cache并且单请求的延迟会略有上升。我的建议是交互式场景max_num_seqs设小一些8到16优先保证每个请求的响应速度批量处理场景调到64甚至128吞吐量会大幅提升。这个参数没有绝对正确值要结合你的显存大小和上下文长度实际试OpenRig默认给到32算是一个均衡点。实践中另一个容易忽视的点是请求的上下文长度。很多人习惯把所有对话历史一股脑全发上去导致prefill阶段计算量爆炸GPU利用率长期跑满但生成速度极慢。调优的第一步往往不是改引擎参数而是检查应用层是不是每轮都在发送冗余历史。OpenRig提供的WebUI自带上下文管理可以设置最大历史轮数和自动摘要团队里用起来之后同样的模型在并发上来的情况下响应速度明显更稳。4.2 显存占用估算与量化等级选择显存管理是调优的地基。一个常用的粗略估算公式是模型权重显存模型参数量×每参数字节加KV cache显存再加少量激活值余量。以7B模型为例4bit量化后权重大约4GBFP16则需要14GBKV cache的大小主要由上下文长度和并发序列数决定每多一个并发请求都按比例叠加。所以在选量化等级的时候不是“越低越好”而是要结合你的上下文需求。我实测下来Q4_K_M这个级别是大多数场景的甜点显存占用低速度损失小质量损失在对话场景基本感知不到。如果显存还有富余可以上Q5或Q6质量进一步提升但显存占用也水涨船高。如果是追求极致服务吞吐而不是单请求质量AWQ和GPTQ这类静态量化配合vLLM效果不错预量化模型部署后显存占用更可控。给一个直观参考表基于7B模型和24GB显存精度权重占用可用上下文适用场景FP16约14GB较短保真度优先Q8约7.5GB较长质量与速度平衡Q4_K_M约4.3GB很长高并发、长上下文AWQ 4bit约4.2GB很长vLLM服务化关键点在于显存不是只给权重用的上下文越长KV cache占用越大。我遇到过一个真实案例团队在24GB卡上部署7B模型Q4量化max-model-len设成了32768结果显存直接占满并发一上来就OOM。后来把max-model-len降到8192同样的模型和量化等级同时开64个并发都很稳。所以调参的顺序应该是先定量化再定上下文长度最后根据剩余显存调节并发。4.3 vLLM关键参数与实测效果我在OpenRig上最常调的几个vLLM参数是max-model-len、gpu-memory-utilization、max_num_seqs和quantization。给一个实际可用的启动例子vllm serve Qwen/Qwen2.5-7B-Instruct \ --quantization awq \ --max-model-len 8192 \ --gpu-memory-utilization 0.92 \ --max-num-seqs 32 \ --served-model-name openrig-qwengpu-memory-utilization这个参数的意思是把GPU显存的92%预留给推理进程剩下的留给显示和其他小任务。设成0.98也不是不行但要冒着显存不足导致OOM的风险留给其他服务的内存太紧。我的实践是0.90到0.92是最稳妥的区间既能最大化推理容量又留有缓冲。实测下来单张RTX 4090跑Qwen2.5-7B AWQ量化单个请求的生成速度在每秒80到120 token之间具体取决于上下文长度和并发压力当32个并发请求同时进来时系统总吞吐能到每秒2000 token以上这就是连续批处理的魔力。从单请求体验到高并发吞吐vLLM在这张卡上表现得相当稳定一个下午跑了几千个请求没有出现一次OOM或卡死。另外一个小技巧是打开vLLM的--enable-prefix-caching参数新版vLLM默认开启它对多轮对话里重复前缀的请求有奇效实测能把多轮对话的prefill耗时压掉一半以上。4.4 多卡并行配置OpenRig的定位从一开始就考虑了多卡扩展。vLLM提供了tensor_parallel参数把一个模型切片到多张卡上这样单模型能用的显存就是N张卡的总和。OpenRig仓库里默认给的是两张RTX 3090 24GB的组合加起来48GB足够跑70B级别的4bit量化模型或者完全放下一个14B模型的FP16全精度版本。多卡配置的命令很简单在vLLM启动参数里加一个--tensor-parallel-size 2并保证两张卡通过PCIe交换数据。不过这里有一个性能秘密无NVLink的板卡之间走PCIe通信模型越大通信量越大加速比就越接近理想值小模型在多卡上反而不划算因为单卡就够了多卡反而要花时间做显存间同步。以7B模型为例单卡跑得比双卡tensor parallel更快别为了“双卡看起来很厉害”就去开多卡。70B大模型才是多卡配置的主场OpenRig默认预设里也明确推荐多卡只用于跑30B以上的模型。我自己测试过双3090跑Qwen2.5-32B AWQ量化tensor-parallel-size2的情况下生成速度大约在每秒35到45 token比单张24GB卡迫不得已做CPU offload时的体验好了不止一个量级。而且显存还有余量可以开挺长的上下文。多卡调优真正要花时间的地方是在启动前用nvidia-smi确认两张卡的PCIe链路是Gen4还是Gen3如果降速了要进BIOS去查否则通信带宽会从32GB/s掉到16GB/s模型越大影响越明显。5. 一周真实使用OpenRig能替代哪些日常工具5.1 本地知识库问答工作流OpenRig跑通后的第一周我把它接进了本地知识库问答。整体架构很传统先用embedding模型把文档切块向量化存入向量数据库收到用户问题时先做相似度检索把命中的文本块和问题一起交给LLM生成答案。这套流程用到的组件全部开源Open WebUI自带的RAG功能配置一下就能跑起来。比较有意思的是实际体验中的细节。文档切块chunk的大小不是越大越好——切太大会让检索结果混入大量无关噪声切太小又会丢掉上下文关联。我的经验是Markdown标题层级切分每个章节一个chunk再按500到800字二次切分检索命中率和答案质量都有明显提升。另外embedding模型的选择也会影响中文场景的检索准确率建议选择一个中文效果好的开源embedding模型而不是默认的通用小模型。换完之后很多之前莫名其妙的“检索不到”问题直接消失了。数据不出内网这个属性在知识库场景里体现得最明显。部门的内部技术文档、事故复盘、客户沟通模板都可以放心放进去RAG检索加LLM生成的组合比在公共云上处理这些数据让我安心得多。一周用下来这个知识库成了团队里几个高频使用者替代“翻聊天记录”的第一入口虽然偶尔会给出不够精确的答案但作为“文档引导型”工具它的价值已经非常明显。5.2 代码助手与批量信息处理除了知识库我还把OpenRig接进了代码场景。编辑器里的AI插件把接口指向局域网内的OpenRig服务补全和对话都不需要离开IDE。实测下来本地部署的7B模型在代码补全质量上比云端的入门级模型稍弱但在“解释某段业务逻辑”“生成单元测试模板”“整理代码审查意见”这类任务上完全够用——毕竟它能看到我们自己的代码库内容这点是云端通用模型给不了的。更有价值的是批量信息处理。团队每周有大量非结构化的文本需要整理客服工单归类、周报提炼、日志摘要。这些任务单个跑起来耗时几分钟但胜在可以并发、可以定时。我写了一个最简单的脚本每天早上从数据库拉取前一天的新工单调OpenRig的接口做摘要和标签最后把结果写回内部看板。原本需要一个人花两小时手搓的活现在变成了每天自动执行、完成后在群里通知一声。这类批处理任务对推理服务的要求和聊天不一样它需要高吞吐而不是低延迟一个工单花10秒还是20秒无所谓但几百个工单不能排队排到下午。把max_num_seqs调高之后OpenRig处理这种“量大、单条简单”的任务非常从容。这个案例也验证了前面说的调优思路——明确目标是吞吐还是延迟然后针对性做参数调整。5.3 多成员并发下的使用体验OpenRig从单机工具升级成团队服务之后并发成了绕不开的话题。我们团队大概五六个高频用户在白天同时使用叠加批量处理任务对推理服务的压力已经超过了单卡单模型最优配置的舒适区。第一周过完我观察到几个现象上午十点到下午三点是使用高峰vLLM的队列长度会明显上涨与此同时显存占用保持在92%的上限跑满GPU利用率也基本维持在高位。一天的实测记录显示vLLM在峰值时段大约处理了700个请求平均每个请求的生成速度从空闲期的每秒90 token降到了每秒60 token左右。对于内部工具来说这个降级还算可以接受但再往上扩容的话OpenRig的方向就是分出专门的卡跑embedding和向量检索把主力GPU从低负载任务里解放出来。这也是OpenRig往后迭代的方向之一让不同任务落在不同的卡上而不是让一张卡既要跑推导又要跑检索又要处理批量任务。给团队提供服务的同时配额或者说公平使用也开始重要。我目前的方案很简单在应用层给不同成员分配不同的key并在nginx层记录每个key的调用量。不需要做复杂的限流只要能知道谁在用、用了多少就已经比黑盒服务强太多了。5.4 能耗、噪音与维护成本最后说点实在的运维数据。OpenRig在对外的宣传里可能看起来很酷但房间里多了一台能发热的机器是事实。我用带功率计的插座测过待机状态下整机功耗大约120W跑单卡7B模型时大约400W跑双卡大模型时能到800W到1000W。按照每天实际负载6小时、其他时间待机来算一个月电费大约150到250元具体看当地电价。这个数字跟云GPU按小时计费相比在用量足够高的情况下确实能省不少但要说完全不心疼电费也是假的。噪音是另一个“室内生活质量”问题。满载时两张3090的原装风扇加上机箱风扇噪音大概在50分贝左右放在工位旁边还是能听到明显的风声。解决办法我最终选了开放式机架加低速大风量风扇的方案噪音降到了可以接受的水平代价是灰尘管理需要更勤快每两三个月给显卡清一次灰不然显存温度会明显往上走。维护工作的重心倒不在这。OpenRig日常真正要花时间的是三件事更新模型权重每个月检查一次新版本跑一轮基线对比、监控日志有没有OOM有没有调用异常、定期备份模型下载列表和配置文件写进git仓库。这些操作每项都不复杂但缺了任何一个机器运行几个月后都会冒出一些奇怪的小毛病。把它们自动化成脚本之后OpenRig基本上就进入了“日常不用管坏了能定位”的稳定状态。最后分享一个我在维护OpenRig时发现的小规律机器稳定运行一个月之后待机功耗会比新装机时高几瓦显存温度也会高两三度。这不是玄学是散热鳍片积灰加上硅脂老化的自然过程。所以我养成了一个习惯每个月用一个固定脚本记录待机温度和功耗曲线一旦出现趋势性上升就知道该清灰了。设备管理本质上就是和熵增对抗——OpenRig让你自己掌控这种感觉对于喜欢折腾的人来说其实挺上瘾。