# Introducing RAIV: Redundant Array of Inexpensive Videocards

> Source: <https://www.flyingpenguin.com/introducing-raiv-redundant-array-of-inexpensive-videocards/>
> Published: 2026-09-04 08:44:38+00:00

Since https://Wirken.AI supports open weights, the question comes up often how big can it go. Since I lived and worked through the early 1990s of DEC Storageworks RAID, pioneered in the early 1980s as disk shadowing on the HSC50/HSC70, my mind immediately went to repeating the past.

Cheap datacenter GPUs are being sold used in volume. Pooling them for local inference is well documented, so we just need to think about the redundancy. This is a build with a mirror and a spare, the way we built disk shelves in the old days.

**Introducing the Redundant Array of Inexpensive Videocards (RAIV). **

*AI dance all day
AI dance all night, all weights
local, all is right*

**Parts**

Who knows where prices will go, but here we are in September 2026. The MI50 figure is [Pillitteri’s August survey](https://pasqualepillitteri.it/en/news/10761/used-server-gpu-local-llm-prices-europe); the board and CPU combo is the going rate from online markets.

| Qty | Item | Unit | Line | Note |
|---|---|---|---|---|
| 7 | AMD Instinct MI50 32GB, used | €220 | €1,540 | 6 in two mirrored groups of 3, plus 1 spare. Verify 32GB on each. |
| 1 | Supermicro H12SSL-i + EPYC 7302, used | €900 | €900 | 5 x16 + 2 x8 PCIe 4.0 slots. Any 7002-series EPYC is fine. |
| 4 | 16GB DDR4-3200 ECC RDIMM, used | €30 | €120 | 64GB. More only if you offload to CPU. |
| 1 | 2TB NVMe | €120 | €120 | Model storage. |
| 2 | 1,200W ATX PSU, 80+ Gold | €180 | €360 | Each card needs two 8-pin. Split cards across supplies. Add2PSU adapter to sync. |
| 7 | PCIe 4.0 x16 riser cable, 30cm | €35 | €245 | Double-width cards will not sit in adjacent slots. Risers space them out. |
| 7 | MI50 fan shroud + 40mm server fan | €15 | €105 | 3D-printed shrouds are on Printables; Delta or Sunon fans. |
| 1 | Open GPU frame, 8 slot | €60 | €60 | Mining frame. A 4U case works if you have the rack depth. |
| 1 | Fan controller, PWM, 8 channel | €25 | €25 | Server fans at full speed are unpleasant. |
| 1 | CPU cooler, SP3 | €50 | €50 | |
Total |
ca. €3,530 |
96GB usable per mirror, 192GB across both, 32GB spare. |

For comparison, one DGX Spark is 128GB for about $4,000. Two RTX PRO 6000 cards are 192GB for around $17,000.

**Quality Test Purchase**

Before you get a pack, try getting one card and testing it. Run *rocm-smi –showmeminfo vram* and confirm 32GB. Load a model that fills it and run for an hour. It’s a problem in the market that 16GB cards are listed as 32GB with modified firmware. When one passes, then you can feel better about getting six more from the same seller.

**Board Setup**

BIOS: enable Above 4G Decoding and Resizable BAR. Without them the cards do not enumerate; [one builder replaced a motherboard](http://wtarreau.blogspot.com/2025/12/amd-radeon-instinct-mi50-32gb-best-ai.html) over this. Give each card an x16 or x8 slot. A card on a one-lane riser holds weights but cannot process a prompt at usable speed.

Given this isn’t fancy cooling, limit each card to about 150W with *rocm-smi –setpoweroverdrive*. Generation speed is limited by memory bandwidth, not compute, so this limit will affect little.

**Software**

Ubuntu 24.04. Do not install the ROCm SDK, since AMD in their vendor wisdom doesn’t support it; the [ROCm 7.0 changelog](https://rocm.docs.amd.com/en/docs-7.0.0/release/changelog.html) reads painfully “Removed support for AMD Instinct MI50 and MI60.” Use one of the [gfx906 llama.cpp containers](https://hub.docker.com/r/mxxm/llama-mi50) that bundle the ROCm 7.2 runtime with kernels built for the card. The host needs the amdgpu driver and your user in the video group. The Vulkan build of llama.cpp is the fallback. Recent Ollama releases omit the gfx906 files; skip it.

**Mirror and Spare**

One model across all seven cards is a stripe. If a card fails, the process exits, and the model no longer fits. Ruh roh.

Split into two groups of three. Run two *llama-server* processes, one per group, each with its own copy of the model, on two ports. A 100B-class model at four-bit fits in 96GB with room for context. Put nginx or Caddy in front with a health check on */health* and failover between backends.

The seventh card stays installed, powered, and idle. When a card in group A fails, the proxy serves from B. Move the spare into A’s group, restart A. One in-flight conversation is lost. Dance, dance, dance.

**Test**

Load both groups. Start a long generation on A. Pull the power lead on one of A’s cards. Time until the proxy serves from B. Restart A with the spare and time the reload. Record both.

Run all seven cards at full load for an hour and monitor the host: CPU temperature, VRM temperature, PCIe errors in dmesg.

Fun fact, in 1997 I built a fat Sun workstation to run a hospital’s massive StorageWorks shelf (fronting a huge robot arm that fed tapes from a room full of them) and the whole thing shut down under load from the Sparc (CPU) overheating, not from the disks. Ah, the good old days.

I found no published failover timings for a build like this, in any language. Let’s do this and publish some. Share and share alike.
