Making inference work
Routing a request to an independently operated node that can actually run the requested model, and getting a result back.
Research
The KRXY research question, how model answers are evaluated, what a second Raspberry Pi changed, and the difference between distributed inference and distributed learning.
Directions
Inference now runs on two physical nodes, and answers are measured. Learning across machines is a separate, harder question and is labelled as such.
Routing a request to an independently operated node that can actually run the requested model, and getting a result back.
Checking whether replies are correct and complete under rules fixed in advance, instead of choosing a model by size, speed or the fact that it runs.
Whether many small, different machines can share work and help train one model despite stale updates, slow links and nodes that disappear. A first attempt to split one answer across two Pis failed its validation.
Two physical nodes · Part 6
A second, CPU-only Raspberry Pi joined on 28 and 29 October 2026. Every figure here is copied from the published article.
The question
What changes when a second, differently equipped Raspberry Pi joins? Node 02 had no Hailo accelerator. If the scheduler matched deployments rather than hardware names, it should still accept a CPU job for the same pinned model.
Conditions
Before the comparison
28 October 2026: Node 02 stopped answering on the local network while the 3B model file was being copied. A later boot recorded an ext4 orphan-cleanup message, consistent with an unclean unmount. The cause was not established. While Node 02 was offline, requests were still served by Node 01.
| Deployment | Runtime | Node 01 | Node 02 |
|---|---|---|---|
| Qwen2.5 1.5B Instruct, compiled HEF | hailo-ollama | Available | No Hailo hardware |
| Qwen2.5 1.5B Instruct, Q4_K_M GGUF | llama.cpp | Available | Available when CPU service ready |
| Qwen2.5 3B Instruct, Q4_K_M GGUF | llama.cpp | Available | Brought up for the two-node tests |
| Configuration | Mean compute | Mean client wait |
|---|---|---|
| Node 01 only | 83.755 s | 87.427 s |
| Node 02 only | 82.639 s | 86.367 s |
| Both nodes available | 83.349 s per job | 86.406 s per job |
| Label | Value | Note |
|---|---|---|
| One request | 5.9 tokens/s | Caller's view of one 512-token request, about 86 to 88 s of client wall time |
| Two overlapping | 12.2 tokens/s | Batch wall throughput of two requests, 1,024 output tokens in an 83.9 s span |
Source: Building KRXY, Part 6. Published record, one session, not independently reproduced.
How to read it
Two overlapping jobs finished in roughly the wall time of one, about twice the batch throughput. A single answer did not get faster: each request still took around 83 s of compute on whichever Pi ran it.
All 36 requests ended at the 512-token limit, so they measure a fixed output budget, not 36 completed contact forms. In a separate 1,024-token comparison the stylish page finished naturally after 882 output tokens. Node 01 took about 148.9 s of compute and Node 02 about 145.7 s.
Cooling made the comparison fairer, not faster. Node 01 averaged 83.779 s on 28 October and 83.755 s on 29 October.
Splitting one answer
failed experimentAn opt-in test gave markup and styling to separate child jobs. They overlapped by about 27.9 s. The assembled page was missing the expected .contact-submit CSS selector, and a repair job did not produce a valid result. The repair added about 111 s, and the whole task took about 153 s, slower than one node producing the complete page.
Thermal readings
What Part 6 does not claim
Model evaluation
What Part 5 compared, under which conditions, and what the results do not cover. Every figure here is copied from the published article.
Why answers are measured
Part 4 could deliver a request to the right model. It could not say whether the reply was any good. Parameter count, speed and the fact that a model runs on the hardware are not evidence of a correct answer, so Part 5 compares the answers themselves.
Method
A run sends the same cases to each selected deployment, stores the returned text with its settings, and records pass, fail or review. When the scoring rules were corrected, the stored answers were not overwritten. The promotion rule was written before the hold-out answers were read.
Conditions
| Deployment | Role | Runtime | Passes | Failures | Median node execution time |
|---|---|---|---|---|---|
| Qwen2.5 3B Instruct, CPU | Candidate | llama.cpp on the Pi CPU | 14 | 6 | 8.496 s |
| Qwen2.5 1.5B, CPU GGUF | Control | llama.cpp on the Pi CPU | 12 | 4 | 3.623 s |
| Qwen2.5 1.5B, Hailo | Default | Hailo accelerator | 7 | 13 | 6.756 s |
Source: Building KRXY, Part 5. Published record, automated verdicts, not independently reproduced.
| Label | Value | Note |
|---|---|---|
| 3B on CPU | 8.496 s | Candidate |
| 1.5B on CPU | 3.623 s | Control |
| 1.5B on Hailo | 6.756 s | Default |
Source: Building KRXY, Part 5. Published record, automated verdicts, not independently reproduced.
Promotion rule for the 3B candidate
The 3B candidate was not promoted. The default stayed on Hailo, and the 3B deployment remained selectable as a candidate. A larger model improved some answers and was still the wrong default under the criteria chosen for this project.
Earlier comparison, 25 October 2026
12 synthetic tasks per deployment, one repetition, scored again after the rules were corrected without overwriting the stored answers.
| Deployment | Pass | Fail | Review |
|---|---|---|---|
| Qwen2.5 1.5B, CPU GGUF | 7 | 3 | 2 |
| Qwen2.5 1.5B, Hailo | 2 | 9 | 1 |
Weaknesses found
Limitations
What it does not show, and what comes next
These results say nothing about distributed learning or execution across machines. No training was run and there was no second provider. The next step named in Part 5 is a second Raspberry Pi without the Hailo accelerator, to test the compatibility and scheduling rules from Part 4. Part 6 records that node; see two physical nodes above.
Read Part 5Method
The working question is whether useful intelligence can be spread across machines that are cheap, different from one another, and free to disappear.
That question has two layers.
The first is operational. A coordinator asks what a node can run, sends it a job it is actually able to execute, and accepts a result. The journal describes the start of that path on one Raspberry Pi: an identity that survives reboot, a heartbeat, and a scheduler that withdraws a node when it cannot run the requested model.
Between those two layers sits a narrower question: when a job reaches a model, is the answer any good? Part 5 records the first stored evaluations. The same synthetic tasks were sent to a Hailo deployment and two CPU deployments on the one Pi, and each answer received a pass, fail or review verdict under rules written down in advance. A model that runs is not assumed to be suitable, and a larger model is not assumed to be better. Those checks describe answer quality on specific tasks. They say nothing about whether a network of machines can learn.
Part 6 moves the operational question onto two physical nodes. A second Raspberry Pi without the Hailo accelerator ran the same pinned CPU builds, and the scheduler placed independent requests on both. Two overlapping 3B jobs finished in about the wall time of one, roughly twice the batch throughput, while each answer took as long as before. An attempt to split one answer into parts for the two nodes failed its validation and took longer. That is evidence about inference capacity, not about learning.
The second is scientific. Can the same kind of network take part in learning, not only in serving a model someone else trained? Learning has to cope with stale updates, partial failure, narrow links, and hardware that does not match. A speedup on one workload would still be a workload-specific result. It would not prove a general advantage over centralised training.
No numbered multi-node training result is published here. Draft experiment identifiers are held in the administration archive until a repository artifact or a later journal entry supports them. Publishing a form does not validate an experiment.
Evidence
Every hardware note, model profile and experiment carries one of these statuses.
01
Published record
Described in a published journal entry or attached report. The claim is limited to what that source says.
02
Measured, not independently validated
Numbers were recorded, but nobody outside the project has reproduced them.
03
Awaiting repository evidence
Held back. Never shown publicly until code, logs or a report are attached.
04
Exploratory
Early notes and questions. Useful context, not a result.