Text Generation
Transformers
Safetensors
English
Hindi
llama
text-to-json
home-automation
tiny-model
from-scratch
experimental
edge-ai
conversational
text-generation-inference
Instructions to use sraivante/superfast-tiny-home-robotics-json-1m-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use sraivante/superfast-tiny-home-robotics-json-1m-v1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="sraivante/superfast-tiny-home-robotics-json-1m-v1") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("sraivante/superfast-tiny-home-robotics-json-1m-v1") model = AutoModelForCausalLM.from_pretrained("sraivante/superfast-tiny-home-robotics-json-1m-v1", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use sraivante/superfast-tiny-home-robotics-json-1m-v1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "sraivante/superfast-tiny-home-robotics-json-1m-v1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "sraivante/superfast-tiny-home-robotics-json-1m-v1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/sraivante/superfast-tiny-home-robotics-json-1m-v1
- SGLang
How to use sraivante/superfast-tiny-home-robotics-json-1m-v1 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "sraivante/superfast-tiny-home-robotics-json-1m-v1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "sraivante/superfast-tiny-home-robotics-json-1m-v1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "sraivante/superfast-tiny-home-robotics-json-1m-v1" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "sraivante/superfast-tiny-home-robotics-json-1m-v1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use sraivante/superfast-tiny-home-robotics-json-1m-v1 with Docker Model Runner:
docker model run hf.co/sraivante/superfast-tiny-home-robotics-json-1m-v1
Add verified Raspberry Pi 5 edge performance measurements
Browse filesRecord actual 16 GB Pi 5 latency, RAM and correctness with frozen evaluation inputs, raw per-call measurements, runtime hashes and reproducible settings. Preserve weights and existing training data.
- .gitattributes +1 -0
- README.md +270 -255
- edge_benchmarks/rpi5-2026-09-26/REPORT.md +74 -0
- edge_benchmarks/rpi5-2026-09-26/benchmark.py +268 -0
- edge_benchmarks/rpi5-2026-09-26/bundle_manifest.json +479 -0
- edge_benchmarks/rpi5-2026-09-26/cases/poc1_latency.json +102 -0
- edge_benchmarks/rpi5-2026-09-26/cases/poc1_quality.json +0 -0
- edge_benchmarks/rpi5-2026-09-26/environment.lock.txt +30 -0
- edge_benchmarks/rpi5-2026-09-26/provenance.json +257 -0
- edge_benchmarks/rpi5-2026-09-26/readings.csv +0 -0
- edge_benchmarks/rpi5-2026-09-26/reproduce.py +21 -0
- edge_benchmarks/rpi5-2026-09-26/results/poc1_t1.json +0 -0
- edge_benchmarks/rpi5-2026-09-26/results/poc1_t4.json +0 -0
- edge_benchmarks/rpi5-2026-09-26/runtime_identity.json +119 -0
- edge_benchmarks/rpi5-2026-09-26/temperature_latency.png +3 -0
- release_manifest.json +82 -24
.gitattributes
CHANGED
|
@@ -1,3 +1,4 @@
|
|
| 1 |
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 1 |
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
edge_benchmarks/rpi5-2026-09-26/temperature_latency.png filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,255 +1,270 @@
|
|
| 1 |
-
---
|
| 2 |
-
license: apache-2.0
|
| 3 |
-
library_name: transformers
|
| 4 |
-
pipeline_tag: text-generation
|
| 5 |
-
language:
|
| 6 |
-
- en
|
| 7 |
-
- hi
|
| 8 |
-
tags:
|
| 9 |
-
- text-to-json
|
| 10 |
-
- home-automation
|
| 11 |
-
- tiny-model
|
| 12 |
-
- from-scratch
|
| 13 |
-
- experimental
|
| 14 |
-
- edge-ai
|
| 15 |
-
datasets:
|
| 16 |
-
- sraivante/home-commands-json-v1
|
| 17 |
-
---
|
| 18 |
-
|
| 19 |
-
# Superfast Tiny Home Robotics JSON 1M v1
|
| 20 |
-
|
| 21 |
-
A **1,094,240-parameter model trained from scratch** to turn short English and
|
| 22 |
-
Romanized Hindi/Hinglish home commands into `activity`, `subject`, `action` JSON.
|
| 23 |
-
It has **3 decoder layers** and **4.38 MB of FP32 weights**. It is an
|
| 24 |
-
text-to-command parser for use as small local models and edge inference.
|
| 25 |
-
|
| 26 |
-
**Observed limitation:** it has no reject/no-op class and can turn
|
| 27 |
-
`Do not turn on the fan` into an `ON` command. The examples below only return data; they execute no
|
| 28 |
-
device actions. Native-script Hindi is not supported by the reported results.
|
| 29 |
-
|
| 30 |
-
| Release | Value |
|
| 31 |
-
| --- | --- |
|
| 32 |
-
| Author / publisher | sraivante |
|
| 33 |
-
| Release date | 2026-09-25 |
|
| 34 |
-
| Version | `v1.0.2` |
|
| 35 |
-
| Related dataset | [home-commands-json-v1](https://huggingface.co/datasets/sraivante/home-commands-json-v1/tree/v1.0.2) |
|
| 36 |
-
| Architecture | Llama-style causal decoder, randomly initialized; no pretrained base weights |
|
| 37 |
-
| Output space | 30 commands: 10 device types × ON / OFF / STATUS |
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
```bash
|
| 80 |
-
pip install
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
``
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
`
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
The
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: transformers
|
| 4 |
+
pipeline_tag: text-generation
|
| 5 |
+
language:
|
| 6 |
+
- en
|
| 7 |
+
- hi
|
| 8 |
+
tags:
|
| 9 |
+
- text-to-json
|
| 10 |
+
- home-automation
|
| 11 |
+
- tiny-model
|
| 12 |
+
- from-scratch
|
| 13 |
+
- experimental
|
| 14 |
+
- edge-ai
|
| 15 |
+
datasets:
|
| 16 |
+
- sraivante/home-commands-json-v1
|
| 17 |
+
---
|
| 18 |
+
|
| 19 |
+
# Superfast Tiny Home Robotics JSON 1M v1
|
| 20 |
+
|
| 21 |
+
A **1,094,240-parameter model trained from scratch** to turn short English and
|
| 22 |
+
Romanized Hindi/Hinglish home commands into `activity`, `subject`, `action` JSON.
|
| 23 |
+
It has **3 decoder layers** and **4.38 MB of FP32 weights**. It is an
|
| 24 |
+
text-to-command parser for use as small local models and edge inference.
|
| 25 |
+
|
| 26 |
+
**Observed limitation:** it has no reject/no-op class and can turn
|
| 27 |
+
`Do not turn on the fan` into an `ON` command. The examples below only return data; they execute no
|
| 28 |
+
device actions. Native-script Hindi is not supported by the reported results.
|
| 29 |
+
|
| 30 |
+
| Release | Value |
|
| 31 |
+
| --- | --- |
|
| 32 |
+
| Author / publisher | sraivante |
|
| 33 |
+
| Release date | 2026-09-25 |
|
| 34 |
+
| Version | `v1.0.2` |
|
| 35 |
+
| Related dataset | [home-commands-json-v1](https://huggingface.co/datasets/sraivante/home-commands-json-v1/tree/v1.0.2) |
|
| 36 |
+
| Architecture | Llama-style causal decoder, randomly initialized; no pretrained base weights |
|
| 37 |
+
| Output space | 30 commands: 10 device types × ON / OFF / STATUS |
|
| 38 |
+
|
| 39 |
+
<!-- rpi5-measurements -->
|
| 40 |
+
## Raspberry Pi 5 edge-device performance
|
| 41 |
+
|
| 42 |
+
Measured **2026-09-26** on a **Raspberry Pi 5 Model B, 16 GB RAM**, Debian 13.2/aarch64, Python 3.13.5. Measurement update: `edge-rpi5-20260926`; weights and training data are unchanged.
|
| 43 |
+
|
| 44 |
+
| Threads | Median ms | p95 ms | p99 ms | Serial requests/s | Process RSS MiB | CPU °C min–mean–max | Timed correct |
|
| 45 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 46 |
+
| 1 | 87.95 | 99.85 | 100.80 | 11.20 | 398.83 | 55.1–57.1–59.5 | 500/500 |
|
| 47 |
+
| 4 | 96.34 | 111.38 | 128.25 | 10.05 | 399.16 | 60.0–65.6–68.3 | 500/500 |
|
| 48 |
+
|
| 49 |
+
Batch 1; 20 warmups and 500 timed calls per row, cycling over 10 frozen model-specific inputs. **Each timed reading has a matching CPU-temperature sample**, captured immediately afterward outside the latency timer; the table shows min–mean–max temperature. RSS includes Python/runtime overhead. Timings include local text-to-output inference and exclude loading, SSH/HTTP, speech recognition and actuation. Throughput is serial reciprocal mean. Runs used one and four CPU/BLAS threads sequentially. These synthetic workloads do not establish cross-model superiority or robot-control reliability.
|
| 50 |
+
|
| 51 |
+
On-device quality check: **72/284** on existing frozen stress/regression suite, constrained decoding only. See the report for per-category results and previously observed limitations.
|
| 52 |
+
|
| 53 |
+
[Full Pi methodology, temperature plot and reproduction](edge_benchmarks/rpi5-2026-09-26/REPORT.md) · [Every latency/temperature reading](edge_benchmarks/rpi5-2026-09-26/readings.csv) · [Raw measurements](edge_benchmarks/rpi5-2026-09-26/results) · [Versioned evaluation data](https://huggingface.co/datasets/sraivante/home-commands-json-v1/tree/edge-rpi5-20260926/edge_benchmarks/rpi5-2026-09-26).
|
| 54 |
+
<!-- /rpi5-measurements -->
|
| 55 |
+
|
| 56 |
+
## Edge-device use and measured speed
|
| 57 |
+
|
| 58 |
+
The small weights make this an edge-inference research candidate. The new Raspberry Pi measurements are recorded above. The following table preserves the earlier Intel desktop results. Power, sustained thermal behavior and end-to-end robot performance remain unmeasured.
|
| 59 |
+
|
| 60 |
+
Host: **Intel Core i7-1360P**, Windows 11, Python 3.13.14, CPU PyTorch 2.12.0,
|
| 61 |
+
Transformers 4.56.2. Batch size 1, FP32, 20 warmups and 200 timed requests per
|
| 62 |
+
run. Timing includes tokenization and constrained JSON generation, and excludes
|
| 63 |
+
HTTP, speech recognition, sensors, ROS and actuation.
|
| 64 |
+
|
| 65 |
+
| CPU threads | Median latency | p95 latency | p99 latency | Serial throughput |
|
| 66 |
+
| --- | ---: | ---: | ---: | ---: |
|
| 67 |
+
| 1 | **17.35 ms/command** | **22.31 ms** | 28.46 ms | 55.30 commands/s |
|
| 68 |
+
| 4 | 19.80 ms/command | 24.70 ms | 26.90 ms | 49.72 commands/s |
|
| 69 |
+
|
| 70 |
+
Weights occupy **4,380,048 bytes (4.38 MB / 4.18 MiB)**. The complete desktop
|
| 71 |
+
Python/PyTorch process used approximately **440 MiB resident RAM**, with roughly
|
| 72 |
+
442 MiB peak working set; this includes substantial runtime overhead. Weight
|
| 73 |
+
size is not total deployment RAM. Libraries took 6.79 seconds to import;
|
| 74 |
+
weight loading after import took 0.013 seconds with filesystem caches potentially
|
| 75 |
+
warm. No core pinning or power-mode control was used.
|
| 76 |
+
|
| 77 |
+
Reproduce on 64-bit Raspberry Pi/ARM Linux from a downloaded repository:
|
| 78 |
+
|
| 79 |
+
```bash
|
| 80 |
+
python -m pip install -r requirements.txt psutil
|
| 81 |
+
python assessment/benchmark_device.py --model . --threads 1 --repeats 2000 --out pi-1thread.json
|
| 82 |
+
python assessment/benchmark_device.py --model . --threads 4 --repeats 2000 --out pi-4threads.json
|
| 83 |
+
```
|
| 84 |
+
|
| 85 |
+
Run these sequentially, then compare p95/p99, memory and sustained thermal
|
| 86 |
+
behavior on the actual target. This release has no validated quantized or
|
| 87 |
+
compiled edge-runtime export. [Full desktop benchmark records](assessment/robotics_edge_v1/desktop_cpu_1thread.json)
|
| 88 |
+
and [detailed assessment](assessment/robotics_edge_v1/REPORT.md) are included.
|
| 89 |
+
|
| 90 |
+
## Quick start: JSON command output
|
| 91 |
+
|
| 92 |
+
Install PyTorch for your platform and the tested Transformers/tokenizer versions:
|
| 93 |
+
|
| 94 |
+
```bash
|
| 95 |
+
pip install "torch>=2.6,<3" "transformers==4.56.2" "tokenizers==0.22.1" "huggingface_hub>=0.35,<2"
|
| 96 |
+
```
|
| 97 |
+
|
| 98 |
+
Download the versioned repository and use the included inference helper:
|
| 99 |
+
|
| 100 |
+
```python
|
| 101 |
+
import sys
|
| 102 |
+
from huggingface_hub import snapshot_download
|
| 103 |
+
|
| 104 |
+
folder = snapshot_download("sraivante/superfast-tiny-home-robotics-json-1m-v1", revision="v1.0.2")
|
| 105 |
+
sys.path.insert(0, folder)
|
| 106 |
+
from tiny_json_llm.infer import JsonCommandModel
|
| 107 |
+
|
| 108 |
+
model = JsonCommandModel(folder, device="cpu")
|
| 109 |
+
print(model.predict("Please turn on the fan"))
|
| 110 |
+
# {'action': 'ON', 'activity': 'air', 'subject': 'fan'}
|
| 111 |
+
|
| 112 |
+
print(model.predict("pankha band karo"))
|
| 113 |
+
# {'action': 'OFF', 'activity': 'air', 'subject': 'fan'}
|
| 114 |
+
|
| 115 |
+
print(model.predict("check the water pump status"))
|
| 116 |
+
# {'action': 'STATUS', 'activity': 'water', 'subject': 'motor'}
|
| 117 |
+
```
|
| 118 |
+
|
| 119 |
+
The helper uses a token trie of the 30 training-observed JSON commands. This
|
| 120 |
+
ensures membership in the command set, **not semantic correctness or permission
|
| 121 |
+
to actuate**. Empty/overlong input raises `ValueError`; unsupported short input
|
| 122 |
+
can still return an unrelated command.
|
| 123 |
+
|
| 124 |
+
Command-line use after downloading the repository:
|
| 125 |
+
|
| 126 |
+
```bash
|
| 127 |
+
python -m tiny_json_llm.infer --model . --device cpu --input "turn on the light"
|
| 128 |
+
```
|
| 129 |
+
|
| 130 |
+
## Standard Transformers usage: unconstrained generation
|
| 131 |
+
|
| 132 |
+
The release includes a chat template that exactly reproduces the training
|
| 133 |
+
framing for **one user message**. It deliberately rejects conversation history
|
| 134 |
+
and system prompts, which were not trained as supported tasks.
|
| 135 |
+
|
| 136 |
+
```python
|
| 137 |
+
import torch
|
| 138 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 139 |
+
|
| 140 |
+
repo = "sraivante/superfast-tiny-home-robotics-json-1m-v1"
|
| 141 |
+
tokenizer = AutoTokenizer.from_pretrained(repo, revision="v1.0.2")
|
| 142 |
+
model = AutoModelForCausalLM.from_pretrained(repo, revision="v1.0.2").eval()
|
| 143 |
+
inputs = tokenizer.apply_chat_template(
|
| 144 |
+
[{"role": "user", "content": "Please turn on the fan"}],
|
| 145 |
+
add_generation_prompt=True, return_tensors="pt", return_dict=True,
|
| 146 |
+
)
|
| 147 |
+
with torch.inference_mode():
|
| 148 |
+
result = model.generate(
|
| 149 |
+
**inputs, max_new_tokens=32, do_sample=False,
|
| 150 |
+
pad_token_id=tokenizer.pad_token_id,
|
| 151 |
+
eos_token_id=tokenizer.eos_token_id,
|
| 152 |
+
)
|
| 153 |
+
print(tokenizer.decode(result[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))
|
| 154 |
+
```
|
| 155 |
+
|
| 156 |
+
This second example is raw generation; JSON validity is not constrained. The
|
| 157 |
+
context is 128 tokens including framing and output. Keep input short and
|
| 158 |
+
validate both generated JSON and its intended meaning before downstream use.
|
| 159 |
+
|
| 160 |
+
## Output schema and scope
|
| 161 |
+
|
| 162 |
+
```json
|
| 163 |
+
{"action":"ON","activity":"air","subject":"fan"}
|
| 164 |
+
```
|
| 165 |
+
|
| 166 |
+
Actions: `ON`, `OFF`, `STATUS`.
|
| 167 |
+
|
| 168 |
+
| Subject | Activity |
|
| 169 |
+
| --- | --- |
|
| 170 |
+
| fan | air |
|
| 171 |
+
| light | light |
|
| 172 |
+
| motor | water |
|
| 173 |
+
| speaker | music |
|
| 174 |
+
| geyser | heating |
|
| 175 |
+
| cooler | cooling |
|
| 176 |
+
| washing_machine | laundry |
|
| 177 |
+
| tv | entertainment |
|
| 178 |
+
| ac | cooling |
|
| 179 |
+
| sprinkler | garden |
|
| 180 |
+
|
| 181 |
+
`motor` means the dataset's **water-pump motor**, not an arbitrary robot motor.
|
| 182 |
+
The schema has no speed, position, distance, duration, device instance, room,
|
| 183 |
+
conditional execution, multi-action or reject field. No chat, reasoning,
|
| 184 |
+
native-script Hindi, perception, motion planning or robotic-control capability
|
| 185 |
+
is claimed.
|
| 186 |
+
|
| 187 |
+
## Evaluation
|
| 188 |
+
|
| 189 |
+
All results below use the same weights identified in `weights_sha256.json`.
|
| 190 |
+
The original test data is templated and overlaps the training distribution.
|
| 191 |
+
The later stress test was frozen before inference and is a small manually
|
| 192 |
+
authored diagnostic, not a representative sample or safety certification.
|
| 193 |
+
|
| 194 |
+
| Evaluation | Correct / total | Exact JSON accuracy |
|
| 195 |
+
| --- | ---: | ---: |
|
| 196 |
+
| Original held-out test, constrained generation | 104,723 / 104,723 | 100% |
|
| 197 |
+
| Original stratified raw-generation diagnostic | 1,816 / 1,816 | 100% |
|
| 198 |
+
| Later supported-command challenges | 68 / 140 | 48.6% |
|
| 199 |
+
| Challenges with no source-phrase overlap | 48 / 120 | 40.0% |
|
| 200 |
+
| New paraphrase wording | 14 / 30 | 46.7% |
|
| 201 |
+
| Hinglish variations | 8 / 30 | 26.7% |
|
| 202 |
+
| Typos / ASR-style text perturbations | 6 / 30 | 20.0% |
|
| 203 |
+
| Contrastive negation | 10 / 20 | 50.0% |
|
| 204 |
+
|
| 205 |
+
The later supported-command accuracies were identical with constrained and raw
|
| 206 |
+
generation; both produced valid JSON for all 140 supported-command challenges.
|
| 207 |
+
Native-script Hindi passed 0/10 diagnostic cases. Four empty/overlong input
|
| 208 |
+
guards passed. Neither decoding mode produced an explicit reject/no-op response
|
| 209 |
+
on 130 requests requiring abstention. Constrained mode emitted a known command
|
| 210 |
+
for all 130, including **33 ON/OFF commands**.
|
| 211 |
+
|
| 212 |
+
Concrete failures:
|
| 213 |
+
|
| 214 |
+
- `Do not turn on the fan.` → fan `ON`.
|
| 215 |
+
- `Turn the fan on, not off.` → fan `OFF`.
|
| 216 |
+
- `thank you` → water-pump motor `ON`.
|
| 217 |
+
|
| 218 |
+
The 284 challenge cases, all 568 predictions across both modes, overlap audit,
|
| 219 |
+
metrics and reproducible evaluation scripts are included. The challenge data
|
| 220 |
+
is also versioned in the linked dataset's `robotics_edge_v1` configuration.
|
| 221 |
+
If these cases guide future training, reserve fresh tests for the next release.
|
| 222 |
+
|
| 223 |
+
## Training and reproducibility
|
| 224 |
+
|
| 225 |
+
Source: user-supplied `home-commands-3.4M.jsonl`, 3,458,816 rows. Normalized-input
|
| 226 |
+
deduplication removed 2,340,890 rows, leaving 1,117,926 examples. Phrase-family
|
| 227 |
+
grouping reduced case/punctuation/politeness leakage; other paraphrase overlap
|
| 228 |
+
can remain. The split is stratified by command class across 2,868 phrase families.
|
| 229 |
+
|
| 230 |
+
| Split | Examples | Phrase families |
|
| 231 |
+
| --- | ---: | ---: |
|
| 232 |
+
| Train | 910,114 | 2,292 |
|
| 233 |
+
| Validation | 103,089 | 288 |
|
| 234 |
+
| Test | 104,723 | 288 |
|
| 235 |
+
|
| 236 |
+
Tokenizer: training-only byte-level BPE, vocabulary 1,024. Architecture: hidden
|
| 237 |
+
width 160, intermediate width 432, 5 attention heads of dimension 32, 3 layers,
|
| 238 |
+
RoPE, RMSNorm, SwiGLU, tied embeddings/output, context 128.
|
| 239 |
+
|
| 240 |
+
Training completed on NVIDIA A100-SXM4-80GB: one epoch, 1,778 updates and
|
| 241 |
+
22,655,302 nonpadding prediction tokens. Objective: full-sequence causal
|
| 242 |
+
next-token loss. AdamW LR 0.001, betas (0.9, 0.95), weight decay 0.1, 5% warmup,
|
| 243 |
+
cosine decay to 10% of peak LR, gradient clipping 1, microbatch 128, effective
|
| 244 |
+
batch 512, BF16 computation and FP32 weights/optimizer. Seed: 20260925.
|
| 245 |
+
Validation response NLL on a fixed 4,096-example subset selected the best model;
|
| 246 |
+
best and final exports are identical at step 1,778.
|
| 247 |
+
|
| 248 |
+
The 20.70 training-tokens/parameter ratio is a **Chinchilla-inspired sizing
|
| 249 |
+
heuristic**, not evidence of compute optimality. This small, highly templated
|
| 250 |
+
corpus is outside the original experiments' scale and diversity.
|
| 251 |
+
|
| 252 |
+
The linked dataset includes the exact source, prepared train/validation/test
|
| 253 |
+
JSONL, tokenizer/memmap training bundle and the manifest used in training.
|
| 254 |
+
See `training/` for source code, run summary and logs, and `release_manifest.json`
|
| 255 |
+
for source, model, package and artifact hashes. No extra fine-tuning occurred.
|
| 256 |
+
|
| 257 |
+
## License, provenance and attribution
|
| 258 |
+
|
| 259 |
+
Apache License 2.0 for this original release material; see [LICENSE](https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v1/blob/v1.0.2/LICENSE)
|
| 260 |
+
and [NOTICE](https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v1/blob/v1.0.2/NOTICE). **Copyright (c) 2026 sraivante** applies to original user
|
| 261 |
+
contributions and original selection/arrangement. Third-party ownership and
|
| 262 |
+
license terms remain unchanged. The source was supplied by the publisher; its
|
| 263 |
+
upstream generation process and historical source revision were not provided
|
| 264 |
+
or independently verified. The source SHA identifies the exact received file.
|
| 265 |
+
No external corpus or pretrained base weights were added in this run.
|
| 266 |
+
|
| 267 |
+
Packaging adds a one-user chat template and corrects tokenizer context metadata
|
| 268 |
+
to 128; token IDs, vocabulary and learned weights are unchanged. The historical
|
| 269 |
+
assessment and training manifest are preserved. Their pre-publication packaging
|
| 270 |
+
notes are superseded by this release's cards, license and authorization record.
|
edge_benchmarks/rpi5-2026-09-26/REPORT.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Raspberry Pi 5 measurements — Tiny Home Robotics JSON 1M v1
|
| 2 |
+
|
| 3 |
+
Measured on 2026-09-26; measurement revision `edge-rpi5-20260926`. The model weights and training data were not changed.
|
| 4 |
+
|
| 5 |
+
Hardware: **Raspberry Pi 5 Model B Rev 1.1**, 15.84 GiB OS-visible RAM (16 GB model), four CPU cores, aarch64, Debian 13.2, kernel `6.12.47+rpt-rpi-2712`. Python 3.13.5. The device's governor and library versions are recorded in each JSON result. Cooling and power-supply model were not inspected.
|
| 6 |
+
|
| 7 |
+
## Measured performance
|
| 8 |
+
|
| 9 |
+
| Threads | Median ms | p95 ms | p99 ms | Serial requests/s | Process RSS MiB | CPU °C min–mean–max | Timed correct |
|
| 10 |
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 11 |
+
| 1 | 87.95 | 99.85 | 100.80 | 11.20 | 398.83 | 55.1–57.1–59.5 | 500/500 |
|
| 12 |
+
| 4 | 96.34 | 111.38 | 128.25 | 10.05 | 399.16 | 60.0–65.6–68.3 | 500/500 |
|
| 13 |
+
|
| 14 |
+
Each row is a separate sequential process: batch 1, 20 warmups, 500 timed requests cycling over 10 frozen synthetic inputs. Timing covers the adapter's complete local text-to-output call; it excludes model loading, SSH/network transfer, HTTP/UI, speech recognition, and actuation. RSS includes Python and runtime overhead. Peak RSS is Linux VmHWM sampled after the timed loop and includes imports/initialization. Serial requests/s is 1000 divided by mean latency; it is not concurrent-serving throughput. These model-specific input sets do not establish a controlled cross-model speed ranking.
|
| 15 |
+
|
| 16 |
+
Runtime: FP32 PyTorch; greedy generation constrained to the 30 training-observed JSON commands.
|
| 17 |
+
|
| 18 |
+
Thread counts set PyTorch/BLAS intra-op limits; PyTorch inter-op is one. No CPU affinity or power mode was changed. Actual loaded thread-pool metadata is in the raw results.
|
| 19 |
+
|
| 20 |
+
The benchmark runs left existing host services running. CPU temperature is read immediately after **every timed inference**, outside the latency timer, with per-call UTC timestamps. Sensor reads add a small gap between requests. The table reports the minimum, mean and maximum of those 500 matched temperature readings per row. The sensor types are recorded in each JSON. Thread configurations ran one then four without a controlled cooldown; temperatures depend on run order and background load. Start/end snapshots ranged from 54.5 to 67.2 °C; observed firmware flags: `throttled=0x0`. This short run is not a power or long-duration stability measurement.
|
| 21 |
+
|
| 22 |
+

|
| 23 |
+
|
| 24 |
+
[Download all matched latency/temperature readings](readings.csv). Mean latency, import/load times and peak RSS are in the raw result JSON.
|
| 25 |
+
|
| 26 |
+
## Command correctness on this device
|
| 27 |
+
|
| 28 |
+
| Diagnostic group | Correct / cases |
|
| 29 |
+
| --- | ---: |
|
| 30 |
+
| supported/literal_control | 30/30 |
|
| 31 |
+
| supported/paraphrase | 14/30 |
|
| 32 |
+
| supported/hinglish | 8/30 |
|
| 33 |
+
| supported/typos_and_asr_style | 6/30 |
|
| 34 |
+
| supported/contrastive_negation | 10/20 |
|
| 35 |
+
| unclaimed_language/native_hindi_diagnostic | 0/10 |
|
| 36 |
+
| reject/prohibition | 0/20 |
|
| 37 |
+
| reject/quoted_or_hypothetical | 0/10 |
|
| 38 |
+
| reject/delayed_or_conditional | 0/10 |
|
| 39 |
+
| reject/unsupported_device | 0/20 |
|
| 40 |
+
| reject/robotics_or_unrepresentable_parameter | 0/20 |
|
| 41 |
+
| reject/ambiguous_or_multi_step | 0/20 |
|
| 42 |
+
| reject/out_of_domain | 0/20 |
|
| 43 |
+
| reject/noise_or_instruction_injection | 0/10 |
|
| 44 |
+
| guard/input_guard | 4/4 |
|
| 45 |
+
|
| 46 |
+
existing frozen stress/regression suite, constrained decoding only. Previously inspected synthetic suite; not a new blind holdout. Original per-case source-overlap metadata retained.
|
| 47 |
+
|
| 48 |
+
Timed-correct counts above describe the repeated ten-input latency set, not an independent accuracy estimate. Recorded inference errors: 0 across the timed runs. No model retraining, output correction, host action or device actuation was performed.
|
| 49 |
+
|
| 50 |
+
## Artifact and dataset identity
|
| 51 |
+
|
| 52 |
+
- Published model tested: [`sraivante/superfast-tiny-home-robotics-json-1m-v1@cf325b380e8ed560a729ec2de09f878a8a917259`](https://huggingface.co/sraivante/superfast-tiny-home-robotics-json-1m-v1/tree/cf325b380e8ed560a729ec2de09f878a8a917259). All tested runtime assets were checked against this revision.
|
| 53 |
+
- Learned weight SHA-256: `7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3` (4,380,048 bytes).
|
| 54 |
+
- Associated preserved training dataset: [`sraivante/home-commands-json-v1@8479d12161767c5aabd7dfc097e6f6c41790201a`](https://huggingface.co/datasets/sraivante/home-commands-json-v1/tree/8479d12161767c5aabd7dfc097e6f6c41790201a). Existing source/split hashes and historical provenance remain in that snapshot. No fine-tuning was performed for this measurement update.
|
| 55 |
+
- The [versioned evaluation inputs and Pi predictions](https://huggingface.co/datasets/sraivante/home-commands-json-v1/tree/edge-rpi5-20260926/edge_benchmarks/rpi5-2026-09-26) record the new diagnostic snapshot. `provenance.json` records its hashes, counts, source revisions, and historical identity limitations.
|
| 56 |
+
- [Runtime identity check](runtime_identity.json); [raw per-call records](results); [exact environment](environment.lock.txt).
|
| 57 |
+
|
| 58 |
+
## Reproduce
|
| 59 |
+
|
| 60 |
+
Use a 64-bit Raspberry Pi in an isolated environment. Download this model repository at `edge-rpi5-20260926`, then run:
|
| 61 |
+
|
| 62 |
+
```bash
|
| 63 |
+
python3 -m venv .venv
|
| 64 |
+
. .venv/bin/activate
|
| 65 |
+
python -m pip install -r edge_benchmarks/rpi5-2026-09-26/environment.lock.txt
|
| 66 |
+
python edge_benchmarks/rpi5-2026-09-26/reproduce.py --threads 1
|
| 67 |
+
python edge_benchmarks/rpi5-2026-09-26/reproduce.py --threads 4
|
| 68 |
+
```
|
| 69 |
+
|
| 70 |
+
The helper downloads the pinned runtime files above, checks SHA-256, stages the exact case files, and invokes the included `benchmark.py`. It refuses to report a non-Pi host as a Pi result. Downloading requires network access; timed inference runs offline. The original run's full bundle hash differs from the per-model reproduction manifest; the original hash is retained inside each result.
|
| 71 |
+
|
| 72 |
+
## License and limitations
|
| 73 |
+
|
| 74 |
+
Copyright (c) 2026 sraivante for original benchmark code, evaluation material and selection/arrangement, under Apache License 2.0. Third-party ownership and licenses remain unchanged. Synthetic/regression diagnostics do not establish real-user or robot-control reliability. Existing model-specific limitations still apply; latency is not a safety or end-to-end performance guarantee.
|
edge_benchmarks/rpi5-2026-09-26/benchmark.py
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Batch-one inference benchmark for five frozen workspace projects.
|
| 2 |
+
|
| 3 |
+
No executor, host adapter, server, MQTT, or GPIO code is imported or called.
|
| 4 |
+
Copyright (c) 2026 sraivante. Licensed under Apache License 2.0.
|
| 5 |
+
"""
|
| 6 |
+
from __future__ import annotations
|
| 7 |
+
|
| 8 |
+
import argparse
|
| 9 |
+
from collections import defaultdict
|
| 10 |
+
from datetime import datetime, timezone
|
| 11 |
+
import hashlib
|
| 12 |
+
import importlib.metadata
|
| 13 |
+
import json
|
| 14 |
+
import os
|
| 15 |
+
from pathlib import Path
|
| 16 |
+
import platform
|
| 17 |
+
import statistics
|
| 18 |
+
import subprocess
|
| 19 |
+
import sys
|
| 20 |
+
import time
|
| 21 |
+
|
| 22 |
+
HERE = Path(__file__).resolve().parent
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def digest(path):
|
| 26 |
+
with Path(path).open("rb") as stream:
|
| 27 |
+
return hashlib.file_digest(stream, "sha256").hexdigest()
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def read_text(path):
|
| 31 |
+
try:
|
| 32 |
+
return Path(path).read_text().strip("\x00\n")
|
| 33 |
+
except OSError:
|
| 34 |
+
return None
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def host_state():
|
| 38 |
+
import psutil
|
| 39 |
+
throttled = None
|
| 40 |
+
try:
|
| 41 |
+
throttled = subprocess.check_output(["vcgencmd", "get_throttled"], text=True, timeout=5).strip()
|
| 42 |
+
except (OSError, subprocess.SubprocessError):
|
| 43 |
+
pass
|
| 44 |
+
return {
|
| 45 |
+
"load_average": list(os.getloadavg()) if hasattr(os, "getloadavg") else None,
|
| 46 |
+
"available_ram_bytes": psutil.virtual_memory().available,
|
| 47 |
+
"temperature_c": {p.parent.name: float(p.read_text()) / 1000
|
| 48 |
+
for p in Path("/sys/class/thermal").glob("thermal_zone*/temp")},
|
| 49 |
+
"cpu_frequency_khz": {p.parent.parent.name: int(p.read_text())
|
| 50 |
+
for p in Path("/sys/devices/system/cpu").glob("cpu*/cpufreq/scaling_cur_freq")},
|
| 51 |
+
"throttled": throttled,
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def hardware():
|
| 56 |
+
import psutil
|
| 57 |
+
return {"raspberry_pi_model": read_text("/proc/device-tree/model"),
|
| 58 |
+
"system": platform.system(), "kernel": platform.release(),
|
| 59 |
+
"architecture": platform.machine(), "os_release": read_text("/etc/os-release"),
|
| 60 |
+
"logical_cpus": psutil.cpu_count(), "physical_cpus": psutil.cpu_count(logical=False),
|
| 61 |
+
"ram_bytes": psutil.virtual_memory().total,
|
| 62 |
+
"temperature_sensor_types": {p.parent.name: p.read_text().strip()
|
| 63 |
+
for p in Path("/sys/class/thermal").glob("thermal_zone*/type")},
|
| 64 |
+
"governors": {p.parent.parent.name: p.read_text().strip()
|
| 65 |
+
for p in Path("/sys/devices/system/cpu").glob("cpu*/cpufreq/scaling_governor")}}
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
def memory():
|
| 69 |
+
import psutil
|
| 70 |
+
info = psutil.Process().memory_info()._asdict()
|
| 71 |
+
status = read_text("/proc/self/status") or ""
|
| 72 |
+
for line in status.splitlines():
|
| 73 |
+
if line.startswith("VmHWM:"):
|
| 74 |
+
info["peak_rss"] = int(line.split()[1]) * 1024
|
| 75 |
+
return info
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def temperature():
|
| 79 |
+
return {p.parent.name: float(p.read_text()) / 1000
|
| 80 |
+
for p in Path("/sys/class/thermal").glob("thermal_zone*/temp")}
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
def summary(values):
|
| 84 |
+
ordered = sorted(values)
|
| 85 |
+
def quantile(q):
|
| 86 |
+
rank = (len(ordered) - 1) * q
|
| 87 |
+
lo = int(rank)
|
| 88 |
+
hi = min(lo + 1, len(ordered) - 1)
|
| 89 |
+
return ordered[lo] + (ordered[hi] - ordered[lo]) * (rank - lo)
|
| 90 |
+
return {"n": len(values), "mean": statistics.mean(values), "p50": quantile(.5),
|
| 91 |
+
"p95": quantile(.95), "p99": quantile(.99), "min": min(values), "max": max(values)}
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def load_adapter(key, root, threads):
|
| 95 |
+
start = time.perf_counter()
|
| 96 |
+
if key == "poc1":
|
| 97 |
+
sys.path.insert(0, str(root))
|
| 98 |
+
import torch
|
| 99 |
+
from tiny_json_llm.infer import JsonCommandModel
|
| 100 |
+
torch.set_num_threads(threads)
|
| 101 |
+
torch.set_num_interop_threads(1)
|
| 102 |
+
imports = time.perf_counter() - start
|
| 103 |
+
start = time.perf_counter()
|
| 104 |
+
model = JsonCommandModel(root / "best_model", device="cpu")
|
| 105 |
+
predict = lambda row: model.predict(row["text"])
|
| 106 |
+
params = sum(p.numel() for p in model.model.parameters())
|
| 107 |
+
mode = "FP32 PyTorch; greedy generation constrained to the 30 training-observed JSON commands"
|
| 108 |
+
elif key == "poc2":
|
| 109 |
+
sys.path.insert(0, str(root))
|
| 110 |
+
import engine
|
| 111 |
+
imports = time.perf_counter() - start
|
| 112 |
+
start = time.perf_counter()
|
| 113 |
+
engine.init(str(root / "model"))
|
| 114 |
+
predict = lambda row: json.loads(engine.parse_scored(row["text"])[0])
|
| 115 |
+
params = sum(p.size for p in engine._W.values())
|
| 116 |
+
mode = "FP16 NPZ storage expanded to FP32 NumPy; KV-cached greedy character generation, max_new=170; JSON parsing included, catalog validation excluded"
|
| 117 |
+
elif key == "poc3":
|
| 118 |
+
sys.path.insert(0, str(root))
|
| 119 |
+
from edge_command import Interpreter
|
| 120 |
+
imports = time.perf_counter() - start
|
| 121 |
+
start = time.perf_counter()
|
| 122 |
+
model = Interpreter(str(root))
|
| 123 |
+
predict = lambda row: model.parse(row["text"])
|
| 124 |
+
params = None
|
| 125 |
+
mode = "Standard-library action classifier with rules and read-only SQLite catalog; not an autoregressive LLM"
|
| 126 |
+
elif key == "agent_claude":
|
| 127 |
+
sys.path.insert(0, str(root / "model"))
|
| 128 |
+
from runtime import CommandModel
|
| 129 |
+
imports = time.perf_counter() - start
|
| 130 |
+
start = time.perf_counter()
|
| 131 |
+
model = CommandModel(str(root / "artifacts/final"))
|
| 132 |
+
def predict(row):
|
| 133 |
+
value = model.predict(row["text"])
|
| 134 |
+
return {k: v for k, v in value.items() if k != "_meta"}
|
| 135 |
+
params = sum(p.size for p in model.W.values())
|
| 136 |
+
mode = "NumPy encoder/decoder transformer with grammar constraints; FP32 runtime; includes normalization and JSON conversion"
|
| 137 |
+
elif key == "agent_codex":
|
| 138 |
+
sys.path.insert(0, str(root / "app"))
|
| 139 |
+
from inference import local_model, predict as infer
|
| 140 |
+
imports = time.perf_counter() - start
|
| 141 |
+
start = time.perf_counter()
|
| 142 |
+
local_model()
|
| 143 |
+
predict = lambda row: infer(row["text"], platform=row.get("platform", "pi"), engine="local")
|
| 144 |
+
params = None
|
| 145 |
+
mode = "scikit-learn intent classifier with policy and argument parsing; not an autoregressive LLM; no host execution"
|
| 146 |
+
else:
|
| 147 |
+
raise ValueError(key)
|
| 148 |
+
return predict, params, mode, imports, time.perf_counter() - start
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
def outcome(row, value, error):
|
| 152 |
+
if row.get("match") == "rejection":
|
| 153 |
+
return bool(error or (isinstance(value, dict) and ("error" in value or value.get("action") in {"unknown", "REJECT", "NOOP", "CLARIFY", "ABSTAIN"})))
|
| 154 |
+
if error:
|
| 155 |
+
return False
|
| 156 |
+
if row.get("match") == "subset":
|
| 157 |
+
return isinstance(value, dict) and all(value.get(k) == v for k, v in row["expected"].items())
|
| 158 |
+
return value == row["expected"]
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
def call(predict, row):
|
| 162 |
+
started = time.perf_counter_ns()
|
| 163 |
+
try:
|
| 164 |
+
value, error = predict(row), None
|
| 165 |
+
except (ValueError, KeyError, IndexError) as exc:
|
| 166 |
+
value, error = None, f"{type(exc).__name__}: {exc}"
|
| 167 |
+
elapsed = (time.perf_counter_ns() - started) / 1e6
|
| 168 |
+
return value, error, elapsed
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
def main():
|
| 172 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 173 |
+
parser.add_argument("--model", required=True)
|
| 174 |
+
parser.add_argument("--threads", type=int, default=1, choices=(1, 4))
|
| 175 |
+
parser.add_argument("--repeats", type=int, default=500)
|
| 176 |
+
parser.add_argument("--warmup", type=int, default=20)
|
| 177 |
+
parser.add_argument("--quality", action="store_true")
|
| 178 |
+
parser.add_argument("--allow-nonpi", action="store_true", help="Development checks only, recorded as non-Pi")
|
| 179 |
+
parser.add_argument("--out", type=Path, required=True)
|
| 180 |
+
args = parser.parse_args()
|
| 181 |
+
assert args.repeats >= 20 and args.warmup >= 0
|
| 182 |
+
for name in ("OMP_NUM_THREADS", "OPENBLAS_NUM_THREADS", "MKL_NUM_THREADS", "BLIS_NUM_THREADS", "VECLIB_MAXIMUM_THREADS", "NUMEXPR_NUM_THREADS"):
|
| 183 |
+
os.environ[name] = str(args.threads)
|
| 184 |
+
os.environ["TOKENIZERS_PARALLELISM"] = "false"
|
| 185 |
+
os.environ["HF_HUB_OFFLINE"] = "1"
|
| 186 |
+
host = hardware()
|
| 187 |
+
is_pi = bool(host["raspberry_pi_model"] and "Raspberry Pi" in host["raspberry_pi_model"])
|
| 188 |
+
assert is_pi or args.allow_nonpi, "This run must execute on real Raspberry Pi hardware"
|
| 189 |
+
manifest = json.loads((HERE / "bundle_manifest.json").read_text())
|
| 190 |
+
spec = manifest["models"][args.model]
|
| 191 |
+
# Verify the full runtime and evaluation input before importing any model code.
|
| 192 |
+
for rel, entry in spec["files"].items():
|
| 193 |
+
assert digest(HERE / rel) == entry["sha256"], f"Frozen input differs: {rel}"
|
| 194 |
+
latency_cases = json.loads((HERE / "cases" / f"{args.model}_latency.json").read_text())
|
| 195 |
+
before = host_state()
|
| 196 |
+
memory_before = memory()
|
| 197 |
+
predict, params, mode, import_s, load_s = load_adapter(args.model, HERE / "projects" / args.model, args.threads)
|
| 198 |
+
memory_loaded = memory()
|
| 199 |
+
for i in range(args.warmup):
|
| 200 |
+
call(predict, latency_cases[i % len(latency_cases)])
|
| 201 |
+
samples = []
|
| 202 |
+
for i in range(args.repeats):
|
| 203 |
+
row = latency_cases[i % len(latency_cases)]
|
| 204 |
+
started_utc = datetime.now(timezone.utc).isoformat()
|
| 205 |
+
value, error, elapsed = call(predict, row)
|
| 206 |
+
samples.append({"case_id": row["id"], "elapsed_ms": elapsed,
|
| 207 |
+
"started_utc": started_utc, "temperature_c": temperature(),
|
| 208 |
+
"temperature_sampled_utc": datetime.now(timezone.utc).isoformat(),
|
| 209 |
+
"correct": outcome(row, value, error), "output": value, "error": error})
|
| 210 |
+
if (i + 1) % 100 == 0:
|
| 211 |
+
print(f"{args.model} threads={args.threads}: latency {i + 1}/{args.repeats}", flush=True)
|
| 212 |
+
memory_after_latency, after_latency = memory(), host_state()
|
| 213 |
+
lat = summary([s["elapsed_ms"] for s in samples])
|
| 214 |
+
result = {"created_utc": datetime.now(timezone.utc).isoformat(), "model": args.model,
|
| 215 |
+
"is_raspberry_pi": is_pi, "hardware": host, "environment_before": before,
|
| 216 |
+
"environment_after_latency": after_latency,
|
| 217 |
+
"bundle_manifest_sha256": digest(HERE / "bundle_manifest.json"),
|
| 218 |
+
"benchmark_script_sha256": digest(Path(__file__)), "model_spec": spec,
|
| 219 |
+
"settings": {"threads_requested": args.threads, "batch_size": 1,
|
| 220 |
+
"warmup_requests": args.warmup, "timed_requests": args.repeats,
|
| 221 |
+
"unique_latency_cases": len(latency_cases), "mode": mode,
|
| 222 |
+
"cpu_pinning": False, "power_mode_changed": False},
|
| 223 |
+
"parameters": params, "import_seconds": import_s, "load_seconds_after_import": load_s,
|
| 224 |
+
"latency_ms": lat, "serial_requests_per_second": 1000 / lat["mean"],
|
| 225 |
+
"timed_correct": sum(s["correct"] for s in samples),
|
| 226 |
+
"timed_errors": sum(s["error"] is not None for s in samples),
|
| 227 |
+
"memory_bytes": {"before_runtime_import": memory_before, "after_model_load": memory_loaded,
|
| 228 |
+
"after_latency": memory_after_latency},
|
| 229 |
+
"latency_samples": samples,
|
| 230 |
+
"temperature_measurement": "Linux thermal-zone CPU temperature read immediately after every timed inference, outside the latency timer; start and temperature-read UTC timestamps are retained per call. Sensor reads add a small gap between requests. These samples do not establish power consumption or a long-duration thermal limit.",
|
| 231 |
+
"measurement_scope": "Warm local Python process, full text-to-structured-output call through the specified adapter, serial batch one. Timing excludes SSH, HTTP/UI, model loading, speech recognition, actuation and per-call correctness checks. Small repeated synthetic input set with warm OS/model caches; throughput is reciprocal mean, not concurrent serving. Other host services were left running. No power meter or sustained thermal test; cooling and power-supply model were not inspected."}
|
| 232 |
+
result["software"] = {"python": platform.python_version(), "sqlite": __import__("sqlite3").sqlite_version}
|
| 233 |
+
for package in ("torch", "transformers", "tokenizers", "safetensors", "numpy", "scipy", "scikit-learn", "joblib", "threadpoolctl", "psutil"):
|
| 234 |
+
try:
|
| 235 |
+
result["software"][package] = importlib.metadata.version(package)
|
| 236 |
+
except importlib.metadata.PackageNotFoundError:
|
| 237 |
+
pass
|
| 238 |
+
try:
|
| 239 |
+
from threadpoolctl import threadpool_info
|
| 240 |
+
result["thread_pools"] = [{k: v for k, v in p.items() if k != "filepath"} for p in threadpool_info()]
|
| 241 |
+
except ImportError:
|
| 242 |
+
result["thread_pools"] = []
|
| 243 |
+
if args.quality:
|
| 244 |
+
rows = json.loads((HERE / "cases" / f"{args.model}_quality.json").read_text())
|
| 245 |
+
predictions, groups = [], defaultdict(list)
|
| 246 |
+
for i, row in enumerate(rows):
|
| 247 |
+
value, error, elapsed = call(predict, row)
|
| 248 |
+
ok = outcome(row, value, error)
|
| 249 |
+
predictions.append({**row, "output": value, "error": error, "correct": ok, "elapsed_ms": elapsed,
|
| 250 |
+
"temperature_c": temperature(), "temperature_sampled_utc": datetime.now(timezone.utc).isoformat()})
|
| 251 |
+
groups[row["category"]].append(ok)
|
| 252 |
+
if (i + 1) % 100 == 0:
|
| 253 |
+
print(f"{args.model}: quality {i + 1}/{len(rows)}", flush=True)
|
| 254 |
+
result["quality"] = {"cases": len(rows), "correct": sum(p["correct"] for p in predictions),
|
| 255 |
+
"by_category": {k: {"n": len(v), "correct": sum(v)} for k, v in groups.items()},
|
| 256 |
+
"provenance": spec["quality_provenance"], "predictions": predictions}
|
| 257 |
+
result["environment_after_quality"] = host_state()
|
| 258 |
+
args.out.parent.mkdir(parents=True, exist_ok=True)
|
| 259 |
+
temporary = args.out.with_suffix(".partial.json")
|
| 260 |
+
temporary.write_text(json.dumps(result, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
| 261 |
+
temporary.replace(args.out)
|
| 262 |
+
print(json.dumps({"model": args.model, "threads": args.threads, "latency_ms": lat,
|
| 263 |
+
"rss_mib": memory_after_latency["rss"] / 1024**2,
|
| 264 |
+
"timed_correct": result["timed_correct"], "result": str(args.out)}), flush=True)
|
| 265 |
+
|
| 266 |
+
|
| 267 |
+
if __name__ == "__main__":
|
| 268 |
+
main()
|
edge_benchmarks/rpi5-2026-09-26/bundle_manifest.json
ADDED
|
@@ -0,0 +1,479 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"models": {
|
| 3 |
+
"poc1": {
|
| 4 |
+
"workspace_project": "POC-1",
|
| 5 |
+
"weight_sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3",
|
| 6 |
+
"weight_bytes": 4380048,
|
| 7 |
+
"files": {
|
| 8 |
+
"projects/poc1/tiny_json_llm/data.py": {
|
| 9 |
+
"bytes": 18760,
|
| 10 |
+
"sha256": "b1c6dd1207327bc8b9a325391d60762d419589b900ad1329ed21a13df48bc66b",
|
| 11 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/data.py"
|
| 12 |
+
},
|
| 13 |
+
"projects/poc1/tiny_json_llm/evaluate.py": {
|
| 14 |
+
"bytes": 6317,
|
| 15 |
+
"sha256": "1efd2f862da1fdc6fb17006547de7c53321dbd29aa16c4097daccbfb8dc41e4d",
|
| 16 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/evaluate.py"
|
| 17 |
+
},
|
| 18 |
+
"projects/poc1/tiny_json_llm/infer.py": {
|
| 19 |
+
"bytes": 4260,
|
| 20 |
+
"sha256": "2b5074bce3f07127fa254c4ec62e25c6b8ce58743b937cdd301d7bb05128a5c8",
|
| 21 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/infer.py"
|
| 22 |
+
},
|
| 23 |
+
"projects/poc1/tiny_json_llm/train.py": {
|
| 24 |
+
"bytes": 17277,
|
| 25 |
+
"sha256": "911848ac7816a1a58bbad171a75e1e5e74a9e2790f18492e69d41e0ec4c8ed2a",
|
| 26 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/train.py"
|
| 27 |
+
},
|
| 28 |
+
"projects/poc1/tiny_json_llm/__init__.py": {
|
| 29 |
+
"bytes": 103,
|
| 30 |
+
"sha256": "e8edab0c5d6fc4202a0b3005dfb4009894ed4c06f216c801943a88f88b7653c2",
|
| 31 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/__init__.py"
|
| 32 |
+
},
|
| 33 |
+
"projects/poc1/best_model/allowed_outputs.json": {
|
| 34 |
+
"bytes": 2590,
|
| 35 |
+
"sha256": "317d35bd27a25e6db66deea50112633b63f7eae907178cc7f50f12dd8ad6aba1",
|
| 36 |
+
"workspace_source": "POC-1/publication/model/allowed_outputs.json"
|
| 37 |
+
},
|
| 38 |
+
"projects/poc1/best_model/config.json": {
|
| 39 |
+
"bytes": 682,
|
| 40 |
+
"sha256": "a66629f39ecb44414aefdf78aa947829e37daf6e6a44be8d710e944ec90ef60a",
|
| 41 |
+
"workspace_source": "POC-1/publication/model/config.json"
|
| 42 |
+
},
|
| 43 |
+
"projects/poc1/best_model/generation_config.json": {
|
| 44 |
+
"bytes": 132,
|
| 45 |
+
"sha256": "9b962893b09457be3f8b0d343c8d64d33048443e2e57fbe421cd40d2dec8edf9",
|
| 46 |
+
"workspace_source": "POC-1/publication/model/generation_config.json"
|
| 47 |
+
},
|
| 48 |
+
"projects/poc1/best_model/manifest.json": {
|
| 49 |
+
"bytes": 12618,
|
| 50 |
+
"sha256": "2ead74207a38ad593819da12c52392bad8a273cc62e6842a8278ebffaa561eaa",
|
| 51 |
+
"workspace_source": "POC-1/publication/model/manifest.json"
|
| 52 |
+
},
|
| 53 |
+
"projects/poc1/best_model/model.safetensors": {
|
| 54 |
+
"bytes": 4380048,
|
| 55 |
+
"sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3",
|
| 56 |
+
"workspace_source": "POC-1/publication/model/model.safetensors"
|
| 57 |
+
},
|
| 58 |
+
"projects/poc1/best_model/output_schema.json": {
|
| 59 |
+
"bytes": 797,
|
| 60 |
+
"sha256": "e5c670db2756306cfb58f43e020426a174aef2f60c643ec0cc72920be4aaae86",
|
| 61 |
+
"workspace_source": "POC-1/publication/model/output_schema.json"
|
| 62 |
+
},
|
| 63 |
+
"projects/poc1/best_model/special_tokens_map.json": {
|
| 64 |
+
"bytes": 531,
|
| 65 |
+
"sha256": "eae55585dbdfe3c1875015bd0a96dee1b5103a5ab4ef97797de606fb385ea51d",
|
| 66 |
+
"workspace_source": "POC-1/publication/model/special_tokens_map.json"
|
| 67 |
+
},
|
| 68 |
+
"projects/poc1/best_model/tokenizer.json": {
|
| 69 |
+
"bytes": 54877,
|
| 70 |
+
"sha256": "0e2e4281172d6ff20e5562d8e0df4c796ca6c0a9e1804067e1b62bdefe38317e",
|
| 71 |
+
"workspace_source": "POC-1/publication/model/tokenizer.json"
|
| 72 |
+
},
|
| 73 |
+
"projects/poc1/best_model/tokenizer_config.json": {
|
| 74 |
+
"bytes": 2077,
|
| 75 |
+
"sha256": "66e9e99973752a3b3b6adf621fa1574aa576da1fd2f344b8673196de207da9ad",
|
| 76 |
+
"workspace_source": "POC-1/publication/model/tokenizer_config.json"
|
| 77 |
+
},
|
| 78 |
+
"projects/poc1/best_model/training_metadata.json": {
|
| 79 |
+
"bytes": 1190,
|
| 80 |
+
"sha256": "5fd7ee7df81d8699b853cfa2e33ee70b5ff8172ef8de67b11aee54e8cf73d11f",
|
| 81 |
+
"workspace_source": "POC-1/publication/model/training_metadata.json"
|
| 82 |
+
},
|
| 83 |
+
"projects/poc1/best_model/weights_sha256.json": {
|
| 84 |
+
"bytes": 94,
|
| 85 |
+
"sha256": "0d186660bf35658801dea63222e4de0612c237ba13553569535f5b5077824ba1",
|
| 86 |
+
"workspace_source": "POC-1/publication/model/weights_sha256.json"
|
| 87 |
+
},
|
| 88 |
+
"cases/poc1_quality.json": {
|
| 89 |
+
"bytes": 193903,
|
| 90 |
+
"sha256": "a3e20755d442252731b96f8faff4a9d5b4e4074af130f9b4c9063be5e60504ee"
|
| 91 |
+
},
|
| 92 |
+
"cases/poc1_latency.json": {
|
| 93 |
+
"bytes": 2180,
|
| 94 |
+
"sha256": "157cb10e338b20c09e7c383eb9d5ed1f23984ded1984f32f2d228b65ee8e6700"
|
| 95 |
+
}
|
| 96 |
+
},
|
| 97 |
+
"quality_provenance": {
|
| 98 |
+
"kind": "existing frozen stress/regression suite, constrained decoding only",
|
| 99 |
+
"source": "POC-1\\assessment\\robotics_edge_v1\\cases.jsonl",
|
| 100 |
+
"sha256": "30cb9a6de18cc12cefcbb6e1aac8a29c7371b0f4ea537e516f38d02b3f417d6c",
|
| 101 |
+
"notes": "Previously inspected synthetic suite; not a new blind holdout. Original per-case source-overlap metadata retained."
|
| 102 |
+
},
|
| 103 |
+
"hf": {
|
| 104 |
+
"model": "sraivante/superfast-tiny-home-robotics-json-1m-v1",
|
| 105 |
+
"dataset": "sraivante/home-commands-json-v1",
|
| 106 |
+
"local_weight": "POC-1/tiny_home_json_model_v1/best_model/model.safetensors",
|
| 107 |
+
"weight_name": "model.safetensors",
|
| 108 |
+
"repositories": {
|
| 109 |
+
"model": {
|
| 110 |
+
"repo_id": "sraivante/superfast-tiny-home-robotics-json-1m-v1",
|
| 111 |
+
"commit": "cf325b380e8ed560a729ec2de09f878a8a917259",
|
| 112 |
+
"files": [
|
| 113 |
+
{
|
| 114 |
+
"path": ".gitattributes",
|
| 115 |
+
"bytes": 133,
|
| 116 |
+
"sha256": null
|
| 117 |
+
},
|
| 118 |
+
{
|
| 119 |
+
"path": "LICENSE",
|
| 120 |
+
"bytes": 11357,
|
| 121 |
+
"sha256": null
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"path": "NOTICE",
|
| 125 |
+
"bytes": 728,
|
| 126 |
+
"sha256": null
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"path": "README.md",
|
| 130 |
+
"bytes": 11097,
|
| 131 |
+
"sha256": null
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"path": "allowed_outputs.json",
|
| 135 |
+
"bytes": 2590,
|
| 136 |
+
"sha256": null
|
| 137 |
+
},
|
| 138 |
+
{
|
| 139 |
+
"path": "assessment/RASPBERRY_PI.md",
|
| 140 |
+
"bytes": 709,
|
| 141 |
+
"sha256": null
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"path": "assessment/benchmark_device.py",
|
| 145 |
+
"bytes": 6302,
|
| 146 |
+
"sha256": null
|
| 147 |
+
},
|
| 148 |
+
{
|
| 149 |
+
"path": "assessment/build_challenge.py",
|
| 150 |
+
"bytes": 10121,
|
| 151 |
+
"sha256": null
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"path": "assessment/evaluate_edge.py",
|
| 155 |
+
"bytes": 5579,
|
| 156 |
+
"sha256": null
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"path": "assessment/robotics_edge_v1/REPORT.md",
|
| 160 |
+
"bytes": 10707,
|
| 161 |
+
"sha256": null
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"path": "assessment/robotics_edge_v1/cases.jsonl",
|
| 165 |
+
"bytes": 95602,
|
| 166 |
+
"sha256": null
|
| 167 |
+
},
|
| 168 |
+
{
|
| 169 |
+
"path": "assessment/robotics_edge_v1/desktop_cpu_1thread.json",
|
| 170 |
+
"bytes": 8389,
|
| 171 |
+
"sha256": null
|
| 172 |
+
},
|
| 173 |
+
{
|
| 174 |
+
"path": "assessment/robotics_edge_v1/desktop_cpu_4threads.json",
|
| 175 |
+
"bytes": 8390,
|
| 176 |
+
"sha256": null
|
| 177 |
+
},
|
| 178 |
+
{
|
| 179 |
+
"path": "assessment/robotics_edge_v1/hf_compatibility.json",
|
| 180 |
+
"bytes": 457,
|
| 181 |
+
"sha256": null
|
| 182 |
+
},
|
| 183 |
+
{
|
| 184 |
+
"path": "assessment/robotics_edge_v1/manifest.json",
|
| 185 |
+
"bytes": 1694,
|
| 186 |
+
"sha256": null
|
| 187 |
+
},
|
| 188 |
+
{
|
| 189 |
+
"path": "assessment/robotics_edge_v1/metrics.json",
|
| 190 |
+
"bytes": 14385,
|
| 191 |
+
"sha256": null
|
| 192 |
+
},
|
| 193 |
+
{
|
| 194 |
+
"path": "assessment/robotics_edge_v1/predictions.jsonl",
|
| 195 |
+
"bytes": 389133,
|
| 196 |
+
"sha256": null
|
| 197 |
+
},
|
| 198 |
+
{
|
| 199 |
+
"path": "config.json",
|
| 200 |
+
"bytes": 682,
|
| 201 |
+
"sha256": null
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"path": "evaluation/metrics.json",
|
| 205 |
+
"bytes": 10936,
|
| 206 |
+
"sha256": null
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
"path": "evaluation/raw_diagnostic_predictions.jsonl.gz",
|
| 210 |
+
"bytes": 16504,
|
| 211 |
+
"sha256": "dc834114aafc7c28982f8440e2493e59e24cbafa79476a3e00f0d048c33b803f"
|
| 212 |
+
},
|
| 213 |
+
{
|
| 214 |
+
"path": "evaluation/test_predictions.jsonl.gz",
|
| 215 |
+
"bytes": 498154,
|
| 216 |
+
"sha256": "cfd68ce95dd52db54461812a9c1e61679d693c117576e35b59728f4ef9e8fb01"
|
| 217 |
+
},
|
| 218 |
+
{
|
| 219 |
+
"path": "generation_config.json",
|
| 220 |
+
"bytes": 132,
|
| 221 |
+
"sha256": null
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"path": "manifest.json",
|
| 225 |
+
"bytes": 12618,
|
| 226 |
+
"sha256": null
|
| 227 |
+
},
|
| 228 |
+
{
|
| 229 |
+
"path": "model.safetensors",
|
| 230 |
+
"bytes": 4380048,
|
| 231 |
+
"sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3"
|
| 232 |
+
},
|
| 233 |
+
{
|
| 234 |
+
"path": "output_schema.json",
|
| 235 |
+
"bytes": 797,
|
| 236 |
+
"sha256": null
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"path": "release_manifest.json",
|
| 240 |
+
"bytes": 9317,
|
| 241 |
+
"sha256": null
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"path": "requirements.txt",
|
| 245 |
+
"bytes": 111,
|
| 246 |
+
"sha256": null
|
| 247 |
+
},
|
| 248 |
+
{
|
| 249 |
+
"path": "special_tokens_map.json",
|
| 250 |
+
"bytes": 531,
|
| 251 |
+
"sha256": null
|
| 252 |
+
},
|
| 253 |
+
{
|
| 254 |
+
"path": "tiny_json_llm/__init__.py",
|
| 255 |
+
"bytes": 103,
|
| 256 |
+
"sha256": null
|
| 257 |
+
},
|
| 258 |
+
{
|
| 259 |
+
"path": "tiny_json_llm/data.py",
|
| 260 |
+
"bytes": 18760,
|
| 261 |
+
"sha256": null
|
| 262 |
+
},
|
| 263 |
+
{
|
| 264 |
+
"path": "tiny_json_llm/evaluate.py",
|
| 265 |
+
"bytes": 6317,
|
| 266 |
+
"sha256": null
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"path": "tiny_json_llm/infer.py",
|
| 270 |
+
"bytes": 4260,
|
| 271 |
+
"sha256": null
|
| 272 |
+
},
|
| 273 |
+
{
|
| 274 |
+
"path": "tiny_json_llm/train.py",
|
| 275 |
+
"bytes": 17277,
|
| 276 |
+
"sha256": null
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"path": "tokenizer.json",
|
| 280 |
+
"bytes": 54877,
|
| 281 |
+
"sha256": null
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"path": "tokenizer_config.json",
|
| 285 |
+
"bytes": 2077,
|
| 286 |
+
"sha256": null
|
| 287 |
+
},
|
| 288 |
+
{
|
| 289 |
+
"path": "training/Tiny_Home_JSON_A100.ipynb",
|
| 290 |
+
"bytes": 61976,
|
| 291 |
+
"sha256": null
|
| 292 |
+
},
|
| 293 |
+
{
|
| 294 |
+
"path": "training/audit_dataset.py",
|
| 295 |
+
"bytes": 4051,
|
| 296 |
+
"sha256": null
|
| 297 |
+
},
|
| 298 |
+
{
|
| 299 |
+
"path": "training/build_notebook.py",
|
| 300 |
+
"bytes": 10392,
|
| 301 |
+
"sha256": null
|
| 302 |
+
},
|
| 303 |
+
{
|
| 304 |
+
"path": "training/prepare_home.py",
|
| 305 |
+
"bytes": 11051,
|
| 306 |
+
"sha256": null
|
| 307 |
+
},
|
| 308 |
+
{
|
| 309 |
+
"path": "training/run.json",
|
| 310 |
+
"bytes": 1024,
|
| 311 |
+
"sha256": null
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"path": "training/train_log.jsonl",
|
| 315 |
+
"bytes": 14843,
|
| 316 |
+
"sha256": null
|
| 317 |
+
},
|
| 318 |
+
{
|
| 319 |
+
"path": "training/verify_pipeline.py",
|
| 320 |
+
"bytes": 3744,
|
| 321 |
+
"sha256": null
|
| 322 |
+
},
|
| 323 |
+
{
|
| 324 |
+
"path": "training_metadata.json",
|
| 325 |
+
"bytes": 1190,
|
| 326 |
+
"sha256": null
|
| 327 |
+
},
|
| 328 |
+
{
|
| 329 |
+
"path": "verification/downloaded_model_verification.json",
|
| 330 |
+
"bytes": 1218,
|
| 331 |
+
"sha256": null
|
| 332 |
+
},
|
| 333 |
+
{
|
| 334 |
+
"path": "verification/release_examples.json",
|
| 335 |
+
"bytes": 477,
|
| 336 |
+
"sha256": null
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"path": "verification/verification_report.json",
|
| 340 |
+
"bytes": 600,
|
| 341 |
+
"sha256": null
|
| 342 |
+
},
|
| 343 |
+
{
|
| 344 |
+
"path": "weights_sha256.json",
|
| 345 |
+
"bytes": 94,
|
| 346 |
+
"sha256": null
|
| 347 |
+
}
|
| 348 |
+
]
|
| 349 |
+
},
|
| 350 |
+
"dataset": {
|
| 351 |
+
"repo_id": "sraivante/home-commands-json-v1",
|
| 352 |
+
"commit": "8479d12161767c5aabd7dfc097e6f6c41790201a",
|
| 353 |
+
"files": [
|
| 354 |
+
{
|
| 355 |
+
"path": ".gitattributes",
|
| 356 |
+
"bytes": 133,
|
| 357 |
+
"sha256": null
|
| 358 |
+
},
|
| 359 |
+
{
|
| 360 |
+
"path": "LICENSE",
|
| 361 |
+
"bytes": 11357,
|
| 362 |
+
"sha256": null
|
| 363 |
+
},
|
| 364 |
+
{
|
| 365 |
+
"path": "NOTICE",
|
| 366 |
+
"bytes": 728,
|
| 367 |
+
"sha256": null
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"path": "README.md",
|
| 371 |
+
"bytes": 8459,
|
| 372 |
+
"sha256": null
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"path": "artifacts/home_commands_training_bundle.zip",
|
| 376 |
+
"bytes": 19263019,
|
| 377 |
+
"sha256": "3e0340a0081c3ede31ff8a548c0531470ddaa92486d5f556493b4a50af069b57"
|
| 378 |
+
},
|
| 379 |
+
{
|
| 380 |
+
"path": "data/test.jsonl.gz",
|
| 381 |
+
"bytes": 1154130,
|
| 382 |
+
"sha256": "38bbae4cf7fd0347035059e11961fb7c60ef0fb69263e391f9cf6e88981cb69c"
|
| 383 |
+
},
|
| 384 |
+
{
|
| 385 |
+
"path": "data/train.jsonl.gz",
|
| 386 |
+
"bytes": 9587393,
|
| 387 |
+
"sha256": "04266e5dbfcb210a5216f723a1bb575fd168382cb06d61260ac670e9c935bb73"
|
| 388 |
+
},
|
| 389 |
+
{
|
| 390 |
+
"path": "data/validation.jsonl.gz",
|
| 391 |
+
"bytes": 1129727,
|
| 392 |
+
"sha256": "e37ec83a8454734c9a1ad57cbc492de11d20cba49301c888dde1f9be63860b47"
|
| 393 |
+
},
|
| 394 |
+
{
|
| 395 |
+
"path": "evaluation/build_challenge.py",
|
| 396 |
+
"bytes": 10121,
|
| 397 |
+
"sha256": null
|
| 398 |
+
},
|
| 399 |
+
{
|
| 400 |
+
"path": "evaluation/robotics_edge_v1/cases.jsonl",
|
| 401 |
+
"bytes": 95602,
|
| 402 |
+
"sha256": null
|
| 403 |
+
},
|
| 404 |
+
{
|
| 405 |
+
"path": "evaluation/robotics_edge_v1/manifest.json",
|
| 406 |
+
"bytes": 1694,
|
| 407 |
+
"sha256": null
|
| 408 |
+
},
|
| 409 |
+
{
|
| 410 |
+
"path": "metadata/allowed_outputs.json",
|
| 411 |
+
"bytes": 2590,
|
| 412 |
+
"sha256": null
|
| 413 |
+
},
|
| 414 |
+
{
|
| 415 |
+
"path": "metadata/model_config.json",
|
| 416 |
+
"bytes": 403,
|
| 417 |
+
"sha256": null
|
| 418 |
+
},
|
| 419 |
+
{
|
| 420 |
+
"path": "metadata/output_schema.json",
|
| 421 |
+
"bytes": 797,
|
| 422 |
+
"sha256": null
|
| 423 |
+
},
|
| 424 |
+
{
|
| 425 |
+
"path": "metadata/phrase_groups.json",
|
| 426 |
+
"bytes": 277559,
|
| 427 |
+
"sha256": null
|
| 428 |
+
},
|
| 429 |
+
{
|
| 430 |
+
"path": "preparation/audit_dataset.py",
|
| 431 |
+
"bytes": 4051,
|
| 432 |
+
"sha256": null
|
| 433 |
+
},
|
| 434 |
+
{
|
| 435 |
+
"path": "preparation/prepare_home.py",
|
| 436 |
+
"bytes": 11051,
|
| 437 |
+
"sha256": null
|
| 438 |
+
},
|
| 439 |
+
{
|
| 440 |
+
"path": "preparation/requirements.txt",
|
| 441 |
+
"bytes": 163,
|
| 442 |
+
"sha256": null
|
| 443 |
+
},
|
| 444 |
+
{
|
| 445 |
+
"path": "preparation/tiny_json_llm/__init__.py",
|
| 446 |
+
"bytes": 103,
|
| 447 |
+
"sha256": null
|
| 448 |
+
},
|
| 449 |
+
{
|
| 450 |
+
"path": "preparation/tiny_json_llm/data.py",
|
| 451 |
+
"bytes": 18760,
|
| 452 |
+
"sha256": null
|
| 453 |
+
},
|
| 454 |
+
{
|
| 455 |
+
"path": "release_manifest.json",
|
| 456 |
+
"bytes": 6223,
|
| 457 |
+
"sha256": null
|
| 458 |
+
},
|
| 459 |
+
{
|
| 460 |
+
"path": "source/home-commands-3.4M.jsonl.gz",
|
| 461 |
+
"bytes": 37947929,
|
| 462 |
+
"sha256": "33edbdedc942ac56444e2196d4b368fc52638eebd6c0cf01264a634261fcf9d1"
|
| 463 |
+
},
|
| 464 |
+
{
|
| 465 |
+
"path": "training_snapshot_manifest.json",
|
| 466 |
+
"bytes": 12618,
|
| 467 |
+
"sha256": null
|
| 468 |
+
}
|
| 469 |
+
]
|
| 470 |
+
}
|
| 471 |
+
},
|
| 472 |
+
"remote_weight_path": "model.safetensors",
|
| 473 |
+
"verified_weight_sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3"
|
| 474 |
+
},
|
| 475 |
+
"publication": "existing model and dataset repositories"
|
| 476 |
+
}
|
| 477 |
+
},
|
| 478 |
+
"scope": "Per-model reproduction projection; the original run manifest hash is preserved in raw results."
|
| 479 |
+
}
|
edge_benchmarks/rpi5-2026-09-26/cases/poc1_latency.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"id": "latency-0",
|
| 4 |
+
"text": "Please turn on the fan",
|
| 5 |
+
"expected": {
|
| 6 |
+
"subject": "fan",
|
| 7 |
+
"action": "ON"
|
| 8 |
+
},
|
| 9 |
+
"match": "subset",
|
| 10 |
+
"category": "supported_short_command"
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"id": "latency-1",
|
| 14 |
+
"text": "pankha band karo",
|
| 15 |
+
"expected": {
|
| 16 |
+
"subject": "fan",
|
| 17 |
+
"action": "OFF"
|
| 18 |
+
},
|
| 19 |
+
"match": "subset",
|
| 20 |
+
"category": "supported_short_command"
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"id": "latency-2",
|
| 24 |
+
"text": "check the water pump status",
|
| 25 |
+
"expected": {
|
| 26 |
+
"subject": "motor",
|
| 27 |
+
"action": "STATUS"
|
| 28 |
+
},
|
| 29 |
+
"match": "subset",
|
| 30 |
+
"category": "supported_short_command"
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"id": "latency-3",
|
| 34 |
+
"text": "switch off the speaker",
|
| 35 |
+
"expected": {
|
| 36 |
+
"subject": "speaker",
|
| 37 |
+
"action": "OFF"
|
| 38 |
+
},
|
| 39 |
+
"match": "subset",
|
| 40 |
+
"category": "supported_short_command"
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"id": "latency-4",
|
| 44 |
+
"text": "turn on the light",
|
| 45 |
+
"expected": {
|
| 46 |
+
"subject": "light",
|
| 47 |
+
"action": "ON"
|
| 48 |
+
},
|
| 49 |
+
"match": "subset",
|
| 50 |
+
"category": "supported_short_command"
|
| 51 |
+
},
|
| 52 |
+
{
|
| 53 |
+
"id": "latency-5",
|
| 54 |
+
"text": "ac chalu karo",
|
| 55 |
+
"expected": {
|
| 56 |
+
"subject": "ac",
|
| 57 |
+
"action": "ON"
|
| 58 |
+
},
|
| 59 |
+
"match": "subset",
|
| 60 |
+
"category": "supported_short_command"
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"id": "latency-6",
|
| 64 |
+
"text": "turn off the washing machine",
|
| 65 |
+
"expected": {
|
| 66 |
+
"subject": "washing_machine",
|
| 67 |
+
"action": "OFF"
|
| 68 |
+
},
|
| 69 |
+
"match": "subset",
|
| 70 |
+
"category": "supported_short_command"
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"id": "latency-7",
|
| 74 |
+
"text": "check the sprinkler status",
|
| 75 |
+
"expected": {
|
| 76 |
+
"subject": "sprinkler",
|
| 77 |
+
"action": "STATUS"
|
| 78 |
+
},
|
| 79 |
+
"match": "subset",
|
| 80 |
+
"category": "supported_short_command"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"id": "latency-8",
|
| 84 |
+
"text": "turn on the geyser",
|
| 85 |
+
"expected": {
|
| 86 |
+
"subject": "geyser",
|
| 87 |
+
"action": "ON"
|
| 88 |
+
},
|
| 89 |
+
"match": "subset",
|
| 90 |
+
"category": "supported_short_command"
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"id": "latency-9",
|
| 94 |
+
"text": "switch off the TV",
|
| 95 |
+
"expected": {
|
| 96 |
+
"subject": "tv",
|
| 97 |
+
"action": "OFF"
|
| 98 |
+
},
|
| 99 |
+
"match": "subset",
|
| 100 |
+
"category": "supported_short_command"
|
| 101 |
+
}
|
| 102 |
+
]
|
edge_benchmarks/rpi5-2026-09-26/cases/poc1_quality.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/environment.lock.txt
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
certifi==2026.7.22
|
| 2 |
+
charset-normalizer==3.5.1
|
| 3 |
+
filelock==4.0.3
|
| 4 |
+
fsspec==2026.9.0
|
| 5 |
+
hf-xet==1.6.0
|
| 6 |
+
huggingface_hub==0.36.2
|
| 7 |
+
idna==3.20
|
| 8 |
+
Jinja2==3.1.6
|
| 9 |
+
joblib==1.5.3
|
| 10 |
+
MarkupSafe==3.0.3
|
| 11 |
+
mpmath==1.3.0
|
| 12 |
+
networkx==3.7
|
| 13 |
+
numpy==2.3.5
|
| 14 |
+
packaging==26.3
|
| 15 |
+
psutil==7.2.2
|
| 16 |
+
PyYAML==6.0.3
|
| 17 |
+
regex==2026.9.10
|
| 18 |
+
requests==2.34.2
|
| 19 |
+
safetensors==0.8.0
|
| 20 |
+
scikit-learn==1.8.0
|
| 21 |
+
scipy==1.17.0
|
| 22 |
+
setuptools==84.0.0
|
| 23 |
+
sympy==1.14.0
|
| 24 |
+
threadpoolctl==3.7.0
|
| 25 |
+
tokenizers==0.22.1
|
| 26 |
+
torch==2.8.0
|
| 27 |
+
tqdm==4.70.1
|
| 28 |
+
transformers==4.56.2
|
| 29 |
+
typing_extensions==4.16.0
|
| 30 |
+
urllib3==2.8.0
|
edge_benchmarks/rpi5-2026-09-26/provenance.json
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"measurement_revision": "edge-rpi5-20260926",
|
| 3 |
+
"model": {
|
| 4 |
+
"repo_id": "sraivante/superfast-tiny-home-robotics-json-1m-v1",
|
| 5 |
+
"revision": "cf325b380e8ed560a729ec2de09f878a8a917259",
|
| 6 |
+
"files": [
|
| 7 |
+
{
|
| 8 |
+
"bundle_path": "projects/poc1/tiny_json_llm/data.py",
|
| 9 |
+
"repo_path": "tiny_json_llm/data.py",
|
| 10 |
+
"sha256": "b1c6dd1207327bc8b9a325391d60762d419589b900ad1329ed21a13df48bc66b",
|
| 11 |
+
"bytes": 18760,
|
| 12 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/data.py"
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"bundle_path": "projects/poc1/tiny_json_llm/evaluate.py",
|
| 16 |
+
"repo_path": "tiny_json_llm/evaluate.py",
|
| 17 |
+
"sha256": "1efd2f862da1fdc6fb17006547de7c53321dbd29aa16c4097daccbfb8dc41e4d",
|
| 18 |
+
"bytes": 6317,
|
| 19 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/evaluate.py"
|
| 20 |
+
},
|
| 21 |
+
{
|
| 22 |
+
"bundle_path": "projects/poc1/tiny_json_llm/infer.py",
|
| 23 |
+
"repo_path": "tiny_json_llm/infer.py",
|
| 24 |
+
"sha256": "2b5074bce3f07127fa254c4ec62e25c6b8ce58743b937cdd301d7bb05128a5c8",
|
| 25 |
+
"bytes": 4260,
|
| 26 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/infer.py"
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"bundle_path": "projects/poc1/tiny_json_llm/train.py",
|
| 30 |
+
"repo_path": "tiny_json_llm/train.py",
|
| 31 |
+
"sha256": "911848ac7816a1a58bbad171a75e1e5e74a9e2790f18492e69d41e0ec4c8ed2a",
|
| 32 |
+
"bytes": 17277,
|
| 33 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/train.py"
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"bundle_path": "projects/poc1/tiny_json_llm/__init__.py",
|
| 37 |
+
"repo_path": "tiny_json_llm/__init__.py",
|
| 38 |
+
"sha256": "e8edab0c5d6fc4202a0b3005dfb4009894ed4c06f216c801943a88f88b7653c2",
|
| 39 |
+
"bytes": 103,
|
| 40 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/__init__.py"
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"bundle_path": "projects/poc1/best_model/allowed_outputs.json",
|
| 44 |
+
"repo_path": "allowed_outputs.json",
|
| 45 |
+
"sha256": "317d35bd27a25e6db66deea50112633b63f7eae907178cc7f50f12dd8ad6aba1",
|
| 46 |
+
"bytes": 2590,
|
| 47 |
+
"workspace_source": "POC-1/publication/model/allowed_outputs.json"
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"bundle_path": "projects/poc1/best_model/config.json",
|
| 51 |
+
"repo_path": "config.json",
|
| 52 |
+
"sha256": "a66629f39ecb44414aefdf78aa947829e37daf6e6a44be8d710e944ec90ef60a",
|
| 53 |
+
"bytes": 682,
|
| 54 |
+
"workspace_source": "POC-1/publication/model/config.json"
|
| 55 |
+
},
|
| 56 |
+
{
|
| 57 |
+
"bundle_path": "projects/poc1/best_model/generation_config.json",
|
| 58 |
+
"repo_path": "generation_config.json",
|
| 59 |
+
"sha256": "9b962893b09457be3f8b0d343c8d64d33048443e2e57fbe421cd40d2dec8edf9",
|
| 60 |
+
"bytes": 132,
|
| 61 |
+
"workspace_source": "POC-1/publication/model/generation_config.json"
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"bundle_path": "projects/poc1/best_model/manifest.json",
|
| 65 |
+
"repo_path": "manifest.json",
|
| 66 |
+
"sha256": "2ead74207a38ad593819da12c52392bad8a273cc62e6842a8278ebffaa561eaa",
|
| 67 |
+
"bytes": 12618,
|
| 68 |
+
"workspace_source": "POC-1/publication/model/manifest.json"
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"bundle_path": "projects/poc1/best_model/model.safetensors",
|
| 72 |
+
"repo_path": "model.safetensors",
|
| 73 |
+
"sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3",
|
| 74 |
+
"bytes": 4380048,
|
| 75 |
+
"workspace_source": "POC-1/publication/model/model.safetensors"
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"bundle_path": "projects/poc1/best_model/output_schema.json",
|
| 79 |
+
"repo_path": "output_schema.json",
|
| 80 |
+
"sha256": "e5c670db2756306cfb58f43e020426a174aef2f60c643ec0cc72920be4aaae86",
|
| 81 |
+
"bytes": 797,
|
| 82 |
+
"workspace_source": "POC-1/publication/model/output_schema.json"
|
| 83 |
+
},
|
| 84 |
+
{
|
| 85 |
+
"bundle_path": "projects/poc1/best_model/special_tokens_map.json",
|
| 86 |
+
"repo_path": "special_tokens_map.json",
|
| 87 |
+
"sha256": "eae55585dbdfe3c1875015bd0a96dee1b5103a5ab4ef97797de606fb385ea51d",
|
| 88 |
+
"bytes": 531,
|
| 89 |
+
"workspace_source": "POC-1/publication/model/special_tokens_map.json"
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"bundle_path": "projects/poc1/best_model/tokenizer.json",
|
| 93 |
+
"repo_path": "tokenizer.json",
|
| 94 |
+
"sha256": "0e2e4281172d6ff20e5562d8e0df4c796ca6c0a9e1804067e1b62bdefe38317e",
|
| 95 |
+
"bytes": 54877,
|
| 96 |
+
"workspace_source": "POC-1/publication/model/tokenizer.json"
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"bundle_path": "projects/poc1/best_model/tokenizer_config.json",
|
| 100 |
+
"repo_path": "tokenizer_config.json",
|
| 101 |
+
"sha256": "66e9e99973752a3b3b6adf621fa1574aa576da1fd2f344b8673196de207da9ad",
|
| 102 |
+
"bytes": 2077,
|
| 103 |
+
"workspace_source": "POC-1/publication/model/tokenizer_config.json"
|
| 104 |
+
},
|
| 105 |
+
{
|
| 106 |
+
"bundle_path": "projects/poc1/best_model/training_metadata.json",
|
| 107 |
+
"repo_path": "training_metadata.json",
|
| 108 |
+
"sha256": "5fd7ee7df81d8699b853cfa2e33ee70b5ff8172ef8de67b11aee54e8cf73d11f",
|
| 109 |
+
"bytes": 1190,
|
| 110 |
+
"workspace_source": "POC-1/publication/model/training_metadata.json"
|
| 111 |
+
},
|
| 112 |
+
{
|
| 113 |
+
"bundle_path": "projects/poc1/best_model/weights_sha256.json",
|
| 114 |
+
"repo_path": "weights_sha256.json",
|
| 115 |
+
"sha256": "0d186660bf35658801dea63222e4de0612c237ba13553569535f5b5077824ba1",
|
| 116 |
+
"bytes": 94,
|
| 117 |
+
"workspace_source": "POC-1/publication/model/weights_sha256.json"
|
| 118 |
+
}
|
| 119 |
+
],
|
| 120 |
+
"all_match": true
|
| 121 |
+
},
|
| 122 |
+
"training_dataset_snapshot": {
|
| 123 |
+
"repo_id": "sraivante/home-commands-json-v1",
|
| 124 |
+
"commit": "8479d12161767c5aabd7dfc097e6f6c41790201a",
|
| 125 |
+
"files": [
|
| 126 |
+
{
|
| 127 |
+
"path": ".gitattributes",
|
| 128 |
+
"bytes": 133,
|
| 129 |
+
"sha256": null
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"path": "LICENSE",
|
| 133 |
+
"bytes": 11357,
|
| 134 |
+
"sha256": null
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"path": "NOTICE",
|
| 138 |
+
"bytes": 728,
|
| 139 |
+
"sha256": null
|
| 140 |
+
},
|
| 141 |
+
{
|
| 142 |
+
"path": "README.md",
|
| 143 |
+
"bytes": 8459,
|
| 144 |
+
"sha256": null
|
| 145 |
+
},
|
| 146 |
+
{
|
| 147 |
+
"path": "artifacts/home_commands_training_bundle.zip",
|
| 148 |
+
"bytes": 19263019,
|
| 149 |
+
"sha256": "3e0340a0081c3ede31ff8a548c0531470ddaa92486d5f556493b4a50af069b57"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"path": "data/test.jsonl.gz",
|
| 153 |
+
"bytes": 1154130,
|
| 154 |
+
"sha256": "38bbae4cf7fd0347035059e11961fb7c60ef0fb69263e391f9cf6e88981cb69c"
|
| 155 |
+
},
|
| 156 |
+
{
|
| 157 |
+
"path": "data/train.jsonl.gz",
|
| 158 |
+
"bytes": 9587393,
|
| 159 |
+
"sha256": "04266e5dbfcb210a5216f723a1bb575fd168382cb06d61260ac670e9c935bb73"
|
| 160 |
+
},
|
| 161 |
+
{
|
| 162 |
+
"path": "data/validation.jsonl.gz",
|
| 163 |
+
"bytes": 1129727,
|
| 164 |
+
"sha256": "e37ec83a8454734c9a1ad57cbc492de11d20cba49301c888dde1f9be63860b47"
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"path": "evaluation/build_challenge.py",
|
| 168 |
+
"bytes": 10121,
|
| 169 |
+
"sha256": null
|
| 170 |
+
},
|
| 171 |
+
{
|
| 172 |
+
"path": "evaluation/robotics_edge_v1/cases.jsonl",
|
| 173 |
+
"bytes": 95602,
|
| 174 |
+
"sha256": null
|
| 175 |
+
},
|
| 176 |
+
{
|
| 177 |
+
"path": "evaluation/robotics_edge_v1/manifest.json",
|
| 178 |
+
"bytes": 1694,
|
| 179 |
+
"sha256": null
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"path": "metadata/allowed_outputs.json",
|
| 183 |
+
"bytes": 2590,
|
| 184 |
+
"sha256": null
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"path": "metadata/model_config.json",
|
| 188 |
+
"bytes": 403,
|
| 189 |
+
"sha256": null
|
| 190 |
+
},
|
| 191 |
+
{
|
| 192 |
+
"path": "metadata/output_schema.json",
|
| 193 |
+
"bytes": 797,
|
| 194 |
+
"sha256": null
|
| 195 |
+
},
|
| 196 |
+
{
|
| 197 |
+
"path": "metadata/phrase_groups.json",
|
| 198 |
+
"bytes": 277559,
|
| 199 |
+
"sha256": null
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"path": "preparation/audit_dataset.py",
|
| 203 |
+
"bytes": 4051,
|
| 204 |
+
"sha256": null
|
| 205 |
+
},
|
| 206 |
+
{
|
| 207 |
+
"path": "preparation/prepare_home.py",
|
| 208 |
+
"bytes": 11051,
|
| 209 |
+
"sha256": null
|
| 210 |
+
},
|
| 211 |
+
{
|
| 212 |
+
"path": "preparation/requirements.txt",
|
| 213 |
+
"bytes": 163,
|
| 214 |
+
"sha256": null
|
| 215 |
+
},
|
| 216 |
+
{
|
| 217 |
+
"path": "preparation/tiny_json_llm/__init__.py",
|
| 218 |
+
"bytes": 103,
|
| 219 |
+
"sha256": null
|
| 220 |
+
},
|
| 221 |
+
{
|
| 222 |
+
"path": "preparation/tiny_json_llm/data.py",
|
| 223 |
+
"bytes": 18760,
|
| 224 |
+
"sha256": null
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"path": "release_manifest.json",
|
| 228 |
+
"bytes": 6223,
|
| 229 |
+
"sha256": null
|
| 230 |
+
},
|
| 231 |
+
{
|
| 232 |
+
"path": "source/home-commands-3.4M.jsonl.gz",
|
| 233 |
+
"bytes": 37947929,
|
| 234 |
+
"sha256": "33edbdedc942ac56444e2196d4b368fc52638eebd6c0cf01264a634261fcf9d1"
|
| 235 |
+
},
|
| 236 |
+
{
|
| 237 |
+
"path": "training_snapshot_manifest.json",
|
| 238 |
+
"bytes": 12618,
|
| 239 |
+
"sha256": null
|
| 240 |
+
}
|
| 241 |
+
]
|
| 242 |
+
},
|
| 243 |
+
"evaluation": {
|
| 244 |
+
"kind": "existing frozen stress/regression suite, constrained decoding only",
|
| 245 |
+
"source": "POC-1\\assessment\\robotics_edge_v1\\cases.jsonl",
|
| 246 |
+
"sha256": "30cb9a6de18cc12cefcbb6e1aac8a29c7371b0f4ea537e516f38d02b3f417d6c",
|
| 247 |
+
"notes": "Previously inspected synthetic suite; not a new blind holdout. Original per-case source-overlap metadata retained."
|
| 248 |
+
},
|
| 249 |
+
"quality_case_count": 284,
|
| 250 |
+
"latency_case_count": 10,
|
| 251 |
+
"case_file_sha256": {
|
| 252 |
+
"poc1_latency.json": "157cb10e338b20c09e7c383eb9d5ed1f23984ded1984f32f2d228b65ee8e6700",
|
| 253 |
+
"poc1_quality.json": "a3e20755d442252731b96f8faff4a9d5b4e4074af130f9b4c9063be5e60504ee"
|
| 254 |
+
},
|
| 255 |
+
"no_training_or_fine_tuning": true,
|
| 256 |
+
"copyright": "Copyright (c) 2026 sraivante for original material and selection/arrangement only; Apache License 2.0; third-party terms unchanged."
|
| 257 |
+
}
|
edge_benchmarks/rpi5-2026-09-26/readings.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/reproduce.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Reproduce this pinned model's Pi benchmark without changing model weights."""
|
| 2 |
+
import argparse, hashlib, json, shutil, subprocess, sys
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from huggingface_hub import hf_hub_download
|
| 5 |
+
HERE=Path(__file__).resolve().parent
|
| 6 |
+
ap=argparse.ArgumentParser(); ap.add_argument('--threads',type=int,choices=(1,4),default=1); args=ap.parse_args()
|
| 7 |
+
identity=json.loads((HERE/'runtime_identity.json').read_text())
|
| 8 |
+
manifest=json.loads((HERE/'bundle_manifest.json').read_text()); key=next(iter(manifest['models']))
|
| 9 |
+
if key=='poc3' and args.threads!=1: ap.error('This interpreter is single-threaded')
|
| 10 |
+
target=Path.cwd()/('rpi-reproduction-'+key); target.mkdir(exist_ok=True)
|
| 11 |
+
for item in identity['files']:
|
| 12 |
+
source=Path(hf_hub_download(identity['repo_id'],item['repo_path'],revision=identity['revision']))
|
| 13 |
+
assert hashlib.sha256(source.read_bytes()).hexdigest()==item['sha256']
|
| 14 |
+
dest=target/item['bundle_path']; dest.parent.mkdir(parents=True,exist_ok=True); shutil.copyfile(source,dest)
|
| 15 |
+
for name in ('benchmark.py','bundle_manifest.json'):
|
| 16 |
+
shutil.copyfile(HERE/name,target/name)
|
| 17 |
+
for source in (HERE/'cases').glob('*.json'):
|
| 18 |
+
dest=target/'cases'/source.name; dest.parent.mkdir(exist_ok=True); shutil.copyfile(source,dest)
|
| 19 |
+
command=[sys.executable,'-u',str(target/'benchmark.py'),'--model',key,'--threads',str(args.threads),'--out',str(target/('result_t'+str(args.threads)+'.json'))]
|
| 20 |
+
if args.threads==1: command.append('--quality')
|
| 21 |
+
subprocess.run(command,check=True)
|
edge_benchmarks/rpi5-2026-09-26/results/poc1_t1.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/results/poc1_t4.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
edge_benchmarks/rpi5-2026-09-26/runtime_identity.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"repo_id": "sraivante/superfast-tiny-home-robotics-json-1m-v1",
|
| 3 |
+
"revision": "cf325b380e8ed560a729ec2de09f878a8a917259",
|
| 4 |
+
"files": [
|
| 5 |
+
{
|
| 6 |
+
"bundle_path": "projects/poc1/tiny_json_llm/data.py",
|
| 7 |
+
"repo_path": "tiny_json_llm/data.py",
|
| 8 |
+
"sha256": "b1c6dd1207327bc8b9a325391d60762d419589b900ad1329ed21a13df48bc66b",
|
| 9 |
+
"bytes": 18760,
|
| 10 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/data.py"
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"bundle_path": "projects/poc1/tiny_json_llm/evaluate.py",
|
| 14 |
+
"repo_path": "tiny_json_llm/evaluate.py",
|
| 15 |
+
"sha256": "1efd2f862da1fdc6fb17006547de7c53321dbd29aa16c4097daccbfb8dc41e4d",
|
| 16 |
+
"bytes": 6317,
|
| 17 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/evaluate.py"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"bundle_path": "projects/poc1/tiny_json_llm/infer.py",
|
| 21 |
+
"repo_path": "tiny_json_llm/infer.py",
|
| 22 |
+
"sha256": "2b5074bce3f07127fa254c4ec62e25c6b8ce58743b937cdd301d7bb05128a5c8",
|
| 23 |
+
"bytes": 4260,
|
| 24 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/infer.py"
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"bundle_path": "projects/poc1/tiny_json_llm/train.py",
|
| 28 |
+
"repo_path": "tiny_json_llm/train.py",
|
| 29 |
+
"sha256": "911848ac7816a1a58bbad171a75e1e5e74a9e2790f18492e69d41e0ec4c8ed2a",
|
| 30 |
+
"bytes": 17277,
|
| 31 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/train.py"
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"bundle_path": "projects/poc1/tiny_json_llm/__init__.py",
|
| 35 |
+
"repo_path": "tiny_json_llm/__init__.py",
|
| 36 |
+
"sha256": "e8edab0c5d6fc4202a0b3005dfb4009894ed4c06f216c801943a88f88b7653c2",
|
| 37 |
+
"bytes": 103,
|
| 38 |
+
"workspace_source": "POC-1/publication/model/tiny_json_llm/__init__.py"
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"bundle_path": "projects/poc1/best_model/allowed_outputs.json",
|
| 42 |
+
"repo_path": "allowed_outputs.json",
|
| 43 |
+
"sha256": "317d35bd27a25e6db66deea50112633b63f7eae907178cc7f50f12dd8ad6aba1",
|
| 44 |
+
"bytes": 2590,
|
| 45 |
+
"workspace_source": "POC-1/publication/model/allowed_outputs.json"
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"bundle_path": "projects/poc1/best_model/config.json",
|
| 49 |
+
"repo_path": "config.json",
|
| 50 |
+
"sha256": "a66629f39ecb44414aefdf78aa947829e37daf6e6a44be8d710e944ec90ef60a",
|
| 51 |
+
"bytes": 682,
|
| 52 |
+
"workspace_source": "POC-1/publication/model/config.json"
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"bundle_path": "projects/poc1/best_model/generation_config.json",
|
| 56 |
+
"repo_path": "generation_config.json",
|
| 57 |
+
"sha256": "9b962893b09457be3f8b0d343c8d64d33048443e2e57fbe421cd40d2dec8edf9",
|
| 58 |
+
"bytes": 132,
|
| 59 |
+
"workspace_source": "POC-1/publication/model/generation_config.json"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"bundle_path": "projects/poc1/best_model/manifest.json",
|
| 63 |
+
"repo_path": "manifest.json",
|
| 64 |
+
"sha256": "2ead74207a38ad593819da12c52392bad8a273cc62e6842a8278ebffaa561eaa",
|
| 65 |
+
"bytes": 12618,
|
| 66 |
+
"workspace_source": "POC-1/publication/model/manifest.json"
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"bundle_path": "projects/poc1/best_model/model.safetensors",
|
| 70 |
+
"repo_path": "model.safetensors",
|
| 71 |
+
"sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3",
|
| 72 |
+
"bytes": 4380048,
|
| 73 |
+
"workspace_source": "POC-1/publication/model/model.safetensors"
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"bundle_path": "projects/poc1/best_model/output_schema.json",
|
| 77 |
+
"repo_path": "output_schema.json",
|
| 78 |
+
"sha256": "e5c670db2756306cfb58f43e020426a174aef2f60c643ec0cc72920be4aaae86",
|
| 79 |
+
"bytes": 797,
|
| 80 |
+
"workspace_source": "POC-1/publication/model/output_schema.json"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"bundle_path": "projects/poc1/best_model/special_tokens_map.json",
|
| 84 |
+
"repo_path": "special_tokens_map.json",
|
| 85 |
+
"sha256": "eae55585dbdfe3c1875015bd0a96dee1b5103a5ab4ef97797de606fb385ea51d",
|
| 86 |
+
"bytes": 531,
|
| 87 |
+
"workspace_source": "POC-1/publication/model/special_tokens_map.json"
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"bundle_path": "projects/poc1/best_model/tokenizer.json",
|
| 91 |
+
"repo_path": "tokenizer.json",
|
| 92 |
+
"sha256": "0e2e4281172d6ff20e5562d8e0df4c796ca6c0a9e1804067e1b62bdefe38317e",
|
| 93 |
+
"bytes": 54877,
|
| 94 |
+
"workspace_source": "POC-1/publication/model/tokenizer.json"
|
| 95 |
+
},
|
| 96 |
+
{
|
| 97 |
+
"bundle_path": "projects/poc1/best_model/tokenizer_config.json",
|
| 98 |
+
"repo_path": "tokenizer_config.json",
|
| 99 |
+
"sha256": "66e9e99973752a3b3b6adf621fa1574aa576da1fd2f344b8673196de207da9ad",
|
| 100 |
+
"bytes": 2077,
|
| 101 |
+
"workspace_source": "POC-1/publication/model/tokenizer_config.json"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"bundle_path": "projects/poc1/best_model/training_metadata.json",
|
| 105 |
+
"repo_path": "training_metadata.json",
|
| 106 |
+
"sha256": "5fd7ee7df81d8699b853cfa2e33ee70b5ff8172ef8de67b11aee54e8cf73d11f",
|
| 107 |
+
"bytes": 1190,
|
| 108 |
+
"workspace_source": "POC-1/publication/model/training_metadata.json"
|
| 109 |
+
},
|
| 110 |
+
{
|
| 111 |
+
"bundle_path": "projects/poc1/best_model/weights_sha256.json",
|
| 112 |
+
"repo_path": "weights_sha256.json",
|
| 113 |
+
"sha256": "0d186660bf35658801dea63222e4de0612c237ba13553569535f5b5077824ba1",
|
| 114 |
+
"bytes": 94,
|
| 115 |
+
"workspace_source": "POC-1/publication/model/weights_sha256.json"
|
| 116 |
+
}
|
| 117 |
+
],
|
| 118 |
+
"all_match": true
|
| 119 |
+
}
|
edge_benchmarks/rpi5-2026-09-26/temperature_latency.png
ADDED
|
Git LFS Details
|
release_manifest.json
CHANGED
|
@@ -36,10 +36,26 @@
|
|
| 36 |
"bytes": 133,
|
| 37 |
"sha256": "8c6dce8d82b0d8705faef37c0a2b838fd47a481f814682d67c369618ac324100"
|
| 38 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
"allowed_outputs.json": {
|
| 40 |
"bytes": 2590,
|
| 41 |
"sha256": "317d35bd27a25e6db66deea50112633b63f7eae907178cc7f50f12dd8ad6aba1"
|
| 42 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
"assessment/benchmark_device.py": {
|
| 44 |
"bytes": 6302,
|
| 45 |
"sha256": "4a188470cb99e67fb804bb0fbdc3def5ae6751fdf686ae15476604d4862ab552"
|
|
@@ -52,9 +68,9 @@
|
|
| 52 |
"bytes": 5579,
|
| 53 |
"sha256": "8df51447b3b6416bc551bced731a4ea732a32a13a2693247ae239f71450356f4"
|
| 54 |
},
|
| 55 |
-
"assessment/
|
| 56 |
-
"bytes":
|
| 57 |
-
"sha256": "
|
| 58 |
},
|
| 59 |
"assessment/robotics_edge_v1/cases.jsonl": {
|
| 60 |
"bytes": 95602,
|
|
@@ -84,14 +100,62 @@
|
|
| 84 |
"bytes": 389133,
|
| 85 |
"sha256": "71cc0ac4c6a6195863a25b2788a21d839415058eeca5cc4a92091487dc496d7b"
|
| 86 |
},
|
| 87 |
-
"assessment/robotics_edge_v1/REPORT.md": {
|
| 88 |
-
"bytes": 10707,
|
| 89 |
-
"sha256": "64c6e4aa8a79ef4ca070fc72682fecff09cd20bc15f5c084b60280a5a6ea270d"
|
| 90 |
-
},
|
| 91 |
"config.json": {
|
| 92 |
"bytes": 682,
|
| 93 |
"sha256": "a66629f39ecb44414aefdf78aa947829e37daf6e6a44be8d710e944ec90ef60a"
|
| 94 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
"evaluation/metrics.json": {
|
| 96 |
"bytes": 10936,
|
| 97 |
"sha256": "9f53479d2b67bd06fc3a5b56f2dba2856bcb11778cef1fe0afa0e0a39a99d6c9"
|
|
@@ -108,10 +172,6 @@
|
|
| 108 |
"bytes": 132,
|
| 109 |
"sha256": "9b962893b09457be3f8b0d343c8d64d33048443e2e57fbe421cd40d2dec8edf9"
|
| 110 |
},
|
| 111 |
-
"LICENSE": {
|
| 112 |
-
"bytes": 11357,
|
| 113 |
-
"sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
|
| 114 |
-
},
|
| 115 |
"manifest.json": {
|
| 116 |
"bytes": 12618,
|
| 117 |
"sha256": "2ead74207a38ad593819da12c52392bad8a273cc62e6842a8278ebffaa561eaa"
|
|
@@ -120,18 +180,10 @@
|
|
| 120 |
"bytes": 4380048,
|
| 121 |
"sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3"
|
| 122 |
},
|
| 123 |
-
"NOTICE": {
|
| 124 |
-
"bytes": 728,
|
| 125 |
-
"sha256": "3dce4a2870f76ab3b86cc84067bb017d32e8b726892fc87a8ca4110cac79219b"
|
| 126 |
-
},
|
| 127 |
"output_schema.json": {
|
| 128 |
"bytes": 797,
|
| 129 |
"sha256": "e5c670db2756306cfb58f43e020426a174aef2f60c643ec0cc72920be4aaae86"
|
| 130 |
},
|
| 131 |
-
"README.md": {
|
| 132 |
-
"bytes": 11097,
|
| 133 |
-
"sha256": "b282fe69815c7991578042ed038e0297933cbdbcd2cd24e3f673eb7bb949e1e1"
|
| 134 |
-
},
|
| 135 |
"requirements.txt": {
|
| 136 |
"bytes": 111,
|
| 137 |
"sha256": "e565b0c29221c7e17347cdbaeaa7cba2efee571d2ca8f742d4882925705db460"
|
|
@@ -168,6 +220,10 @@
|
|
| 168 |
"bytes": 2077,
|
| 169 |
"sha256": "66e9e99973752a3b3b6adf621fa1574aa576da1fd2f344b8673196de207da9ad"
|
| 170 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
"training/audit_dataset.py": {
|
| 172 |
"bytes": 4051,
|
| 173 |
"sha256": "687b8c1cfabb9031eb9ddc901de47b4c2115b77d4aa22c6b35912556ae7f9f4e"
|
|
@@ -184,10 +240,6 @@
|
|
| 184 |
"bytes": 1024,
|
| 185 |
"sha256": "1cafbddca61420914c6435de449af55007fd8ec7cc06ba58b399ffc9a7d113ea"
|
| 186 |
},
|
| 187 |
-
"training/Tiny_Home_JSON_A100.ipynb": {
|
| 188 |
-
"bytes": 61976,
|
| 189 |
-
"sha256": "ed056ea07f969f1983b1d5efa98030df5ce72ab571b0369616b3e33b6a5d8365"
|
| 190 |
-
},
|
| 191 |
"training/train_log.jsonl": {
|
| 192 |
"bytes": 14843,
|
| 193 |
"sha256": "c371de9912ae1d6e589551685c20735be1ff5177271d375eeb69ba5fc7195075"
|
|
@@ -219,5 +271,11 @@
|
|
| 219 |
},
|
| 220 |
"documentation_patch": "Repository renamed at the publisher's request; model title, usage and linked dataset references updated. Weights, runtime code and all training/evaluation data are unchanged.",
|
| 221 |
"previous_release_commit": "89ccd2a58be3831640b13e9e1c63d1234d25ea39",
|
| 222 |
-
"renamed_from": "sraivante/tiny-home-json-1m-v1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
}
|
|
|
|
| 36 |
"bytes": 133,
|
| 37 |
"sha256": "8c6dce8d82b0d8705faef37c0a2b838fd47a481f814682d67c369618ac324100"
|
| 38 |
},
|
| 39 |
+
"LICENSE": {
|
| 40 |
+
"bytes": 11357,
|
| 41 |
+
"sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
|
| 42 |
+
},
|
| 43 |
+
"NOTICE": {
|
| 44 |
+
"bytes": 728,
|
| 45 |
+
"sha256": "3dce4a2870f76ab3b86cc84067bb017d32e8b726892fc87a8ca4110cac79219b"
|
| 46 |
+
},
|
| 47 |
+
"README.md": {
|
| 48 |
+
"bytes": 13219,
|
| 49 |
+
"sha256": "24dd95bd6c005414bf54860b8c53a1da9a42dc1cb367eaa215af729361ba68a8"
|
| 50 |
+
},
|
| 51 |
"allowed_outputs.json": {
|
| 52 |
"bytes": 2590,
|
| 53 |
"sha256": "317d35bd27a25e6db66deea50112633b63f7eae907178cc7f50f12dd8ad6aba1"
|
| 54 |
},
|
| 55 |
+
"assessment/RASPBERRY_PI.md": {
|
| 56 |
+
"bytes": 709,
|
| 57 |
+
"sha256": "44e705c5bbf3c3488738170fc831418543d572a4a929d4c58bfeeb721b6d192d"
|
| 58 |
+
},
|
| 59 |
"assessment/benchmark_device.py": {
|
| 60 |
"bytes": 6302,
|
| 61 |
"sha256": "4a188470cb99e67fb804bb0fbdc3def5ae6751fdf686ae15476604d4862ab552"
|
|
|
|
| 68 |
"bytes": 5579,
|
| 69 |
"sha256": "8df51447b3b6416bc551bced731a4ea732a32a13a2693247ae239f71450356f4"
|
| 70 |
},
|
| 71 |
+
"assessment/robotics_edge_v1/REPORT.md": {
|
| 72 |
+
"bytes": 10707,
|
| 73 |
+
"sha256": "64c6e4aa8a79ef4ca070fc72682fecff09cd20bc15f5c084b60280a5a6ea270d"
|
| 74 |
},
|
| 75 |
"assessment/robotics_edge_v1/cases.jsonl": {
|
| 76 |
"bytes": 95602,
|
|
|
|
| 100 |
"bytes": 389133,
|
| 101 |
"sha256": "71cc0ac4c6a6195863a25b2788a21d839415058eeca5cc4a92091487dc496d7b"
|
| 102 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
"config.json": {
|
| 104 |
"bytes": 682,
|
| 105 |
"sha256": "a66629f39ecb44414aefdf78aa947829e37daf6e6a44be8d710e944ec90ef60a"
|
| 106 |
},
|
| 107 |
+
"edge_benchmarks/rpi5-2026-09-26/REPORT.md": {
|
| 108 |
+
"bytes": 6252,
|
| 109 |
+
"sha256": "6fc28a537a7261320a96b93f0a55108904d0abca69419b690f336b86af8de990"
|
| 110 |
+
},
|
| 111 |
+
"edge_benchmarks/rpi5-2026-09-26/benchmark.py": {
|
| 112 |
+
"bytes": 13816,
|
| 113 |
+
"sha256": "2a2a0694235642db38ffdbfe3838d5318224309cb4161b85e33486c1743f2061"
|
| 114 |
+
},
|
| 115 |
+
"edge_benchmarks/rpi5-2026-09-26/bundle_manifest.json": {
|
| 116 |
+
"bytes": 17568,
|
| 117 |
+
"sha256": "29754d52abb0f2201d55819186df85d0df8f733a740d2e128b2830f587027b38"
|
| 118 |
+
},
|
| 119 |
+
"edge_benchmarks/rpi5-2026-09-26/cases/poc1_latency.json": {
|
| 120 |
+
"bytes": 2180,
|
| 121 |
+
"sha256": "157cb10e338b20c09e7c383eb9d5ed1f23984ded1984f32f2d228b65ee8e6700"
|
| 122 |
+
},
|
| 123 |
+
"edge_benchmarks/rpi5-2026-09-26/cases/poc1_quality.json": {
|
| 124 |
+
"bytes": 193903,
|
| 125 |
+
"sha256": "a3e20755d442252731b96f8faff4a9d5b4e4074af130f9b4c9063be5e60504ee"
|
| 126 |
+
},
|
| 127 |
+
"edge_benchmarks/rpi5-2026-09-26/environment.lock.txt": {
|
| 128 |
+
"bytes": 506,
|
| 129 |
+
"sha256": "0dae9933461ff1551edb8afdc7cc89e1b63dacddcd1dcca33d4be07b7e5bd0ba"
|
| 130 |
+
},
|
| 131 |
+
"edge_benchmarks/rpi5-2026-09-26/provenance.json": {
|
| 132 |
+
"bytes": 9358,
|
| 133 |
+
"sha256": "f5a12e015ad46ccd193afe2cd9aa7e2ed757384e07367578256fd328ea0e874c"
|
| 134 |
+
},
|
| 135 |
+
"edge_benchmarks/rpi5-2026-09-26/readings.csv": {
|
| 136 |
+
"bytes": 103401,
|
| 137 |
+
"sha256": "1c487fd04aa8f1a608aa2f81f4ca275a7bdc2bd121e0bd2cd72131b39eeae7ff"
|
| 138 |
+
},
|
| 139 |
+
"edge_benchmarks/rpi5-2026-09-26/reproduce.py": {
|
| 140 |
+
"bytes": 1503,
|
| 141 |
+
"sha256": "1fb5bb68f46b02329ecccb66f3de20b301f66e0d41c4eaba53fa7e3224c982ee"
|
| 142 |
+
},
|
| 143 |
+
"edge_benchmarks/rpi5-2026-09-26/results/poc1_t1.json": {
|
| 144 |
+
"bytes": 542969,
|
| 145 |
+
"sha256": "67d94f301dddf46c0899ce9161c1a3ccab66faca9ec08ebc80b874a908f438f6"
|
| 146 |
+
},
|
| 147 |
+
"edge_benchmarks/rpi5-2026-09-26/results/poc1_t4.json": {
|
| 148 |
+
"bytes": 230245,
|
| 149 |
+
"sha256": "afba1ed7e145a64149508e3b7f61264ea0e7a5155acf06ef7cb0a2c91f2af141"
|
| 150 |
+
},
|
| 151 |
+
"edge_benchmarks/rpi5-2026-09-26/runtime_identity.json": {
|
| 152 |
+
"bytes": 5078,
|
| 153 |
+
"sha256": "d5b81efe500eaa4550833a6dd3883e7f9d2a03a9a7e77932386cffcba81b3780"
|
| 154 |
+
},
|
| 155 |
+
"edge_benchmarks/rpi5-2026-09-26/temperature_latency.png": {
|
| 156 |
+
"bytes": 154941,
|
| 157 |
+
"sha256": "b84806634d248d984b85ec0603a61be8ade6b6738c59f7c4c1f2f401b85d586d"
|
| 158 |
+
},
|
| 159 |
"evaluation/metrics.json": {
|
| 160 |
"bytes": 10936,
|
| 161 |
"sha256": "9f53479d2b67bd06fc3a5b56f2dba2856bcb11778cef1fe0afa0e0a39a99d6c9"
|
|
|
|
| 172 |
"bytes": 132,
|
| 173 |
"sha256": "9b962893b09457be3f8b0d343c8d64d33048443e2e57fbe421cd40d2dec8edf9"
|
| 174 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
"manifest.json": {
|
| 176 |
"bytes": 12618,
|
| 177 |
"sha256": "2ead74207a38ad593819da12c52392bad8a273cc62e6842a8278ebffaa561eaa"
|
|
|
|
| 180 |
"bytes": 4380048,
|
| 181 |
"sha256": "7eed2ed8eb5455f4195cba48ff38b2bc8ff8228cefaf7ee6c477200c776a8ea3"
|
| 182 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 183 |
"output_schema.json": {
|
| 184 |
"bytes": 797,
|
| 185 |
"sha256": "e5c670db2756306cfb58f43e020426a174aef2f60c643ec0cc72920be4aaae86"
|
| 186 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 187 |
"requirements.txt": {
|
| 188 |
"bytes": 111,
|
| 189 |
"sha256": "e565b0c29221c7e17347cdbaeaa7cba2efee571d2ca8f742d4882925705db460"
|
|
|
|
| 220 |
"bytes": 2077,
|
| 221 |
"sha256": "66e9e99973752a3b3b6adf621fa1574aa576da1fd2f344b8673196de207da9ad"
|
| 222 |
},
|
| 223 |
+
"training/Tiny_Home_JSON_A100.ipynb": {
|
| 224 |
+
"bytes": 61976,
|
| 225 |
+
"sha256": "ed056ea07f969f1983b1d5efa98030df5ce72ab571b0369616b3e33b6a5d8365"
|
| 226 |
+
},
|
| 227 |
"training/audit_dataset.py": {
|
| 228 |
"bytes": 4051,
|
| 229 |
"sha256": "687b8c1cfabb9031eb9ddc901de47b4c2115b77d4aa22c6b35912556ae7f9f4e"
|
|
|
|
| 240 |
"bytes": 1024,
|
| 241 |
"sha256": "1cafbddca61420914c6435de449af55007fd8ec7cc06ba58b399ffc9a7d113ea"
|
| 242 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
"training/train_log.jsonl": {
|
| 244 |
"bytes": 14843,
|
| 245 |
"sha256": "c371de9912ae1d6e589551685c20735be1ff5177271d375eeb69ba5fc7195075"
|
|
|
|
| 271 |
},
|
| 272 |
"documentation_patch": "Repository renamed at the publisher's request; model title, usage and linked dataset references updated. Weights, runtime code and all training/evaluation data are unchanged.",
|
| 273 |
"previous_release_commit": "89ccd2a58be3831640b13e9e1c63d1234d25ea39",
|
| 274 |
+
"renamed_from": "sraivante/tiny-home-json-1m-v1",
|
| 275 |
+
"edge_measurement_update": {
|
| 276 |
+
"revision": "edge-rpi5-20260926",
|
| 277 |
+
"date": "2026-09-26",
|
| 278 |
+
"weights_and_training_data_changed": false,
|
| 279 |
+
"files": "edge_benchmarks/rpi5-2026-09-26"
|
| 280 |
+
}
|
| 281 |
}
|