Ember Compute / Projects / WDMA
Project · Research concept
WDMA
Wireless Direct Memory Access. Sharded inference over the network you already have: a mixture-of-experts model bigger than any one machine, split by layer across the machines in the building, served from a web page, and built to survive those machines coming and going. The weights stay where they are. The activations move.
Capacity is the wall, and the room already holds it
Mixture-of-experts models changed what "big" costs. A 235B to 670B-class open model must be fully resident somewhere, but only a few experts fire per token, so a few percent of the weights actually move. Capacity is the lever; bandwidth is almost beside the point.
No consumer machine holds that much. The clusters that do are built on fabrics designed for dense training, where every parameter moves every step. That fabric is the wrong tool for sparse inference, and it is the reason the largest open models live in datacenters even though the per-token work would fit in an office.
Meanwhile a home or an office already contains hundreds of gigabytes of memory, spread across a laptop, a workstation, a mini PC and a storage box, most of it idle most of the time, all of it on one network. WDMA is the proposal that this pool of machines is the machine, and that a web page is how you use it.
Three rules
Weights never move per token. Activations do.
Each expert lives on one machine and runs where its weights are. What crosses the network is a hidden state: a few kilobytes. An expert's weights are tens of megabytes; those cross a link only to fill a cache, never on the token path.
Pipeline first. Experts second.
Split the model by layer across machines, so a token crosses the network once per machine, not once per layer. Each machine holds a block of layers and every expert in them. Expert-level placement is the second tier: for experts that do not fit a machine's block, and for the hottest ones, which the orchestrator keeps at home.
Direct-memory semantics, in software, on the network you have.
Each node registers an input buffer, its experts and an output buffer; the orchestrator writes and reads them with as little of the host stack in the path as the link allows. Consumer network hardware has no RDMA, so on day one this is pre-registered buffers and polling, not hardware. The name is the destination. A wired LAN is where it starts; wireless is the mode it has to survive, not the premise.
The budget is round-trips, and the baseline is a disk
Back-of-envelope for a 235B-class model with about 22B active parameters at 4-bit, around 100 layers and 8 active experts per layer, split across four machines. Measured numbers replace these the moment they exist.
| Per token | Bytes read from memory | Bytes over the network | Round-trips |
|---|---|---|---|
| Dense 70B, one machine | ~35 GB, all of it | none | 0 |
| MoE, one machine, fits in RAM | ~11 GB, the active experts | none | 0 |
| MoE, one machine + NVMe offload | ~11 GB; each miss reads ~10 MB from the drive | none | 0 |
| WDMA, pipeline over 4 machines | ~11 GB, each machine its own block | 4 hidden states, ~50 KB | ~4 |
| WDMA, expert-parallel over 4 machines | ~11 GB, each expert on its host | ~750 calls × ~16 KB ≈ 12 MB | ~100 |
Neither network figure is a bandwidth problem. The round-trip count is the whole story, which is why the pipeline comes first.
| Link, round-trip at p99 | Topology | Network time per token | Bound on token rate |
|---|---|---|---|
| Wired LAN, ~0.3 ms | pipeline, 4 hops | ~1 ms | not the limit |
| Wi-Fi, quiet room, ~3 ms | pipeline, 4 hops | ~12 ms | ~80 tok/s |
| Wi-Fi, under load, ~20 ms | pipeline, 4 hops | ~80 ms | ~12 tok/s |
| Wi-Fi, under load, ~20 ms | expert-parallel, ~100 round-trips | ~2 s | ~0.5 tok/s |
Network time only; compute and memory bandwidth add on top. Wi-Fi at p99 under load is commonly 10 to 50 ms, not the 1 to 3 ms of a quiet benchmark, and power-save on battery adds beacon-interval stalls. A layer waits for its slowest call; a token waits for its slowest hop.
| 120B-class MoE at 4-bit, ~3 GB active per token | One user | Many users | Added hardware |
|---|---|---|---|
| One machine, 16 GB GPU, experts paged from NVMe | ~3 tok/s | does not scale | $0 |
| Four machines, one 16 GB GPU each, sharded by layer over a wired LAN | ~30 to 50 tok/s | every stage serves a different request | $0 |
What sharding buys, back-of-envelope: disk bandwidth against memory bandwidth, a 20 to 50× gap. One user is no faster on the pool than on a single machine that could hold the model. The pool's advantage is that no such machine exists in the building, and that its stages serve several people at once.
Everything is about round-trips
- Memory map and placementEvery node registers a region: size, bandwidth, power state, link quality. The full model sits cold on a storage box as the source of truth; everything resident anywhere is a cache over it, and placement is the cache policy.
- Pipeline by layer, balanced by memory and linkBlocks of layers are assigned to machines so that each block fits its machine's RAM with every expert resident, and the slowest link carries the fewest hops. The orchestrator takes the first block, the KV cache for it, and the web page.
- Co-activation locality for the expert tierWhere a block's experts do not fit, the router's own statistics decide which stay resident and which go to a neighbor. Experiment zero (below) says this buys little on a load-balanced model: routing is nearly uniform by training design. Kept as a lever only for models whose routing is concentrated.
- A deadline on every hop, and a stand-in for the call that is lateEach remote call carries a deadline derived from the link's measured p99. When a node misses it, the layer substitutes a local stand-in: the next-best resident expert, a shared expert, or a low-rank sketch of the missing one. Output quality softens for that token; the model never stalls. Degradation is a measured, governed quantity, not a crash.
- Amortize the round-tripsSpeculative decoding verifies several draft tokens in one pass through the pipeline, so one set of hops can pay for more than one token. Batching does the same for throughput when several people share the pool, which is the case WDMA is best at.
- MembershipMachines come and go. A laptop leaves the office at 6 pm and its block is re-placed from the source of truth onto whatever remains. The model is a population, not a file, and it keeps answering while it rebalances.
Frontier-class open weights on the machines you already own
An office
Thirty desks of idle memory become one pool, used from a browser by everyone on the floor. Many users at once is where the aggregate bandwidth shows, so this is the strongest case. No rack, no subscription, no data egress.
A household
A 600B-class open model across a laptop, a workstation and a storage box, used from every phone in the house through a web page. Single-digit tokens per second for one person, shown honestly.
A fleet
Robots and cameras on one site sharing a pool over the air, each carrying its own attention and the experts it uses most. The sparse tail lives on the site, not in the cloud. This is the one case where wireless is the premise, and it goes last.
Three experiments, in order, and what kills it
Declared before anything is built, so the result cannot be bent to fit. The threshold for "usable" is set in writing before the first run.
- Experiment zero: no network, one machine. Done, 2026-10-15, results below.Run an open mixture-of-experts model over text from several domains and log its router. Measure how concentrated expert use is per domain, how large a resident hot set gets a 90, 95 and 99 percent hit rate, and how much quality is lost when a given fraction of remote expert calls is replaced by a local stand-in. Kill: if hot sets are not concentrated and a stand-in at a few percent miss rate costs measurable quality, the expert tier is dead and WDMA is a pipeline only.
- Experiment one: two machines, one link, existing toolsThe same model pipelined across two consumer machines with tools that already exist, over a wired link and then a wireless one, against two controls: the model on one machine in RAM where it fits, and the model on one machine paging experts from NVMe where it does not. Tokens per second at p99, not at the median. Kill: if the pipeline over the LAN cannot beat NVMe offload on one machine, WDMA is dead and this page says so.
- Experiment two: the WDMA layer itselfOnly then build placement, deadlines, stand-ins and membership on top of the pipeline that already works, and measure what each one adds. Anything that does not move the p99 or the quality curve is removed.
Placement buys little. Degradation is cheap.
Run 2026-10-15 on one consumer GPU in 397 seconds. Model: OLMoE-1B-7B (Apache-2.0), 64 experts, top-8, 16 mixture-of-experts layers. Five held-out domains, about 60,000 tokens each: encyclopedia, Python code, grade-school math, chat, news. The first half of each domain fits the hot sets, the second half is scored.
Routing is nearly uniform
Normalised entropy of expert use runs from 0.87 on code to 0.99 on chat. The busiest quarter of the experts takes 36 to 64 percent of the calls. Per-domain hot sets barely overlap each other. This is the load-balancing loss doing exactly what it was trained to do.
90 percent needs 56 of 64 resident
When the orchestrator does not know the domain, catching 90 percent of calls locally needs 56 of 64 experts resident per layer; 95 percent needs 56 to 64. Half the experts resident still sends 30 to 46 percent of calls remote.
A few percent of misses costs a few percent
With half the experts resident, replacing 5 percent of remote calls with the best resident expert costs 1 to 3 percent perplexity; 10 percent costs 1 to 6; 25 percent costs 1 to 17. Code is nearly immune. The curve is gentle up to about a tenth of calls.
| Hit rate, global fit | H=8 | H=16 | H=32 | H=48 | H=56 |
|---|---|---|---|---|---|
| Encyclopedia | 0.16 | 0.33 | 0.60 | 0.83 | 0.93 |
| Code | 0.33 | 0.47 | 0.69 | 0.86 | 0.94 |
| Math | 0.29 | 0.46 | 0.70 | 0.88 | 0.96 |
| Chat | 0.12 | 0.26 | 0.54 | 0.80 | 0.92 |
H = experts resident per layer, out of 64. Hit rate = share of the router's top-8 selections on held-out text that land in the resident set, when the set was fit on all domains together.
| Perplexity ÷ baseline | 1 % | 5 % | 10 % | 25 % | 50 % |
|---|---|---|---|---|---|
| H=8 (84 % remote) | 1.00 | 1.02 | 1.05 | 1.22 | 2.38 |
| H=16 (67 % remote) | 1.00 | 1.02 | 1.04 | 1.16 | 1.79 |
| H=32 (40 % remote) | 1.00 | 1.01 | 1.03 | 1.10 | 1.30 |
| H=48 (17 % remote) | 1.00 | 1.01 | 1.01 | 1.03 | 1.09 |
Columns = share of remote calls that miss their deadline and get a resident stand-in. Mean over the five domains; the worst single domain at H=32 and 25 % is news at 1.16, the best is code at 1.04.
MoE serving, local networks, or a building full of idle memory.
The runtime that learns while it serves on one machine. WDMA is the other half: serving a model bigger than any one machine.