Internals
How layers are split
When a room starts a model, one device becomes the model host and deals the layers. For speed (the default) fills the fastest devices first. By memory gives every computer a share.
Which device hosts the model, and which devices get which layers. A model is a stack of layers (64 on Qwen 3.8 27B, 40 on Qwen 3.6 35B MoE); when someone presses Start, the model host deals them out, one contiguous range per device.
| Mode | What it does | When to use it |
|---|---|---|
| For speed (default) | Fills the fastest devices first, each up to the memory it lends. Devices that aren’t needed join to ask. | Almost always. Fewer devices means fewer network hops per token. |
| By memory | Every computer gets layers in proportion to the memory it lends. | When you want every computer to take part, or to compare with older runs. |
Pick a mode
Section titled “Pick a mode”Room settings → Model → Layer split, then press Re-deal the layers (cached layers reload in seconds). Or add ?split=memory or ?split=speed to the page address of the device that will host the model: it is read there, not on the device that created the room.
Which device is the model host
Section titled “Which device is the model host”The model host holds the embedding, the output head and the draft layer, samples every token and runs the Code agent. So it should be the strongest device, whoever pressed Start. The room picks it in this order:
- A device with WebGPU.
- A computer before a phone.
- The most memory lent.
- Then the lowest device id, so every screen picks the same one.
Then GPU speed can change the pick. Each device times a GPU memory copy when the page loads (a 64 MB copy, best of 5 passes). A device of the same kind hosts instead when it copies memory at least 1.5× as fast as the memory pick and lends at least half as much memory. Two tabs on the same GPU, or two identical machines, keep the pick by memory.
In a DGX Spark (GB10) + M5 Max room, the Mac copies at about 390 GB/s and the GB10 at about 190, so the Mac hosts. That made the MoE’s speculative decoding 20–39% faster and plain decoding 9–11% faster.
The device that created the room still introduces new devices. Only the model work moves.
For speed
Section titled “For speed”A token visits every device that holds layers, in order, and comes back to the host. Each device adds its compute time for its layers plus one network hop. So For speed:
- orders devices by measured milliseconds per layer, fastest first;
- gives each one as many layers as its memory holds, until the model is dealt;
- leaves the rest out. They stay in the room and can ask questions.
The host always keeps at least one layer.
Before the first answer, nothing is measured yet. Then fewer hops win: the host and the biggest computers fill first. An unmeasured phone counts as 20× slower than an unmeasured computer, so a phone only gets the layers the computers can’t hold (why).
After an answer, the host knows each device’s milliseconds per layer. Re-deal to use them. The Re-deal button says “re-deal to put the layers on the fastest devices (measured on the answers so far)”.
If the devices together can’t hold the model, the leftover layers are spread over every device in proportion to what it lends.
By memory
Section titled “By memory”Every computer gets layers in proportion to what it lends, and at least one. Phones get no layers while the computers can hold the whole model. They join as ask-only guests. Add ?phonelayers=1 to deal phones layers anyway.
Examples
Section titled “Examples”These deals come from running the room’s own planner on a 40-layer model (the 35B MoE). “Holds” is how many layers fit in the memory each device lends.
| Room | Host | Desktop | Phone |
|---|---|---|---|
| Host holds 30, desktop 30, phone 2, nothing measured yet | layers 1–30 | layers 31–40 | asks only |
| Same room, desktop measured 2× faster per layer than the host | layers 1–10 | layers 11–40 | asks only |
| Host holds 20, desktop 15, phone 2 (the computers can’t hold 40) | layers 1–22 | layers 23–38 | layers 39–40 |
| Room | Host | Desktop | Phone |
|---|---|---|---|
| Host holds 30, desktop 30, phone 2 | layers 1–20 | layers 21–40 | asks only |
Same room with ?phonelayers=1 |
layers 1–20 | layers 21–39 | layer 40 |
What it changes
Section titled “What it changes”A room is not faster than its fastest device; it runs models that don’t fit on one. Each extra device in the chain costs about 3.5–4 ms per token even on a perfect network, plus its network latency. Measured rooms, with and without a phone holding layers, are on Benchmarks.
Memory counted per layer
Section titled “Memory counted per layer”A layer’s size includes its share of the KV cache at the room’s context length. A longer context (?ctx=) makes each layer bigger, so fewer fit on each device. An int8 KV cache (?kv=q8) makes it smaller. The host’s own share is what it lends minus the embedding, the output head and the draft layer. See URL options.