我的地下室大模型(LLM)实验室:一块 5090、两块 4090,以及两台老旧的 ProLiant 服务器。

这是我们在 OmniNode(我是创始人之一)进行工程开发所使用的地下室设备配置。金属置物架被当作机架使用。两台塔式主机用于运行本地模型;两台老旧的 HP 服务器主要承担构建、测试和智能体(agent)任务;此外还有几台 Mac 和一台旧笔记本电脑作为补充。

• 主塔式主机:搭载 Ryzen 9 9950X3D 处理器、96 GB 内存,以及 RTX 5090(32 GB)和 RTX 4090(24 GB)显卡。RTX 5090 通过 vLLM 运行 Qwen3.8-27B 模型及嵌入(embedding)任务;我查看时,RTX 4090 上也运行着 vLLM 进程。这台机器还承载了我们的开发环境、Redpanda、Postgres 数据库以及一些 CI(持续集成)运行器——负载确实过重了。在高负载下,系统会出现内存交换(swapping),所以我正计划将这些服务迁移到那台 Gen8 服务器上。

• 第二台塔式主机:搭载 Ryzen 9 9950X 处理器、64 GB 内存,以及 RTX 4090(24 GB)显卡。它通过 llama.cpp 运行 Qwen3.8-27B MTP (Q3_K_M) 模型,占用约 19.4 GiB 显存,支持 131K 上下文池和两个并行槽位。Qwen3-Embedding-0.6B (f16) 模型则额外占用约 2.7 GiB 显存。当 CPU 有空闲时,它也会分担一些智能体任务,我们会密切监控其运行温度。

• HP ProLiant DL560 Gen8:配备四个处理器插槽(共 80 线程)、377 GiB 可用内存(Ubuntu 系统下),并配有一块 NVMe 临时存储盘。这是我们算力最强的工作节点。我们将它限制在同时运行 32 个智能体任务(外加 CI 任务)。由于设备较老,不支持 AVX2 指令集,因此任何需要 AVX2 的任务都会被分配到其他机器上执行。 • HP ProLiant DL380 Gen9:配备两颗 Xeon E5-2680 v4 CPU(共 56 线程),Ubuntu 系统下可见内存为 125 GiB。它主要负责 Docker 构建与测试、CI 运行器(CI runners)以及各类代理任务(agent jobs),代理任务上限为 24 个。

• Mac Studio:搭载 M2 Ultra 芯片,拥有 192 GB 统一内存。这是我的工作站,也是我协调各项工作的中枢。它还运行着一个 llama.cpp 服务器,用于处理部分委托生成的草稿,并在自动化代码审查中承担一票表决权。我将其从任务池中移出,以便我能正常使用它。

• 其他设备:一台较旧的 12 核 Mac 可在不使用 Docker 的情况下执行代理任务;一台 M4 MacBook 在空闲时也能承担同样的工作。此外,还有一台 8 线程的旧款 Ubuntu 笔记本电脑,仅用于处理轻量级的测试和代码检查(lint)任务。

这些 HP 服务器并不提供额外的显存(VRAM),但它们增加了可用的核心数和内存容量,从而避免了构建、测试和代理任务全都挤在仅有的两台主机上争抢资源。

我们会优先将草稿撰写、内容摘要等任务交给本地模型处理,但同时也使用云端模型。我曾发现我们对本地推理的依赖程度极高——当时我在那台配备 5090 显卡的机器上升级了模型,结果导致自动化代码审查功能直接停摆了。原来,我们备用方案列表中的两个选项指向了同一个服务;当该服务宕机时,这些审查任务便无处可去了。

在针对同一台 5090 机器和同一模型进行的另一项测试中,开启“推测解码”(speculative decoding)后,单次请求的生成速度中位数从 51 token/秒提升到了 86 token/秒。不过,这也导致可用于处理并发请求的内存空间有所减少。需要注意的是,这只是针对生成任务的基准测试结果,并不意味着代码审查的速度能提升 70%。

如果这是你的实验室,你会如何分配推理、构建和代理任务,以充分利用现有的这些机器?你会优先做出什么调整?为什么?



分类