Skip to main content

max / makenotwork

sando: update MakeMachine hardware BOM (Threadripper Pro + 512 GB) Switches MM hardware target from Threadripper 7960X + RTX 6000 to Threadripper Pro 7975WX on WRX90D8-2L/2T with 512 GB ECC RDIMM and 2× 4 TB Gen5 NVMe. Total ~\$10.5K including A1 GPU. Dual-use as Sando host + EveryCycle dev box; cross-linked to the EveryCycle roadmap. todo.md line updated to point at the new plans/mm-hardware-bom.md spec rather than carrying the BOM inline.
Author: Max J. <87768334+MaxJMath@users.noreply.github.com> · 2026-05-24 21:06 UTC
Commit: d7530d5351868b2061ba4d4130faf61d3cf986f0
Parent: 2b6537b
2 files changed, +92 insertions, -1 deletion
@@ -0,0 +1,91 @@
1 + # MakeMachine Hardware BOM
2 +
3 + Settled 2026-05-23. Top-of-line host platform; GPUs are fungible and live on the EveryCycle GPU thread (see `~/hardware/everycycle/docs/roadmap.md`).
4 +
5 + The substrate is built once and kept stable; GPU experimentation happens above it without revisiting motherboard, CPU, or RAM.
6 +
7 + ## Component list
8 +
9 + | Component | Choice | Approx cost | Notes |
10 + |---|---|---|---|
11 + | CPU | AMD Threadripper Pro 7975WX | $3,900 | 32 cores, 5.3 GHz boost, 8-channel DDR5. Same memory controller and PCIe lanes as bigger SKUs; cores past ~32 starve on memory bandwidth for inference. |
12 + | Motherboard | ASRock Rack WRX90D8-2L/2T | $1,200 | 7× PCIe 5.0 ×16, 8 DIMM slots, **ASPEED AST2600 BMC (OpenBMC-friendly)**, dual 10 GbE, 4× M.2 + 4× SlimSAS. |
13 + | RAM | 8× 64 GB DDR5-5600 ECC RDIMM (512 GB total) | $2,500 | One DIMM per channel — 2 DIMMs per channel forces DDR5 down to ~4400 MT/s on WRX90, costing ~20% memory bandwidth (real impact on CPU-offload layers). Brand: Micron or Hynix off the board QVL. |
14 + | Storage 1 | 4 TB Gen5 NVMe (Samsung 9100 Pro or Crucial T705) | $600 | ZFS root pool: OS, models, Sando state, logs. |
15 + | Storage 2 | 4 TB Gen5 NVMe (same) | $600 | **Raw XFS kv-scratch.** Not ZFS — ZFS caps Gen5 throughput; scratch is by definition disposable. EveryCycle uses this for kv-cache overflow. |
16 + | PSU | 2000 W Titanium-class (Super Flower Leadex Titanium or equivalent) | $600 | Headroom for any GPU combination the loose-parts experimentation hits. |
17 + | Chassis | 4U rackmount with ≥4 dual-slot GPU bays (Sliger CX4712 or similar) | $400 | Matches the eventual EveryCycle reference inference box; rackable from day one. |
18 + | CPU cooler | Silverstone XE360-TR5 (air) or Noctua NH-U14S TR5-SP6 | $200 | Air, not AIO — pump failure on a 24/7 box is worse than fan failure. |
19 + | Case fans | 6× 140 mm Noctua industrial | $200 | Front-to-back airflow; GPUs in a 4U breathe through these. |
20 + | Boot GPU | Nvidia GT 1030 (low-profile) | $80 | WRX90 has no iGPU; need a tiny card for console/boot. Also used as console GPU when datacenter cards (no display output) are installed. GT 710 originally specced but effectively EOL retail in 2026; GT 1030 is the current floor. Alternative: skip entirely if WRX90 BMC serial-over-LAN proves reliable. |
21 + | **Host subtotal** | | **~$10,280** | Before any compute GPU. |
22 +
23 + ## First compute GPU (Thread A1)
24 +
25 + | Component | Choice | Approx cost | Notes |
26 + |---|---|---|---|
27 + | GPU | 1× Nvidia Tesla P40 | $200 | 24 GB GDDR5, Pascal (cc 6.1). On-thesis: Pascal is the next architecture facing CUDA-legacy transition. |
28 + | Cooling adapter | 3D-printed or commercial fan shroud for P40 | $25 | Server card; passive cooling needs chassis airflow OR a strapped-on fan. |
29 + | Power adapter | EPS 8-pin to PCIe (or proper EPS routing) | $10 | P40 uses CPU-style 8-pin, not standard PCIe 8-pin. |
30 + | **GPU subtotal at A1** | | **~$235** | |
31 +
32 + ## Total
33 +
34 + | | |
35 + |---|---|
36 + | Host platform | ~$10,280 |
37 + | First GPU (A1) | ~$235 |
38 + | **MakeMachine v0 (assembled, runnable)** | **~$10,515** |
39 +
40 + Budget originally specced at $14–16K for the previous spec. Net savings: ~$4–5K. The savings are the GPU experimentation budget for advancing the GPU thread through A4–A5 over time.
41 +
42 + ## BIOS settings worth confirming at first boot
43 +
44 + - **Above 4G Decoding: enabled.** Required for datacenter cards with large BARs (Tesla P40, MI50, etc.).
45 + - **Resizable BAR: enabled.** Same reason.
46 + - **IOMMU: enabled.** Required for podman + CDI GPU passthrough.
47 + - **SR-IOV: as needed.** Not critical at A1; revisit at A5.
48 + - **Memory speed: DDR5-5600 (JEDEC).** Not pushed past spec.
49 + - **PCIe lane bifurcation: leave default initially; revisit for multi-GPU configurations.**
50 +
51 + ## Why this spec, summarized
52 +
53 + - **Threadripper Pro WRX90 platform** chosen over consumer TRX50 for the 7× PCIe 5.0 ×16 slots and the AST2600 BMC. EveryCycle's `bmc-agent` crate needs a real BMC to talk to.
54 + - **512 GB RAM** lets a 405B Q4 model fit fully in RAM if ever wanted; the immediate need is comfortable headroom for kv-cache experiments.
55 + - **Two Gen5 NVMes with different filesystems** because ZFS root is the right answer for the OS and model store, but ZFS would cap Gen5 bandwidth on the kv-scratch where bandwidth is the whole point.
56 + - **2000 W PSU** is sized for the worst-case 4-GPU configuration on the GPU thread, not for A1 alone.
57 + - **4U rackmount chassis** because it doubles as a prototype of the eventual EveryCycle reference appliance form factor.
58 +
59 + ## Sourcing notes
60 +
61 + Most of the spine is specialist channels; Microcenter covers the commodity parts.
62 +
63 + | Part | Channel |
64 + |---|---|
65 + | TR Pro 7975WX | Newegg, ShopBLT, Provantage |
66 + | WRX90D8-2L/2T | ASRock Rack direct, ShopBLT (longest lead — order first) |
67 + | DDR5-5600 ECC RDIMM (Micron/Hynix off board QVL) | Nemix, ServerSupply, Newegg |
68 + | Sliger CX4712 | Sliger direct (~6 wk historical lead). Fallback: Rosewill RSV-L4500U from Newegg if waiting is unacceptable. |
69 + | Tesla P40 + EPS-to-PCIe adapter + fan shroud | eBay |
70 + | 2× 4 TB Gen5 NVMe (9100 Pro / T705) | Microcenter |
71 + | PSU | Microcenter if Super Flower Leadex Titanium 2000 W in stock; otherwise Seasonic PRIME TX-1600 is the MC-reliable alternative (sufficient for A1–A3, marginal at A4 4-GPU). |
72 + | Noctua NF-A14 industrialPPC-3000 fans | Microcenter |
73 + | NH-U14S TR5-SP6 cooler | Noctua direct or Newegg; Microcenter rarely stocks |
74 + | GT 1030 boot GPU, paste, cables, M.2 heatsinks | Microcenter |
75 +
76 + Suggested order of operations: board first (longest lead) → CPU + RAM kit together (QVL match) → chassis → Microcenter run for commodity parts → P40 last (cheapest, most fungible).
77 +
78 + ## Open considerations (not blocking purchase)
79 +
80 + - **PSU redundancy.** Single 2000 W Titanium is fine for v0. Dual-redundant CRPS (e.g. FSP Twins) is the server-class move for v1.
81 + - **Cooler headroom.** NH-U14S TR5-SP6 is adequate for the 7975WX's 350 W TDP, not generous. XE360-TR5 (listed alt) gives more headroom for sustained all-core + GPU host load. Both are air.
82 + - **Boot GPU skip.** If WRX90 BMC serial-over-LAN proves reliable, GT 1030 line item is removable and a slot is reclaimed.
83 + - **kv-scratch PLP.** Consumer 9100 Pro / T705 have no power-loss protection. Fine for disposable scratch; revisit if EveryCycle ever checkpoints kv-cache through it.
84 +
85 + ## What this BOM deliberately does not include
86 +
87 + - **Multiple compute GPUs at purchase time.** Each GPU thread milestone is a discrete add; advancing the thread is its own decision moment.
88 + - **Liquid cooling.** More maintenance overhead than a single-operator shop should carry.
89 + - **Optane / SLC drives.** Optane is discontinued; Gen5 TLC is the right answer now.
90 + - **128-core CPU.** Memory-bandwidth-starved for inference; ~$6K extra for no inference gain.
91 + - **A second NIC card.** The 2× 10 GbE onboard is enough for v0.
M sando/todo.md +1 -1
@@ -32,7 +32,7 @@ Hardware and base provisioning. None of the remote-deploy work below matters unt
32 32
33 33 **Platform decision: MM runs Mountaineer.** MM is the first real Mountaineer deployment and Sando is its first real sysop helper (principle 14). Hetzner prod stays on its current distro for now; the Mountaineer-for-prod question is deferred at least a year. If MM-on-Mountaineer ever blocks an MNW deploy for more than a day, fall back to Ubuntu on MM — capture the trigger in `plans/mm-platform-fallback.md` before flipping the install.
34 34
35 - - [ ] Purchase MakeMachine hardware (Threadripper 7960X + RTX PRO 6000 Blackwell + 256 GB ECC + Gen5 NVMe; ~$14-16K per `project_inference_stack.md`).
35 + - [ ] Purchase MakeMachine hardware per `plans/mm-hardware-bom.md` (Threadripper Pro 7975WX + WRX90D8-2L/2T + 512 GB ECC RDIMM + 2× 4 TB Gen5 NVMe; ~$10.5K including A1 GPU). Dual-use as Sando host + EveryCycle dev box — see `~/hardware/everycycle/docs/roadmap.md` for the EveryCycle side.
36 36 - [ ] Install Mountaineer (ZFS root, s6+s6-rc init, nushell, podman). Use the latest Dull Edge build available, or hand-roll from `side_projects/mountaineer/` if no release has shipped yet.
37 37 - [ ] Write `plans/mm-platform-fallback.md`: explicit trigger conditions for re-imaging MM with Ubuntu, plus the swap-in procedure (which env files, which binaries, which directories to preserve).
38 38 - [ ] Join MM to tailnet; allocate a stable hostname and record in `_meta/infra_tailnet.md`.