v2: corrected generator, 10 000-episode checkpoint, changelog, Core ML packages
Browse files- README.md +101 -65
- coreml/conversion.json +13 -7
- coreml/sv0_forms_fp16_options40.mlpackage/Data/com.apple.CoreML/model.mlmodel +2 -2
- coreml/sv0_forms_fp16_options40.mlpackage/Data/com.apple.CoreML/weights/weight.bin +1 -1
- coreml/sv0_forms_fp16_options40.mlpackage/Manifest.json +8 -8
- coreml/sv0_forms_int4_options40.mlpackage/Data/com.apple.CoreML/model.mlmodel +2 -2
- coreml/sv0_forms_int4_options40.mlpackage/Data/com.apple.CoreML/weights/weight.bin +1 -1
- coreml/sv0_forms_int4_options40.mlpackage/Manifest.json +8 -8
- coreml/sv0_forms_int8_options40.mlpackage/Data/com.apple.CoreML/model.mlmodel +2 -2
- coreml/sv0_forms_int8_options40.mlpackage/Data/com.apple.CoreML/weights/weight.bin +1 -1
- coreml/sv0_forms_int8_options40.mlpackage/Manifest.json +3 -3
- eval/RESULTS-SV0-COREML.md +0 -94
- eval/RESULTS-SV0-pytorch.md +0 -94
- eval/RESULTS-SV0-v2.md +57 -0
- eval/corpus-manifest-10000-episodes.json +44 -0
- eval/demo-handwritten.jsonl +50 -0
- eval/results-coreml.json +102 -102
- eval/results-pytorch.json +53 -189
- eval/size-sweep.jsonl +3 -0
- sv0-forms.json +63 -63
- sv0-forms.safetensors +1 -1
README.md
CHANGED
|
@@ -14,79 +14,110 @@ tags:
|
|
| 14 |
- coreml
|
| 15 |
- apple-silicon
|
| 16 |
base_model: []
|
|
|
|
|
|
|
| 17 |
---
|
| 18 |
|
| 19 |
# One-Pass SV-Forms (SV0) — a Swedish one-pass form specialist (research checkpoint)
|
| 20 |
|
| 21 |
**This is a research checkpoint, not a product.** It is a 706 048-parameter model that scores a
|
| 22 |
-
supplied list of options in **one forward pass** — the "Jev"/System One shape — trained
|
| 23 |
-
**synthetic** Swedish forms
|
| 24 |
-
|
| 25 |
-
phone (Core ML package: 1.4 MB fp16, 787 KB int8).
|
| 26 |
|
| 27 |
| | |
|
| 28 |
| --- | --- |
|
| 29 |
-
| Task | given a UI element (role, label, state) plus the entities extracted from a document, pick one option: `fyll <
|
| 30 |
| Architecture | byte-level embeddings + 2-layer Transformer encoder (width 128, 4 heads) + option-attention head; `tinyx` |
|
| 31 |
-
| Parameters | 706 048
|
| 32 |
| Context / option budget | 224 bytes of context, 96 bytes per option, **up to 40 options** |
|
| 33 |
-
| Training data |
|
| 34 |
| Licence | MIT (weights and code) |
|
| 35 |
-
| Lineage | independent implementation of the same
|
| 36 |
|
| 37 |
## Measured results (our harness, Apple M4)
|
| 38 |
|
| 39 |
| Run | decisions | top-1 | majority-class baseline | ECE | silently skipped a required fill |
|
| 40 |
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 41 |
-
| Held-out synthetic test (form-signature disjoint) | 2
|
| 42 |
-
| Hand-written out-of-distribution
|
| 43 |
-
| Shuffled-context control (test) | 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
-
|
| 46 |
-
`fill` 75.5 %. The shuffled-context control is the interesting one: rotating contexts between
|
| 47 |
-
rows drops the model below the majority baseline, i.e. it really reads the element label and the
|
| 48 |
-
document rather than exploiting option statistics.
|
| 49 |
-
|
| 50 |
-
For comparison, the released English checkpoint of the same family scores **21.4 %** on exactly
|
| 51 |
-
these Swedish rows — below the majority baseline, at its own shuffled-control floor. The
|
| 52 |
-
language was the barrier, not the contract.
|
| 53 |
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
|
| 56 |
| Variant | package | top-1 | argmax parity vs PyTorch | median latency | p95 |
|
| 57 |
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 58 |
-
| fp16
|
| 59 |
-
|
|
| 60 |
-
|
|
| 61 |
-
|
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
invent a value it was not given, and does not decide execution order.
|
| 76 |
-
- **Not finished.** Validation was still improving when the run stopped (48 % → 63 % → 79 % →
|
| 77 |
-
83 % top-1 over four epochs), so treat 83 % as a floor for this recipe, not a ceiling.
|
| 78 |
-
- **Not safe to run unsupervised on real data.** 7.5 % of required fills are answered "skip" —
|
| 79 |
-
a required field that silently stays empty. Any real integration must verify outcomes outside
|
| 80 |
-
the model (fail-closed execution, dry run, one submit, human review before consequential
|
| 81 |
-
actions) — see the runtime contract in Cua's `planner.py` for a good pattern.
|
| 82 |
-
|
| 83 |
-
## Intended use
|
| 84 |
-
|
| 85 |
-
Research on bounded, high-volume Swedish interface workflows where the option set is supplied by
|
| 86 |
-
deterministic code: filling forms from an extracted document, triaging/routing where the choices
|
| 87 |
-
are known in advance, or as a **criteria-decision** layer where a calibrated distribution per
|
| 88 |
-
question is more useful than generated prose. Also as a worked example of how to build and
|
| 89 |
-
measure a language-local one-pass specialist.
|
| 90 |
|
| 91 |
## Usage
|
| 92 |
|
|
@@ -94,27 +125,32 @@ measure a language-local one-pass specialist.
|
|
| 94 |
from pathlib import Path
|
| 95 |
from huggingface_hub import hf_hub_download
|
| 96 |
|
| 97 |
-
# the checkpoint format is <name>.safetensors + <name>.json (architecture + hashes)
|
| 98 |
weights = Path(hf_hub_download("precisit/one-pass-sv-forms", "sv0-forms.safetensors"))
|
| 99 |
hf_hub_download("precisit/one-pass-sv-forms", "sv0-forms.json", local_dir=weights.parent)
|
| 100 |
-
# then either use the Core ML packages (no Python runtime needed) or the PyTorch
|
| 101 |
-
#
|
| 102 |
-
#
|
| 103 |
```
|
| 104 |
|
| 105 |
The context string and options must be built exactly as in training (byte ids = UTF-8 byte + 1,
|
| 106 |
-
zero
|
| 107 |
-
`ELEMENT <
|
| 108 |
-
the
|
| 109 |
|
| 110 |
## Building your own
|
| 111 |
|
| 112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
|
| 114 |
## Licence and attribution
|
| 115 |
|
| 116 |
-
MIT. The architecture, training loop and evaluation metrics
|
| 117 |
-
`libs/cua-s1`
|
| 118 |
-
|
| 119 |
-
Core ML
|
| 120 |
-
|
|
|
|
|
|
| 14 |
- coreml
|
| 15 |
- apple-silicon
|
| 16 |
base_model: []
|
| 17 |
+
datasets:
|
| 18 |
+
- precisit/one-pass-sv-forms-synthetic
|
| 19 |
---
|
| 20 |
|
| 21 |
# One-Pass SV-Forms (SV0) — a Swedish one-pass form specialist (research checkpoint)
|
| 22 |
|
| 23 |
**This is a research checkpoint, not a product.** It is a 706 048-parameter model that scores a
|
| 24 |
+
supplied list of options in **one forward pass** — the "Jev"/System One shape — trained from
|
| 25 |
+
scratch on **synthetic** Swedish forms. It generates no text, needs no tokenizer, and answers in
|
| 26 |
+
about a millisecond on an Apple device (Core ML: 1.4 MB fp16, 787 KB int8).
|
|
|
|
| 27 |
|
| 28 |
| | |
|
| 29 |
| --- | --- |
|
| 30 |
+
| Task | given a UI element (role, label, state) plus the entities extracted from a document, pick one option: `fyll <entitet>` / `kryssa` / `klicka` / `hoppa över` |
|
| 31 |
| Architecture | byte-level embeddings + 2-layer Transformer encoder (width 128, 4 heads) + option-attention head; `tinyx` |
|
| 32 |
+
| Parameters | 706 048 |
|
| 33 |
| Context / option budget | 224 bytes of context, 96 bytes per option, **up to 40 options** |
|
| 34 |
+
| Training data | 10 000 synthetic Swedish form episodes (234 921 decisions); **no real form, person or customer data** |
|
| 35 |
| Licence | MIT (weights and code) |
|
| 36 |
+
| Lineage | independent implementation of the same interface as [Cua's CUA-S1](https://huggingface.co/cua-ai/cua-s1-forms) and [jevlike](https://github.com/vinnylarouge/jevlike); trained from scratch, not a fine-tune of either |
|
| 37 |
|
| 38 |
## Measured results (our harness, Apple M4)
|
| 39 |
|
| 40 |
| Run | decisions | top-1 | majority-class baseline | ECE | silently skipped a required fill |
|
| 41 |
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 42 |
+
| Held-out synthetic test (form-signature disjoint) | 2 310 | **99.29 %** | 47.36 % | 0.0014 | **1** |
|
| 43 |
+
| Hand-written out-of-distribution demo | 50 | **100.00 %** | 64.00 % | — | 0 |
|
| 44 |
+
| Shuffled-context control (same test rows) | 2 310 | 31.99 % | 47.36 % | — | — |
|
| 45 |
+
|
| 46 |
+
The shuffled-context control is the number to look at first: rotating contexts between rows drops
|
| 47 |
+
the model to 31.99 %, well below the majority baseline, so it is reading the element label and the
|
| 48 |
+
document rather than exploiting option statistics. Without that control a 100 % demo set means
|
| 49 |
+
nothing.
|
| 50 |
+
|
| 51 |
+
For comparison, the released English checkpoint of the same family scores **21.4 %** on these
|
| 52 |
+
Swedish rows — below the majority baseline, at its own shuffled-control floor. The language was
|
| 53 |
+
the barrier, not the interface.
|
| 54 |
+
|
| 55 |
+
### Data-size curve (same 4-epoch schedule, same seed, corrected generator)
|
| 56 |
+
|
| 57 |
+
| Episodes | Train decisions | Test top-1 | Silent skips | ECE | Training time (M4) |
|
| 58 |
+
| ---: | ---: | ---: | ---: | ---: | ---: |
|
| 59 |
+
| 900 | 21 305 | 77.10 % | 127 | 0.0216 | 32 min |
|
| 60 |
+
| 4 000 | 94 405 | 98.94 % | 6 | 0.0014 | 56 min |
|
| 61 |
+
| **10 000** | **234 921** | **99.29 %** | **1** | 0.0014 | 163 min |
|
| 62 |
+
|
| 63 |
+
This checkpoint is the 10 000-episode point. The curve is published because it is the useful
|
| 64 |
+
part: at 900 episodes the same pipeline sits at 77 %, so a single small run would have been
|
| 65 |
+
misread as a statement about the method rather than about the data.
|
| 66 |
+
|
| 67 |
+
## Changelog
|
| 68 |
+
|
| 69 |
+
- **v2 (2026-09-21)** — this release. Two fixes and a scale-up, all three visible above:
|
| 70 |
+
1. **Corpus correctness.** The Swedish catalogue's `personnummer` generator emitted nine digits
|
| 71 |
+
formatted `DDDDDDDD-DD` and `organisationsnummer` emitted `DDDDD-DDDDD`; both are now the
|
| 72 |
+
real Swedish shape `YYMMDD-XXXX`. As a side effect the models can no longer identify those
|
| 73 |
+
two concepts from the *shape of the value* alone — the bug had been an accidental
|
| 74 |
+
giveaway — so per-action accuracy on `fill` is the honest kind now.
|
| 75 |
+
2. **Scale.** 900 → 10 000 episodes, which moved top-1 from 77 % to 99.29 % and silent skips
|
| 76 |
+
from 127 to 1.
|
| 77 |
+
3. **Correction of our own first explanation.** An intermediate 900-episode run on the
|
| 78 |
+
corrected corpus scored 83.02 % (v1) versus 77.10 % (corrected), and we initially attributed
|
| 79 |
+
that six-point drop to the removed giveaway. The 4 000- and 10 000-episode points show the
|
| 80 |
+
dominant factor was data size, not corpus correctness. The measurement is recorded here
|
| 81 |
+
because we published the wrong explanation for part of a working day.
|
| 82 |
+
- **v1 (2026-09-21)** — first release: 900 synthetic episodes, 83.02 % top-1, 7.5 % silent skips,
|
| 83 |
+
787 KB int8. Superseded; kept in the history of this repository rather than hidden.
|
| 84 |
|
| 85 |
+
## What it is NOT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
+
- **Not trained or tested on real Swedish forms.** The corpus is synthetic by construction:
|
| 88 |
+
fictional names, `.invalid` e-mail domains, generated personnummer-shaped identifiers that pass
|
| 89 |
+
their checksum but belong to nobody. The only non-synthetic evidence is a 50-decision set we
|
| 90 |
+
wrote ourselves. A small set built from two of our own shipped forms (Kanslist, Pratsam) is the
|
| 91 |
+
next measurement, not a claim in this card.
|
| 92 |
+
- **Not an agent.** It does not generate text, cannot invent a value it was not given, and does
|
| 93 |
+
not decide execution order — the option list and the sequence come from ordinary code around it.
|
| 94 |
+
- **Not safe unsupervised.** One required fill out of 29 839 was still answered "skip": a silent
|
| 95 |
+
failure. Any real integration must check outcomes outside the model (fail closed, dry run, one
|
| 96 |
+
submit, human review before consequential actions).
|
| 97 |
+
- **Not tuned for throughput.** One decision per `predict` call is what the latency numbers
|
| 98 |
+
describe; batching is untested.
|
| 99 |
+
|
| 100 |
+
## Core ML export (same checkpoint, coremltools 9.0, Apple M4)
|
| 101 |
|
| 102 |
| Variant | package | top-1 | argmax parity vs PyTorch | median latency | p95 |
|
| 103 |
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 104 |
+
| fp16, CPU + ANE | 1.44 MB | 99.29 % | 0.99950 (15 / 29 839) | 1.314 ms | 1.412 ms |
|
| 105 |
+
| fp16, CPU only | 1.44 MB | 99.28 % | — | 1.727 ms | 1.929 ms |
|
| 106 |
+
| **int8, CPU + ANE** | **787 KB** | **99.29 %** | 0.99956 (13 / 29 839) | 1.314 ms | 1.411 ms |
|
| 107 |
+
| int4, CPU + ANE | 481 KB | **49.92 %** | 0.49675 (15 015 / 29 839) | 1.984 ms | 2.115 ms |
|
| 108 |
+
|
| 109 |
+
**int8 is the variant to use; int4 does not work for this checkpoint** and the collapsed variant is
|
| 110 |
+
published as evidence rather than omitted. Two honest notes about it:
|
| 111 |
+
|
| 112 |
+
- On the *converged English* checkpoint of this family, the same 4-bit palettisation cost 14
|
| 113 |
+
decisions in 24 367. On both of ours it destroys the model (83 % → 51 % on v1, 99.29 % → 49.92 %
|
| 114 |
+
here) and the 4-bit graph does not compile for the Neural Engine (`ANECCompile() FAILED`).
|
| 115 |
+
Whatever the difference is, it is not training level: we first assumed quantisation headroom
|
| 116 |
+
tracked convergence, and the well-trained checkpoint falsifies that. We do not know the exact
|
| 117 |
+
quantisation recipe behind the English release, so we report the contradiction instead of
|
| 118 |
+
explaining it away.
|
| 119 |
+
- fp16 parity is 99.95 %, not 100 %, on 29 839 rows. Measure parity per checkpoint; do not inherit
|
| 120 |
+
someone else's 1.000000.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
|
| 122 |
## Usage
|
| 123 |
|
|
|
|
| 125 |
from pathlib import Path
|
| 126 |
from huggingface_hub import hf_hub_download
|
| 127 |
|
|
|
|
| 128 |
weights = Path(hf_hub_download("precisit/one-pass-sv-forms", "sv0-forms.safetensors"))
|
| 129 |
hf_hub_download("precisit/one-pass-sv-forms", "sv0-forms.json", local_dir=weights.parent)
|
| 130 |
+
# then either use the Core ML packages (no Python runtime needed, see example.py) or the PyTorch
|
| 131 |
+
# code and the full recipe in the toolkit repository:
|
| 132 |
+
# https://github.com/precisit/one-pass-specialists
|
| 133 |
```
|
| 134 |
|
| 135 |
The context string and options must be built exactly as in training (byte ids = UTF-8 byte + 1,
|
| 136 |
+
zero padded; `UPPGIFT fyll i formuläret från dokumentet och skicka sedan in` / `FORM <titel>` /
|
| 137 |
+
`ELEMENT <roll> "<etikett>" value="…"`). A mismatch there is the most likely cause of poor output —
|
| 138 |
+
the generator, the catalogue and the scoring harness are in the toolkit repository.
|
| 139 |
|
| 140 |
## Building your own
|
| 141 |
|
| 142 |
+
[`precisit/one-pass-specialists`](https://github.com/precisit/one-pass-specialists) is the public
|
| 143 |
+
toolkit that produced this checkpoint: catalogue, synthetic generator with form-disjoint splits,
|
| 144 |
+
trainer, evaluation (including the shuffled-context control and the silent-skip count), Core ML
|
| 145 |
+
export with a bit-identity proof before anything is written, and the SV0 recipe with all receipts.
|
| 146 |
+
The synthetic corpus itself is published as
|
| 147 |
+
[`precisit/one-pass-sv-forms-synthetic`](https://huggingface.co/datasets/precisit/one-pass-sv-forms-synthetic).
|
| 148 |
|
| 149 |
## Licence and attribution
|
| 150 |
|
| 151 |
+
MIT. The architecture, training loop and evaluation metrics are vendored unmodified from Cua's
|
| 152 |
+
MIT-licensed [`libs/cua-s1`](https://github.com/trycua/cua/tree/main/libs/cua-s1) (which credits
|
| 153 |
+
`jevlike` for the option-attention head design). The Swedish catalogue, synthetic generator,
|
| 154 |
+
training runs, measurements and Core ML tooling are Precisit's. **No TypeSafe AI code, weights,
|
| 155 |
+
data or API output was used** — "Jev" and "System One" are their names for a similar interface, and
|
| 156 |
+
this is an independent implementation. See `THIRD_PARTY_NOTICES.md`.
|
coreml/conversion.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
| 1 |
{
|
| 2 |
-
"checkpoint_sha256": "
|
| 3 |
-
"created_utc": "2026-09-
|
| 4 |
"limits": {
|
| 5 |
"context_bytes": 224,
|
| 6 |
"max_options": 40,
|
| 7 |
"option_bytes": 96
|
| 8 |
},
|
| 9 |
-
"model": "
|
| 10 |
"model_config": {
|
| 11 |
"context_tokens": 224,
|
| 12 |
"encoder": "tinyx",
|
|
@@ -22,11 +22,17 @@
|
|
| 22 |
"python": "3.12.14",
|
| 23 |
"torch": "2.7.0"
|
| 24 |
},
|
| 25 |
-
"trace_check":
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
"variants": {
|
| 27 |
"fp16": {
|
| 28 |
"minimum_target": "iOS17/macOS14",
|
| 29 |
-
"path": "
|
| 30 |
"precision": "float16"
|
| 31 |
},
|
| 32 |
"int4": {
|
|
@@ -34,14 +40,14 @@
|
|
| 34 |
"group_size": 32,
|
| 35 |
"minimum_target": "iOS18/macOS15",
|
| 36 |
"mode": "KMEANS",
|
| 37 |
-
"path": "
|
| 38 |
"precision": "int4_weights_float16_compute"
|
| 39 |
},
|
| 40 |
"int8": {
|
| 41 |
"granularity": "per_tensor",
|
| 42 |
"minimum_target": "iOS17/macOS14",
|
| 43 |
"mode": "UNIFORM",
|
| 44 |
-
"path": "
|
| 45 |
"precision": "int8_weights_float16_compute"
|
| 46 |
}
|
| 47 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"checkpoint_sha256": "4f35bfac96dd23c058dfc098986c3f4cff39b836a177fb60e026b5f06c2ba782",
|
| 3 |
+
"created_utc": "2026-09-21T18:30:58Z",
|
| 4 |
"limits": {
|
| 5 |
"context_bytes": 224,
|
| 6 |
"max_options": 40,
|
| 7 |
"option_bytes": 96
|
| 8 |
},
|
| 9 |
+
"model": "one_pass_forms (one-pass specialist)",
|
| 10 |
"model_config": {
|
| 11 |
"context_tokens": 224,
|
| 12 |
"encoder": "tinyx",
|
|
|
|
| 22 |
"python": "3.12.14",
|
| 23 |
"torch": "2.7.0"
|
| 24 |
},
|
| 25 |
+
"trace_check": {
|
| 26 |
+
"logit_tolerance": 0.0001,
|
| 27 |
+
"trace_argmax_agreement": 1.0,
|
| 28 |
+
"trace_max_abs_logit_difference": 2.0742416381835938e-05,
|
| 29 |
+
"trace_max_abs_probability_difference": 1.0132789611816406e-06,
|
| 30 |
+
"verify_rows": 512
|
| 31 |
+
},
|
| 32 |
"variants": {
|
| 33 |
"fp16": {
|
| 34 |
"minimum_target": "iOS17/macOS14",
|
| 35 |
+
"path": "one_pass_forms_fp16_options40.mlpackage",
|
| 36 |
"precision": "float16"
|
| 37 |
},
|
| 38 |
"int4": {
|
|
|
|
| 40 |
"group_size": 32,
|
| 41 |
"minimum_target": "iOS18/macOS15",
|
| 42 |
"mode": "KMEANS",
|
| 43 |
+
"path": "one_pass_forms_int4_options40.mlpackage",
|
| 44 |
"precision": "int4_weights_float16_compute"
|
| 45 |
},
|
| 46 |
"int8": {
|
| 47 |
"granularity": "per_tensor",
|
| 48 |
"minimum_target": "iOS17/macOS14",
|
| 49 |
"mode": "UNIFORM",
|
| 50 |
+
"path": "one_pass_forms_int8_options40.mlpackage",
|
| 51 |
"precision": "int8_weights_float16_compute"
|
| 52 |
}
|
| 53 |
}
|
coreml/sv0_forms_fp16_options40.mlpackage/Data/com.apple.CoreML/model.mlmodel
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:495202889ec32f7c0b0423d8b7c621ee9ccb502e00b3c3118d3f4a08a168d956
|
| 3 |
+
size 58601
|
coreml/sv0_forms_fp16_options40.mlpackage/Data/com.apple.CoreML/weights/weight.bin
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 1448256
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:aabd5c5ee30d9cb706cae1a4b49df4b8059cbad6f44e8be504d54eec547d8064
|
| 3 |
size 1448256
|
coreml/sv0_forms_fp16_options40.mlpackage/Manifest.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
| 1 |
{
|
| 2 |
"fileFormatVersion": "1.0.0",
|
| 3 |
"itemInfoEntries": {
|
| 4 |
-
"
|
| 5 |
-
"author": "com.apple.CoreML",
|
| 6 |
-
"description": "CoreML Model Specification",
|
| 7 |
-
"name": "model.mlmodel",
|
| 8 |
-
"path": "com.apple.CoreML/model.mlmodel"
|
| 9 |
-
},
|
| 10 |
-
"D3C625CB-29B6-456F-8FB3-B1111990E4E6": {
|
| 11 |
"author": "com.apple.CoreML",
|
| 12 |
"description": "CoreML Model Weights",
|
| 13 |
"name": "weights",
|
| 14 |
"path": "com.apple.CoreML/weights"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
}
|
| 16 |
},
|
| 17 |
-
"rootModelIdentifier": "
|
| 18 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"fileFormatVersion": "1.0.0",
|
| 3 |
"itemInfoEntries": {
|
| 4 |
+
"A03F5FFD-6BD4-420E-A7D8-A61BBF858DEF": {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
"author": "com.apple.CoreML",
|
| 6 |
"description": "CoreML Model Weights",
|
| 7 |
"name": "weights",
|
| 8 |
"path": "com.apple.CoreML/weights"
|
| 9 |
+
},
|
| 10 |
+
"A5AD9673-5F84-42BF-89B0-E543BEEC1402": {
|
| 11 |
+
"author": "com.apple.CoreML",
|
| 12 |
+
"description": "CoreML Model Specification",
|
| 13 |
+
"name": "model.mlmodel",
|
| 14 |
+
"path": "com.apple.CoreML/model.mlmodel"
|
| 15 |
}
|
| 16 |
},
|
| 17 |
+
"rootModelIdentifier": "A5AD9673-5F84-42BF-89B0-E543BEEC1402"
|
| 18 |
}
|
coreml/sv0_forms_int4_options40.mlpackage/Data/com.apple.CoreML/model.mlmodel
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7739d3302c68e6284a6d50542f01fb4a72b665f66c5f27f41afaf7859b2356a0
|
| 3 |
+
size 58296
|
coreml/sv0_forms_int4_options40.mlpackage/Data/com.apple.CoreML/weights/weight.bin
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 433664
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d5530285655800fb5a12ea7698c8dd424c2c108de0985f9ba76a5f5ddbc969ed
|
| 3 |
size 433664
|
coreml/sv0_forms_int4_options40.mlpackage/Manifest.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
| 1 |
{
|
| 2 |
"fileFormatVersion": "1.0.0",
|
| 3 |
"itemInfoEntries": {
|
| 4 |
-
"
|
| 5 |
-
"author": "com.apple.CoreML",
|
| 6 |
-
"description": "CoreML Model Specification",
|
| 7 |
-
"name": "model.mlmodel",
|
| 8 |
-
"path": "com.apple.CoreML/model.mlmodel"
|
| 9 |
-
},
|
| 10 |
-
"7B688A87-1DA1-4178-9B4F-2F6A9FD6C274": {
|
| 11 |
"author": "com.apple.CoreML",
|
| 12 |
"description": "CoreML Model Weights",
|
| 13 |
"name": "weights",
|
| 14 |
"path": "com.apple.CoreML/weights"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
}
|
| 16 |
},
|
| 17 |
-
"rootModelIdentifier": "
|
| 18 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"fileFormatVersion": "1.0.0",
|
| 3 |
"itemInfoEntries": {
|
| 4 |
+
"87C06B3D-7FF4-41E3-AF3D-5E6344006172": {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
"author": "com.apple.CoreML",
|
| 6 |
"description": "CoreML Model Weights",
|
| 7 |
"name": "weights",
|
| 8 |
"path": "com.apple.CoreML/weights"
|
| 9 |
+
},
|
| 10 |
+
"A57B64A4-F072-4A85-9FC2-C7734A8FF115": {
|
| 11 |
+
"author": "com.apple.CoreML",
|
| 12 |
+
"description": "CoreML Model Specification",
|
| 13 |
+
"name": "model.mlmodel",
|
| 14 |
+
"path": "com.apple.CoreML/model.mlmodel"
|
| 15 |
}
|
| 16 |
},
|
| 17 |
+
"rootModelIdentifier": "A57B64A4-F072-4A85-9FC2-C7734A8FF115"
|
| 18 |
}
|
coreml/sv0_forms_int8_options40.mlpackage/Data/com.apple.CoreML/model.mlmodel
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4090812ee4717e31f4cb6b40d74c68cf9c9a9f3b27530f62cda5e527fdf849e8
|
| 3 |
+
size 62980
|
coreml/sv0_forms_int8_options40.mlpackage/Data/com.apple.CoreML/weights/weight.bin
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 742528
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ce77dcb8f8a241808fb0c112d923ba9e3524feb0334c3e610e59b8bcf3ea2981
|
| 3 |
size 742528
|
coreml/sv0_forms_int8_options40.mlpackage/Manifest.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
| 1 |
{
|
| 2 |
"fileFormatVersion": "1.0.0",
|
| 3 |
"itemInfoEntries": {
|
| 4 |
-
"
|
| 5 |
"author": "com.apple.CoreML",
|
| 6 |
"description": "CoreML Model Weights",
|
| 7 |
"name": "weights",
|
| 8 |
"path": "com.apple.CoreML/weights"
|
| 9 |
},
|
| 10 |
-
"
|
| 11 |
"author": "com.apple.CoreML",
|
| 12 |
"description": "CoreML Model Specification",
|
| 13 |
"name": "model.mlmodel",
|
| 14 |
"path": "com.apple.CoreML/model.mlmodel"
|
| 15 |
}
|
| 16 |
},
|
| 17 |
-
"rootModelIdentifier": "
|
| 18 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"fileFormatVersion": "1.0.0",
|
| 3 |
"itemInfoEntries": {
|
| 4 |
+
"B757B5C4-7ED5-408A-BF9D-AC936B5068B1": {
|
| 5 |
"author": "com.apple.CoreML",
|
| 6 |
"description": "CoreML Model Weights",
|
| 7 |
"name": "weights",
|
| 8 |
"path": "com.apple.CoreML/weights"
|
| 9 |
},
|
| 10 |
+
"E7FEE6B0-8F77-4EDD-81C4-21BCC5EB9583": {
|
| 11 |
"author": "com.apple.CoreML",
|
| 12 |
"description": "CoreML Model Specification",
|
| 13 |
"name": "model.mlmodel",
|
| 14 |
"path": "com.apple.CoreML/model.mlmodel"
|
| 15 |
}
|
| 16 |
},
|
| 17 |
+
"rootModelIdentifier": "E7FEE6B0-8F77-4EDD-81C4-21BCC5EB9583"
|
| 18 |
}
|
eval/RESULTS-SV0-COREML.md
DELETED
|
@@ -1,94 +0,0 @@
|
|
| 1 |
-
# RESULTS-SV0-COREML — the Swedish SV0 specialist exported to Core ML
|
| 2 |
-
|
| 3 |
-
**Verdict: PARTIAL — fp16 and int8 export cleanly and run on the Neural Engine at the same
|
| 4 |
-
accuracy as PyTorch; int4 is _not_ usable for this checkpoint (83 % → 51 % top-1) and does not
|
| 5 |
-
compile for the ANE.** Recommended deployment artifact: **int8, 787 KB, ~1.3 ms per decision.**
|
| 6 |
-
|
| 7 |
-
## What was exported
|
| 8 |
-
|
| 9 |
-
`export_sv_coreml.py` in this directory converts `runs/sv-tinyx/model` (the SV0 checkpoint,
|
| 10 |
-
706 048 parameters) with coremltools 9.0, mirroring the fixed-shape contract of the
|
| 11 |
-
FluidInference CUA-S1 release: `context_ids (1, 224)` / `option_ids (1, 40, 96)` /
|
| 12 |
-
`option_mask (1, 40)`, all int32 byte-ids (byte + 1, 0 = pad), output `logits (1, 40)`.
|
| 13 |
-
`max_options` is **40** here rather than their 32 because our corpus tops out at 37 options —
|
| 14 |
-
the ceiling is baked into the export, so it must be sized from the widest real input.
|
| 15 |
-
|
| 16 |
-
Variants: fp16 (iOS17), int8 (UNIFORM, per-tensor, iOS17), int4 (KMEANS, per-grouped-channel,
|
| 17 |
-
group 32, iOS18). `conversion.json` records hashes, config and tooling versions.
|
| 18 |
-
|
| 19 |
-
## Export-time checks (all passed before any measurement)
|
| 20 |
-
|
| 21 |
-
| Check | Result |
|
| 22 |
-
| --- | --- |
|
| 23 |
-
| Export forward vs vendored model, 256 real rows, max abs logit difference | **0.0** (bit-identical) |
|
| 24 |
-
| Traced graph vs model, 64 real rows | max abs Δ 7.2 × 10⁻⁶, argmax agreement **1.0** |
|
| 25 |
-
|
| 26 |
-
## Measurements (Apple M4, macOS 26.6.2; 2 312 scored rows after 3 warm-up rows; same grader as the spike)
|
| 27 |
-
|
| 28 |
-
| Variant | package | test top-1 | demo top-1 | silent skips (of 1 008 fills) | argmax parity vs PyTorch | mismatches | median | p95 |
|
| 29 |
-
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 30 |
-
| PyTorch (MPS), reference | 2 828 784 B | **83.02 %** | 86 % | 76 | — | — | — | — |
|
| 31 |
-
| **fp16, CPU + ANE** | 1 507 481 B (1.44 MB) | 83.00 % | 85.11 % | 76 | 0.99870 | 3 / 2 312 | 1.307 ms | 1.460 ms |
|
| 32 |
-
| fp16, CPU only | 1 507 481 B | 83.04 % | — | 76 | 0.99913 | 2 / 2 312 | 1.734 ms | 1.917 ms |
|
| 33 |
-
| **int8, CPU + ANE** | **806 132 B (787 KB)** | **83.09 %** | 85.11 % | 76 | 0.99611 | 9 / 2 312 | 1.316 ms | 1.402 ms |
|
| 34 |
-
| int4, CPU + ANE | 492 584 B (481 KB) | **50.87 %** | 27.66 % | 954 | 0.48702 | 1 186 / 2 312 | 1.968 ms | 2.099 ms |
|
| 35 |
-
|
| 36 |
-
Fills per-action on fp16: `fill` 75.40 %, `skip` 88.26 %, `check` 96.55 %, `click` 93.67 % —
|
| 37 |
-
within a few rows of the PyTorch run, i.e. the export is behaviour-preserving.
|
| 38 |
-
|
| 39 |
-
## What the numbers say
|
| 40 |
-
|
| 41 |
-
1. **The export works, and the ANE helps here too**: fp16 median 1.307 ms with the ANE vs
|
| 42 |
-
1.734 ms CPU-only, p95 1.460 ms vs 1.917 ms. Smaller absolute win than on the English model
|
| 43 |
-
(whose weights are better conditioned), but the same direction.
|
| 44 |
-
2. **int8 is free and is the artifact to ship**: 787 KB (52 % of fp16), top-1 83.09 % — one
|
| 45 |
-
decision *better* than PyTorch on this split — 9 argmax deviations out of 2 312, identical
|
| 46 |
-
silent-skip count, and the same ANE behaviour.
|
| 47 |
-
3. **int4 does not transfer to an undertrained model.** On Cua's English checkpoint the same
|
| 48 |
-
kind of palettisation cost 14 decisions in 24 367 (0.06 pp); here it costs 1 186 in 2 312
|
| 49 |
-
(51 pp) and raises silent skips from 76 to 954. Two mechanisms are plausible and both point
|
| 50 |
-
the same way: a model that has not converged stores information in fine weight differences
|
| 51 |
-
that a 4-bit palette cannot represent, and the per-grouped-channel kmeans graph also fails
|
| 52 |
-
to compile for the ANE (`ANECCompile() FAILED`, seen repeatedly during save and load), which
|
| 53 |
-
is why its latency is worst despite being the smallest artifact. **Quantisation headroom is
|
| 54 |
-
a property of the training run, not of the architecture** — that is the transferable finding.
|
| 55 |
-
4. **fp16 parity is 99.87 %, not 100 %**, and that is expected rather than alarming: three
|
| 56 |
-
rows change their argmax under fp16 rounding on a model whose decision margins are thin
|
| 57 |
-
(83 % top-1). On the well-trained English model the same conversion showed zero deviations.
|
| 58 |
-
Parity must therefore be *measured* per checkpoint, not assumed — exactly what this harness
|
| 59 |
-
does.
|
| 60 |
-
|
| 61 |
-
## Pitfalls found while exporting (all cost a failed run)
|
| 62 |
-
|
| 63 |
-
- **`torch.jit.trace` under `torch.no_grad()` takes PyTorch's fused sparsity fast path**
|
| 64 |
-
(`torch._transformer_encoder_layer_fwd`), which coremltools cannot convert. Trace with grad
|
| 65 |
-
*enabled*.
|
| 66 |
-
- **The coremltools torch frontend has no `__or__` for bool tensors** → use
|
| 67 |
-
`torch.logical_or` / `torch.logical_not`. (`&`, `~` alone, and in-place `mask[:, 0] = True`
|
| 68 |
-
all fail; probe the op support in a 5-line script before rewriting a model.)
|
| 69 |
-
- **`clamp_min(1)` with a Python int trips `assert x.dtype == y.dtype`** in the frontend; pass a
|
| 70 |
-
same-dtype tensor constant.
|
| 71 |
-
- **`per_grouped_channel` palettisation requires an iOS18 deployment target**, so the int4
|
| 72 |
-
variant needs its own fp16 base converted at iOS18 (the upstream release does the same).
|
| 73 |
-
- **k-means palettisation needs `scikit-learn`**, which is not a coremltools dependency; the
|
| 74 |
-
error arrives mid-run, after the fp16 conversion has already succeeded — hence the
|
| 75 |
-
`REUSE_FP16=1` cache flag in the export script.
|
| 76 |
-
- **Palettizer API in coremltools 9.0**: wrap the op config —
|
| 77 |
-
`OptimizationConfig(global_config=OpPalettizerConfig(...))` — and note the mode names are
|
| 78 |
-
upper-case (`UNIFORM`, `KMEANS`) while granularity is `per_tensor` / `per_grouped_channel`
|
| 79 |
-
only.
|
| 80 |
-
- **Check that the traced graph is the model** before converting: `torch.jit.trace(..., check_trace=False)`
|
| 81 |
-
suppresses a noisy replay check, so the export script compares logits itself and aborts on
|
| 82 |
-
mismatch.
|
| 83 |
-
|
| 84 |
-
## Reproduction
|
| 85 |
-
|
| 86 |
-
```bash
|
| 87 |
-
# (in the spike venv with coremltools 9.0, torch 2.7, safetensors, scikit-learn)
|
| 88 |
-
python check_export_forward.py # export forward is bit-identical to the model
|
| 89 |
-
REUSE_FP16=1 python export_sv_coreml.py # fp16 + int8 + int4 mlpackages, conversion.json
|
| 90 |
-
python eval_sv_coreml.py # accuracy, silent skips, parity, latency -> RESULTS-sv0-coreml.json
|
| 91 |
-
```
|
| 92 |
-
|
| 93 |
-
Artifacts (not in Git): `sv-coreml/*.mlpackage`, `RESULTS-sv0-coreml.json`,
|
| 94 |
-
`export.log`, `eval-coreml.log`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eval/RESULTS-SV0-pytorch.md
DELETED
|
@@ -1,94 +0,0 @@
|
|
| 1 |
-
# RESULTS-SV0 — Swedish Jev-shaped form specialist
|
| 2 |
-
|
| 3 |
-
**Verdict: VALIDATED, with documented limits.**
|
| 4 |
-
The Cua-S1 contract trains on our own Swedish synthetic data with the upstream MIT code,
|
| 5 |
-
on one laptop, and reaches **83.02 %** top-1 on a held-out, form-disjoint synthetic test
|
| 6 |
-
(2 315 decisions) and **86 %** on a hand-written out-of-distribution Swedish demo (50
|
| 7 |
-
decisions) — against **21.4 %** / **20 %** for the released English `cua-s1-forms`
|
| 8 |
-
checkpoint on the very same rows. The result is undertrained (validation was still
|
| 9 |
-
improving at the last epoch), so 83 % is a floor, not a ceiling.
|
| 10 |
-
|
| 11 |
-
## Protocol as run
|
| 12 |
-
|
| 13 |
-
| Item | Setting |
|
| 14 |
-
| --- | --- |
|
| 15 |
-
| Architecture | `tinyx` (byte-level 2-layer Transformer encoder, width 128, 4 heads) + jevlike `AttentionHead`, context 224 / option 96 bytes — identical to upstream |
|
| 16 |
-
| Code | `trycua/cua` → `libs/cua-s1` @ `9bbfa7d`, vendored unmodified (`vendor/`, MIT) |
|
| 17 |
-
| Corpus | `sv_synth.py` + `concepts_sv.py` (ours): 900 episodes, seed 2026, splits by form field signature |
|
| 18 |
-
| Rows | train 21 306 / validation 2 855 / test 2 315 decisions; 725 / 96 / 79 distinct form signatures, **zero overlap** between splits |
|
| 19 |
-
| Training | AdamW lr 2e-3, cosine + 5 % warmup, wd 1e-2, 4 epochs, batch 64, seed 7, MPS, 1 927 s |
|
| 20 |
-
| Checkpoint rule | best validation NLL (upstream's rule) — epoch 4 |
|
| 21 |
-
| Grader | `eval_sv.py`, unchanged for both checkpoints |
|
| 22 |
-
|
| 23 |
-
## Numbers
|
| 24 |
-
|
| 25 |
-
| Run | decisions | top-1 | majority baseline | ECE | skipped a required fill | per action |
|
| 26 |
-
| --- | ---: | ---: | ---: | ---: | ---: | --- |
|
| 27 |
-
| Swedish specialist — synthetic test (form-disjoint) | 2 315 | **83.02 %** | 50.45 % | 0.01656 | 76 | `check` 98.28 % (n=58), `click` 93.67 % (n=79), `fill` 75.55 % (n=1010), `skip` 88.01 % (n=1168) |
|
| 28 |
-
| Swedish specialist — handwritten OOD demo (50) | 50 | **86.00 %** | 64.00 % | 0.09176 | 3 | `check` 100 % (n=3), `click` 100 % (n=3), `fill` 81.25 % (n=32), `skip` 91.67 % (n=12) |
|
| 29 |
-
| Swedish specialist — shuffled-context control (test) | 2 315 | 34.08 % | 50.45 % | 0.49735 | 264 | `check` 15.52 %, `click` 0 %, `fill` 1.29 %, `skip` 65.67 % |
|
| 30 |
-
| Swedish specialist — shuffled-context control (demo) | 50 | 6.00 % | 64.00 % | 0.78579 | 6 | all actions ≤ 25 % |
|
| 31 |
-
| English reference (`cua-s1-forms`) — synthetic test | 2 315 | 21.38 % | 50.45 % | 0.64072 | 371 | `check` 93.10 %, `click` 26.58 %, `fill` 5.54 %, `skip` 31.16 % |
|
| 32 |
-
| English reference — handwritten OOD demo | 50 | 20.00 % | 64.00 % | 0.66098 | 16 | `check` 66.67 %, `click` 33.33 %, `fill` 15.62 %, `skip` 16.67 % |
|
| 33 |
-
| English reference — shuffled-context control (test) | 2 315 | 17.50 % | 50.45 % | 0.67954 | 363 | `check` 60.35 %, `click` 6.33 %, `fill` 1.78 %, `skip` 29.71 % |
|
| 34 |
-
|
| 35 |
-
Per-epoch validation: 48.23 % → 62.98 % → 78.63 % → **83.01 %** top-1 (train NLL
|
| 36 |
-
2.06 → 0.45; val NLL 1.75 → 0.52). Still improving when the run stopped.
|
| 37 |
-
|
| 38 |
-
## Reading the numbers
|
| 39 |
-
|
| 40 |
-
1. **The contract transfers; the language boundary was the real barrier.** The English
|
| 41 |
-
checkpoint on Swedish rows sits at **21.4 %**, barely above its own shuffled-context
|
| 42 |
-
control (17.5 %) and *below* the majority-action baseline (50.5 %), with ECE 0.64 — it
|
| 43 |
-
is not reading the content, it is guessing confidently. On the hand-written demo it
|
| 44 |
-
scores 20 % against a 64 % baseline, i.e. worse than always answering "fill". The
|
| 45 |
-
Swedish specialist, same architecture, same grader, same rows: 83 % / 86 %.
|
| 46 |
-
2. **The shuffled control is the floor that matters.** Our specialist drops from 83.02 %
|
| 47 |
-
to 34.08 % when contexts are rotated between rows (below the 50.45 % majority
|
| 48 |
-
baseline), which is the evidence that it uses the element label and the document, not
|
| 49 |
-
option statistics. The English reference barely moves (21.4 % → 17.5 %) — its score was
|
| 50 |
-
near the floor to begin with.
|
| 51 |
-
3. **`fill` is the weak action, and the silent-skip failure mode persists.** 75.5 % of
|
| 52 |
-
fills are right; 76 of 1 010 fill decisions (7.5 %) are answered `hoppa över` instead.
|
| 53 |
-
In a real workflow that is the dangerous class: a required field that looks done and is
|
| 54 |
-
not. It is much smaller than the English reference's (371/1 010), but it is not zero,
|
| 55 |
-
and it is the reason a production integration needs a per-item check outside the model.
|
| 56 |
-
4. **Calibration is good in-distribution and degrades out-of-distribution** (ECE 0.017 →
|
| 57 |
-
0.092), which is exactly the wrong direction for confidence routing if the threshold is
|
| 58 |
-
tuned on synthetic data.
|
| 59 |
-
5. **It is undertrained.** Both the validation curve and the comparison with the reference
|
| 60 |
-
(trained on ~150 k rows vs our 21 k) say the remaining error is largely a data-scale
|
| 61 |
-
effect. The next honest step is more episodes, not a different architecture.
|
| 62 |
-
|
| 63 |
-
## What this does not establish
|
| 64 |
-
|
| 65 |
-
- Nothing about real Swedish forms. The demo set is hand-written by the same person who
|
| 66 |
-
wrote the catalogue, so it shares the author's vocabulary; a genuine test needs real
|
| 67 |
-
blanketter (Skolverket/Försäkringskassan/kommunala) or our own live forms.
|
| 68 |
-
- Nothing about the runtime: this spike scores decisions, it does not drive a GUI.
|
| 69 |
-
Fill/click execution, retries and fail-closed behaviour were not exercised (upstream's
|
| 70 |
-
`planner.py` refuses to execute without a compatible driver contract).
|
| 71 |
-
- Nothing about English transfer in the other direction: we never trained a Swedish model
|
| 72 |
-
on English rows, and the corpus changes *language and label vocabulary at once*, so the
|
| 73 |
-
ablation "language vs vocabulary" is still open.
|
| 74 |
-
- Reproducibility is bounded by the environment: torch 2.14 on Apple Silicon MPS, seed 7,
|
| 75 |
-
`deterministic=False` (deterministic algorithms were too slow on MPS), so the exact
|
| 76 |
-
numbers are one draw, not a bit-reproducible receipt.
|
| 77 |
-
|
| 78 |
-
## Follow-ups worth pre-registering
|
| 79 |
-
|
| 80 |
-
1. **Scale test**: 4 000–10 000 episodes, 6 epochs, batch 32–64 on a machine with room —
|
| 81 |
-
does top-1 cross ~95 % and does the silent-skip rate fall below 2 % of fills?
|
| 82 |
-
2. **Language ✕ vocabulary ablation**: Swedish documents + English labels, and the mirror,
|
| 83 |
-
to attribute the win.
|
| 84 |
-
3. **Real-form OOD**: hand-build 3–5 authentic Swedish blanketter (never in the catalogue)
|
| 85 |
-
and score before touching the corpus again.
|
| 86 |
-
4. **Abstention outside the model**: a spread/top-probability gate plus a "required field
|
| 87 |
-
still empty" check, measured on the silent-skip class specifically.
|
| 88 |
-
|
| 89 |
-
## Reproduction
|
| 90 |
-
|
| 91 |
-
See `README.md` in this directory. Runtime: ~5 min generation, 32 min training, seconds of
|
| 92 |
-
scoring on one Apple Silicon laptop. Corpus and checkpoint are not in Git
|
| 93 |
-
(`~/agent-data/jevlike-sv-spike/`); `data/sv/manifest.json` carries the SHA-256 of each split
|
| 94 |
-
(test `92c0dfec…d272`).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eval/RESULTS-SV0-v2.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RESULTS-SV0 v2 — the released Swedish one-pass specialist
|
| 2 |
+
|
| 3 |
+
Raw artefacts: `results-pytorch.json`, `results-coreml.json`, `size-sweep.jsonl`,
|
| 4 |
+
`corpus-manifest-10000-episodes.json`. Model card:
|
| 5 |
+
[`precisit/one-pass-sv-forms`](https://huggingface.co/precisit/one-pass-sv-forms).
|
| 6 |
+
|
| 7 |
+
## The checkpoint
|
| 8 |
+
|
| 9 |
+
- 706 048 parameters (`tinyx`), 2.83 MB fp16, trained from scratch.
|
| 10 |
+
- Corpus: 10 000 synthetic episodes, seed 2026, split by form signature → 234 921 train /
|
| 11 |
+
29 649 validation / 29 839 test decisions.
|
| 12 |
+
- Schedule: 4 epochs, batch 64, learning rate 2e-3, seed 7; 163 minutes on an Apple M4 (24 GB).
|
| 13 |
+
|
| 14 |
+
## Held-out results (the corpus's own test split, and the hand-written set)
|
| 15 |
+
|
| 16 |
+
| Run | decisions | top-1 | majority-class baseline | ECE | silent skips |
|
| 17 |
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 18 |
+
| Synthetic test (form-disjoint) | 29 839 | 99.29 % | 47.36 % | 0.0014 | 1 |
|
| 19 |
+
| Hand-written out-of-distribution demo | 50 | 100.00 % | 64.00 % | — | 0 |
|
| 20 |
+
| Shuffled-context control | 29 839 | 31.99 % | 47.36 % | — | — |
|
| 21 |
+
| The *earlier* checkpoint on Swedish rows: released English model of the same family | 2 310 | 21.4 % | 48.87 % | — | 371 of 1 044 fills |
|
| 22 |
+
|
| 23 |
+
The shuffled control (31.99 %, below the 47.36 % majority baseline) is the load-bearing control:
|
| 24 |
+
it shows the score comes from reading the element and the document rather than from the option
|
| 25 |
+
statistics. Silent skips fell from 127 (900 episodes) to 1.
|
| 26 |
+
|
| 27 |
+
## Data-size curve (fixed 4-epoch schedule, fixed seed, corrected generator)
|
| 28 |
+
|
| 29 |
+
| Episodes | Train decisions | Test decisions | top-1 | silent skips | ECE | training time |
|
| 30 |
+
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 31 |
+
| 900 | 21 305 | 2 310 | 77.10 % | 127 | 0.0216 | 32 min |
|
| 32 |
+
| 4 000 | 94 405 | 11 556 | 98.94 % | 6 | 0.0014 | 56 min |
|
| 33 |
+
| 10 000 | 234 921 | 29 839 | 99.29 % | 1 | 0.0014 | 163 min |
|
| 34 |
+
|
| 35 |
+
Each point is scored on its own corpus's held-out split, so the test set grows with the corpus.
|
| 36 |
+
|
| 37 |
+
## What changed from v1, and what we got wrong
|
| 38 |
+
|
| 39 |
+
1. **A format bug in the generator, fixed.** `gen_personnummer` produced nine digits formatted
|
| 40 |
+
`DDDDDDDD-DD` and `gen_orgnummer` appended the check digit, producing eleven characters. Both
|
| 41 |
+
now emit the real Swedish shape (`YYMMDD-XXXX`, 6+4, Luhn-valid). Tests assert the shape and the
|
| 42 |
+
checksum.
|
| 43 |
+
2. **An accidental giveaway, removed.** The buggy shapes happened to be unique among the 50
|
| 44 |
+
concepts, so those two concepts could be identified from the *shape of the value* alone. After
|
| 45 |
+
the fix both share `DDDDDD-DDDD` with each other only. Per-action `fill` accuracy is therefore
|
| 46 |
+
the honest kind now (`shape_analysis` in the working notes; the shape census is ten lines).
|
| 47 |
+
3. **A wrong explanation, corrected.** The first 900-episode run on the corrected corpus scored
|
| 48 |
+
77.10 % against 83.02 % for the buggy-corpus run, and we attributed the six-point drop to the
|
| 49 |
+
removed giveaway. The 4 000- and 10 000-episode points show the dominant factor was data size.
|
| 50 |
+
The claim was wrong for part of a working day and is recorded here rather than quietly dropped.
|
| 51 |
+
|
| 52 |
+
## Limits
|
| 53 |
+
|
| 54 |
+
- Synthetic corpus only: form-disjoint held-out splits, not distribution-disjoint ones. No real
|
| 55 |
+
Swedish form has been through the model; the 50-decision set is the only non-generated evidence.
|
| 56 |
+
- One silent skip remains: out-of-model verification is still mandatory.
|
| 57 |
+
- Latency figures are single-decision calls; batching untested.
|
eval/corpus-manifest-10000-episodes.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"episodes": 10000,
|
| 3 |
+
"format": "cua-s1-choice-jsonl",
|
| 4 |
+
"format_version": 1,
|
| 5 |
+
"generator": {
|
| 6 |
+
"config": {
|
| 7 |
+
"filled_field_probability": 0.6,
|
| 8 |
+
"hard_negative_probability": 0.35,
|
| 9 |
+
"max_distractor_entities": 3,
|
| 10 |
+
"max_extra_entities": 5,
|
| 11 |
+
"missing_entity_probability": 0.12,
|
| 12 |
+
"partial_form_probability": 0.3,
|
| 13 |
+
"stale_value_probability": 0.05
|
| 14 |
+
},
|
| 15 |
+
"format": "spike.sv_synth",
|
| 16 |
+
"task_line": "UPPGIFT fyll i formul\u00e4ret fr\u00e5n dokumentet och skicka sedan in"
|
| 17 |
+
},
|
| 18 |
+
"ratios": {
|
| 19 |
+
"test": 0.1,
|
| 20 |
+
"train": 0.8,
|
| 21 |
+
"validation": 0.1
|
| 22 |
+
},
|
| 23 |
+
"seed": 2026,
|
| 24 |
+
"splits": {
|
| 25 |
+
"test": {
|
| 26 |
+
"episodes": 1009,
|
| 27 |
+
"file": "test.jsonl",
|
| 28 |
+
"rows": 29839,
|
| 29 |
+
"sha256": "105b7c0509af8667c11653f77d3866dc528e846a3f439e284dccb62164d2dc3f"
|
| 30 |
+
},
|
| 31 |
+
"train": {
|
| 32 |
+
"episodes": 7984,
|
| 33 |
+
"file": "train.jsonl",
|
| 34 |
+
"rows": 234921,
|
| 35 |
+
"sha256": "071edb46d1a5f03a4b85e4ca5adfc2a089b31b334c85c3446e0f75d378dae731"
|
| 36 |
+
},
|
| 37 |
+
"validation": {
|
| 38 |
+
"episodes": 1007,
|
| 39 |
+
"file": "validation.jsonl",
|
| 40 |
+
"rows": 29649,
|
| 41 |
+
"sha256": "e58cf782a94deb6532675bc0de202819c75f8f347912dfddf9337dd4a0992baa"
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
}
|
eval/demo-handwritten.jsonl
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Förnamn\" value=\"\"","label":0,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Förnamn: Anna","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 2 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Efternamn\" value=\"\"","label":1,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Efternamn: Lindqvist","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 3 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Personnummer\" value=\"\" hint=\"ÅÅMMDD-XXXX\"","label":2,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Personnummer: 560314-2381","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 4 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Mobilnummer\" value=\"\"","label":3,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Telefon: 070-341 22 87","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 5 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"E-post\" value=\"\"","label":4,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll E-post: anna.lindqvist@exempel.invalid","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 6 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Adress\" value=\"\"","label":5,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Gatuadress: Kungsgatan 42","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 7 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Postnummer\" value=\"\"","label":6,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Postnummer: 753 20","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 8 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Ort\" value=\"\"","label":7,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Ort: Uppsala","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 9 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Vårdcentral\" value=\"\"","label":8,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Vårdcentral: Exempelvårdcentralen","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 10 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Kända allergier\" value=\"\"","label":9,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Allergier: Penicillin","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 11 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Anhörig\" value=\"\"","label":10,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Anhörig: Erik Lindqvist","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 12 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Nödkontakt telefon\" value=\"\"","label":11,"meta":{"action":"fill","form":"Exempelkliniken - Ny patientregistrering","gold_option":"fyll Anhörigs telefon: 070-882 19 03","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 13 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Ort\" value=\"Uppsala\"","label":17,"meta":{"action":"skip","form":"Exempelkliniken - Ny patientregistrering","gold_option":"hoppa över","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 14 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Läkare\" value=\"\"","label":17,"meta":{"action":"skip","form":"Exempelkliniken - Ny patientregistrering","gold_option":"hoppa över","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 15 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT CheckBox \"Jag samtycker till behandling av personuppgifter\" unchecked","label":15,"meta":{"action":"check","form":"Exempelkliniken - Ny patientregistrering","gold_option":"kryssa","role":"CheckBox","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 16 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT CheckBox \"Skicka nyhetsbrev\" unchecked","label":17,"meta":{"action":"skip","form":"Exempelkliniken - Ny patientregistrering","gold_option":"hoppa över","role":"CheckBox","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 17 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Button \"Skicka in\" value=\"\"","label":16,"meta":{"action":"click","form":"Exempelkliniken - Ny patientregistrering","gold_option":"klicka","role":"Button","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 18 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Button \"Avbryt\" value=\"\"","label":17,"meta":{"action":"skip","form":"Exempelkliniken - Ny patientregistrering","gold_option":"hoppa över","role":"Button","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 19 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Exempelkliniken - Ny patientregistrering\nELEMENT Edit \"Adressfält\" value=\"https://exempel.invalid/formular\"","label":17,"meta":{"action":"skip","form":"Exempelkliniken - Ny patientregistrering","gold_option":"hoppa över","role":"Edit","source":"hand-authored"},"options":["fyll Förnamn: Anna","fyll Efternamn: Lindqvist","fyll Personnummer: 560314-2381","fyll Telefon: 070-341 22 87","fyll E-post: anna.lindqvist@exempel.invalid","fyll Gatuadress: Kungsgatan 42","fyll Postnummer: 753 20","fyll Ort: Uppsala","fyll Vårdcentral: Exempelvårdcentralen","fyll Allergier: Penicillin","fyll Anhörig: Erik Lindqvist","fyll Anhörigs telefon: 070-882 19 03","fyll Kursnamn: Anatomi och fysiologi","fyll Bankgiro: 552-7731","fyll Fakturadatum: 2026-09-14","kryssa","klicka","hoppa över"]}
|
| 20 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Namn\" value=\"\"","label":0,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Namn: Johan Bergström","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 21 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Anställningsnummer\" value=\"\"","label":1,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Anställningsnummer: AN-338201","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 22 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Avdelning\" value=\"\"","label":2,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Avdelning: IT och digitalisering","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 23 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Bankgironummer\" value=\"\" hint=\"XXX-XXXX\"","label":3,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Bankgiro: 589-2240","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 24 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Plusgironummer\" value=\"\"","label":4,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Plusgiro: 38 24 19-6","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 25 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Summa\" value=\"\"","label":5,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Belopp: 12 450,00 kr","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 26 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Momsnr\" value=\"\"","label":6,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Momsregistreringsnummer: SE556677889901","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 27 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Fakturadatum\" value=\"\"","label":7,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Utfärdad: 2026-09-11","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 28 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Betalas senast\" value=\"\"","label":8,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Förfallodatum: 2026-10-15","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 29 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Referensnummer\" value=\"\"","label":9,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Referens: 8836001928","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 30 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Org.nr\" value=\"\"","label":10,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Organisationsnummer: 556677-8899","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 31 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Kundnummer\" value=\"\"","label":11,"meta":{"action":"fill","form":"Norrsken Teknik AB - Reseräkning","gold_option":"fyll Kundnummer: M-441023","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 32 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Edit \"Summa\" value=\"12 450,00 kr\"","label":14,"meta":{"action":"skip","form":"Norrsken Teknik AB - Reseräkning","gold_option":"hoppa över","role":"Edit","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 33 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT CheckBox \"Jag intygar att uppgifterna är korrekta\" unchecked","label":12,"meta":{"action":"check","form":"Norrsken Teknik AB - Reseräkning","gold_option":"kryssa","role":"CheckBox","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 34 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Button \"Spara utkast\" value=\"\"","label":14,"meta":{"action":"skip","form":"Norrsken Teknik AB - Reseräkning","gold_option":"hoppa över","role":"Button","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 35 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT Button \"Skicka\" value=\"\"","label":13,"meta":{"action":"click","form":"Norrsken Teknik AB - Reseräkning","gold_option":"klicka","role":"Button","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 36 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Norrsken Teknik AB - Reseräkning\nELEMENT MenuItem \"Arkiv\" value=\"\"","label":14,"meta":{"action":"skip","form":"Norrsken Teknik AB - Reseräkning","gold_option":"hoppa över","role":"MenuItem","source":"hand-authored"},"options":["fyll Namn: Johan Bergström","fyll Anställningsnummer: AN-338201","fyll Avdelning: IT och digitalisering","fyll Bankgiro: 589-2240","fyll Plusgiro: 38 24 19-6","fyll Belopp: 12 450,00 kr","fyll Momsregistreringsnummer: SE556677889901","fyll Utfärdad: 2026-09-11","fyll Förfallodatum: 2026-10-15","fyll Referens: 8836001928","fyll Organisationsnummer: 556677-8899","fyll Kundnummer: M-441023","kryssa","klicka","hoppa över"]}
|
| 37 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Försäkringsnr\" value=\"\"","label":0,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Försäkringsnummer: F-2291-48310","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 38 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Skadenummer\" value=\"\"","label":1,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Skadenummer: S-771204","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 39 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Datum för skadan\" value=\"\"","label":2,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Skadedatum: 2026-08-27","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 40 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Plats\" value=\"\"","label":3,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Händelseort: Västerås","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 41 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Registreringsnummer\" value=\"\" hint=\"ABC 123\"","label":5,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Registreringsnummer: JHL 402","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 42 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Fordonsmärke\" value=\"\"","label":6,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Fordonsmärke: Testmotors Prov","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 43 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Vad inträffade?\" value=\"\"","label":7,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Beskrivning: Skadan upptäcktes vid leverans.","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 44 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Ärendenummer\" value=\"\"","label":9,"meta":{"action":"fill","form":"Testförsäkring - Skadeanmälan","gold_option":"fyll Ärendenummer: EX-2026-00281","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 45 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Edit \"Skadenummer\" value=\"S-771204\"","label":13,"meta":{"action":"skip","form":"Testförsäkring - Skadeanmälan","gold_option":"hoppa över","role":"Edit","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 46 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT CheckBox \"Jag har tagit del av informationen om behandling av personuppgifter\" unchecked","label":11,"meta":{"action":"check","form":"Testförsäkring - Skadeanmälan","gold_option":"kryssa","role":"CheckBox","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 47 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT CheckBox \"Kontakta mig per e-post\" unchecked","label":13,"meta":{"action":"skip","form":"Testförsäkring - Skadeanmälan","gold_option":"hoppa över","role":"CheckBox","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 48 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Button \"Ladda upp bilaga\" value=\"\"","label":13,"meta":{"action":"skip","form":"Testförsäkring - Skadeanmälan","gold_option":"hoppa över","role":"Button","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 49 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Button \"Skicka ansökan\" value=\"\"","label":12,"meta":{"action":"click","form":"Testförsäkring - Skadeanmälan","gold_option":"klicka","role":"Button","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
| 50 |
+
{"context":"UPPGIFT fyll i formuläret från dokumentet och skicka sedan in\nFORM Testförsäkring - Skadeanmälan\nELEMENT Button \"Stäng\" value=\"\"","label":13,"meta":{"action":"skip","form":"Testförsäkring - Skadeanmälan","gold_option":"hoppa över","role":"Button","source":"hand-authored"},"options":["fyll Försäkringsnummer: F-2291-48310","fyll Skadenummer: S-771204","fyll Skadedatum: 2026-08-27","fyll Händelseort: Västerås","fyll Besök: Ort","fyll Registreringsnummer: JHL 402","fyll Fordonsmärke: Testmotors Prov","fyll Beskrivning: Skadan upptäcktes vid leverans.","fyll Handläggare: Malin Sjögren","fyll Ärendenummer: EX-2026-00281","fyll Bankgiro: 341-9087","kryssa","klicka","hoppa över"]}
|
eval/results-coreml.json
CHANGED
|
@@ -1,40 +1,41 @@
|
|
| 1 |
{
|
| 2 |
-
"checkpoint": "runs/sv-tinyx/model",
|
| 3 |
"limits": {
|
| 4 |
"context_bytes": 224,
|
| 5 |
"max_options": 40,
|
| 6 |
"option_bytes": 96
|
| 7 |
},
|
| 8 |
"torch_baseline": {
|
|
|
|
| 9 |
"per_action": {
|
| 10 |
"check": {
|
| 11 |
-
"acc":
|
| 12 |
-
"n":
|
| 13 |
},
|
| 14 |
"click": {
|
| 15 |
-
"acc":
|
| 16 |
-
"n":
|
| 17 |
},
|
| 18 |
"fill": {
|
| 19 |
-
"acc": 0.
|
| 20 |
-
"n":
|
| 21 |
},
|
| 22 |
"skip": {
|
| 23 |
-
"acc": 0.
|
| 24 |
-
"n":
|
| 25 |
}
|
| 26 |
},
|
| 27 |
-
"
|
| 28 |
-
"
|
| 29 |
-
"
|
| 30 |
-
"top1": 0.8302375809935205
|
| 31 |
},
|
| 32 |
"variants": {
|
| 33 |
"fp16": {
|
| 34 |
"handwritten_demo__ane": {
|
| 35 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 36 |
-
"
|
| 37 |
-
"
|
|
|
|
| 38 |
"mismatches_vs_torch": 0,
|
| 39 |
"parity_with_torch": 1.0,
|
| 40 |
"per_action": {
|
|
@@ -47,84 +48,84 @@
|
|
| 47 |
"n": 3
|
| 48 |
},
|
| 49 |
"fill": {
|
| 50 |
-
"acc":
|
| 51 |
"n": 29
|
| 52 |
},
|
| 53 |
"skip": {
|
| 54 |
-
"acc":
|
| 55 |
"n": 12
|
| 56 |
}
|
| 57 |
},
|
| 58 |
-
"
|
| 59 |
-
"
|
| 60 |
-
"
|
| 61 |
-
"top1": 0.851063829787234
|
| 62 |
},
|
| 63 |
-
"package_bytes":
|
| 64 |
"synthetic_test__ane": {
|
| 65 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 66 |
-
"
|
| 67 |
-
"
|
| 68 |
-
"
|
| 69 |
-
"
|
|
|
|
| 70 |
"per_action": {
|
| 71 |
"check": {
|
| 72 |
-
"acc":
|
| 73 |
-
"n":
|
| 74 |
},
|
| 75 |
"click": {
|
| 76 |
-
"acc":
|
| 77 |
-
"n":
|
| 78 |
},
|
| 79 |
"fill": {
|
| 80 |
-
"acc": 0.
|
| 81 |
-
"n":
|
| 82 |
},
|
| 83 |
"skip": {
|
| 84 |
-
"acc": 0.
|
| 85 |
-
"n":
|
| 86 |
}
|
| 87 |
},
|
| 88 |
-
"
|
| 89 |
-
"
|
| 90 |
-
"
|
| 91 |
-
"top1": 0.8300173010380623
|
| 92 |
},
|
| 93 |
"synthetic_test__cpu": {
|
| 94 |
"compute_units": "ComputeUnit.CPU_ONLY",
|
| 95 |
-
"
|
| 96 |
-
"
|
| 97 |
-
"
|
| 98 |
-
"
|
|
|
|
| 99 |
"per_action": {
|
| 100 |
"check": {
|
| 101 |
-
"acc":
|
| 102 |
-
"n":
|
| 103 |
},
|
| 104 |
"click": {
|
| 105 |
-
"acc":
|
| 106 |
-
"n":
|
| 107 |
},
|
| 108 |
"fill": {
|
| 109 |
-
"acc": 0.
|
| 110 |
-
"n":
|
| 111 |
},
|
| 112 |
"skip": {
|
| 113 |
-
"acc": 0.
|
| 114 |
-
"n":
|
| 115 |
}
|
| 116 |
},
|
| 117 |
-
"
|
| 118 |
-
"
|
| 119 |
-
"
|
| 120 |
-
"top1": 0.8304498269896193
|
| 121 |
}
|
| 122 |
},
|
| 123 |
"int4": {
|
| 124 |
"handwritten_demo__ane": {
|
| 125 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 126 |
-
"
|
| 127 |
-
"
|
|
|
|
| 128 |
"mismatches_vs_torch": 32,
|
| 129 |
"parity_with_torch": 0.3191489361702128,
|
| 130 |
"per_action": {
|
|
@@ -137,7 +138,7 @@
|
|
| 137 |
"n": 3
|
| 138 |
},
|
| 139 |
"fill": {
|
| 140 |
-
"acc": 0.
|
| 141 |
"n": 29
|
| 142 |
},
|
| 143 |
"skip": {
|
|
@@ -145,47 +146,47 @@
|
|
| 145 |
"n": 12
|
| 146 |
}
|
| 147 |
},
|
| 148 |
-
"
|
| 149 |
-
"
|
| 150 |
-
"
|
| 151 |
-
"top1": 0.2765957446808511
|
| 152 |
},
|
| 153 |
-
"package_bytes":
|
| 154 |
"synthetic_test__ane": {
|
| 155 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 156 |
-
"
|
| 157 |
-
"
|
| 158 |
-
"
|
| 159 |
-
"
|
|
|
|
| 160 |
"per_action": {
|
| 161 |
"check": {
|
| 162 |
-
"acc": 0.
|
| 163 |
-
"n":
|
| 164 |
},
|
| 165 |
"click": {
|
| 166 |
"acc": 0.0,
|
| 167 |
-
"n":
|
| 168 |
},
|
| 169 |
"fill": {
|
| 170 |
-
"acc": 0.
|
| 171 |
-
"n":
|
| 172 |
},
|
| 173 |
"skip": {
|
| 174 |
-
"acc": 0.
|
| 175 |
-
"n":
|
| 176 |
}
|
| 177 |
},
|
| 178 |
-
"
|
| 179 |
-
"
|
| 180 |
-
"
|
| 181 |
-
"top1": 0.5086505190311419
|
| 182 |
}
|
| 183 |
},
|
| 184 |
"int8": {
|
| 185 |
"handwritten_demo__ane": {
|
| 186 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 187 |
-
"
|
| 188 |
-
"
|
|
|
|
| 189 |
"mismatches_vs_torch": 0,
|
| 190 |
"parity_with_torch": 1.0,
|
| 191 |
"per_action": {
|
|
@@ -198,48 +199,47 @@
|
|
| 198 |
"n": 3
|
| 199 |
},
|
| 200 |
"fill": {
|
| 201 |
-
"acc":
|
| 202 |
"n": 29
|
| 203 |
},
|
| 204 |
"skip": {
|
| 205 |
-
"acc":
|
| 206 |
"n": 12
|
| 207 |
}
|
| 208 |
},
|
| 209 |
-
"
|
| 210 |
-
"
|
| 211 |
-
"
|
| 212 |
-
"top1": 0.851063829787234
|
| 213 |
},
|
| 214 |
-
"package_bytes":
|
| 215 |
"synthetic_test__ane": {
|
| 216 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 217 |
-
"
|
| 218 |
-
"
|
| 219 |
-
"
|
| 220 |
-
"
|
|
|
|
| 221 |
"per_action": {
|
| 222 |
"check": {
|
| 223 |
-
"acc":
|
| 224 |
-
"n":
|
| 225 |
},
|
| 226 |
"click": {
|
| 227 |
-
"acc":
|
| 228 |
-
"n":
|
| 229 |
},
|
| 230 |
"fill": {
|
| 231 |
-
"acc": 0.
|
| 232 |
-
"n":
|
| 233 |
},
|
| 234 |
"skip": {
|
| 235 |
-
"acc": 0.
|
| 236 |
-
"n":
|
| 237 |
}
|
| 238 |
},
|
| 239 |
-
"
|
| 240 |
-
"
|
| 241 |
-
"
|
| 242 |
-
"top1": 0.8308823529411765
|
| 243 |
}
|
| 244 |
}
|
| 245 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"checkpoint": "runs/sv-tinyx-10000/model",
|
| 3 |
"limits": {
|
| 4 |
"context_bytes": 224,
|
| 5 |
"max_options": 40,
|
| 6 |
"option_bytes": 96
|
| 7 |
},
|
| 8 |
"torch_baseline": {
|
| 9 |
+
"examples": 29839,
|
| 10 |
"per_action": {
|
| 11 |
"check": {
|
| 12 |
+
"acc": 1.0,
|
| 13 |
+
"n": 855
|
| 14 |
},
|
| 15 |
"click": {
|
| 16 |
+
"acc": 1.0,
|
| 17 |
+
"n": 1009
|
| 18 |
},
|
| 19 |
"fill": {
|
| 20 |
+
"acc": 0.9900317827217567,
|
| 21 |
+
"n": 13844
|
| 22 |
},
|
| 23 |
"skip": {
|
| 24 |
+
"acc": 0.9947632863916213,
|
| 25 |
+
"n": 14131
|
| 26 |
}
|
| 27 |
},
|
| 28 |
+
"silent_skip_rate_of_fills": 7.22334585379948e-05,
|
| 29 |
+
"skipped_when_fill_expected": 1,
|
| 30 |
+
"top1": 0.9928952042628775
|
|
|
|
| 31 |
},
|
| 32 |
"variants": {
|
| 33 |
"fp16": {
|
| 34 |
"handwritten_demo__ane": {
|
| 35 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 36 |
+
"examples": 47,
|
| 37 |
+
"latency_ms_median": 1.3022092171013355,
|
| 38 |
+
"latency_ms_p95": 1.6720420680940151,
|
| 39 |
"mismatches_vs_torch": 0,
|
| 40 |
"parity_with_torch": 1.0,
|
| 41 |
"per_action": {
|
|
|
|
| 48 |
"n": 3
|
| 49 |
},
|
| 50 |
"fill": {
|
| 51 |
+
"acc": 1.0,
|
| 52 |
"n": 29
|
| 53 |
},
|
| 54 |
"skip": {
|
| 55 |
+
"acc": 1.0,
|
| 56 |
"n": 12
|
| 57 |
}
|
| 58 |
},
|
| 59 |
+
"silent_skip_rate_of_fills": 0.0,
|
| 60 |
+
"skipped_when_fill_expected": 0,
|
| 61 |
+
"top1": 1.0
|
|
|
|
| 62 |
},
|
| 63 |
+
"package_bytes": 1507474,
|
| 64 |
"synthetic_test__ane": {
|
| 65 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 66 |
+
"examples": 29836,
|
| 67 |
+
"latency_ms_median": 1.313916640356183,
|
| 68 |
+
"latency_ms_p95": 1.412208192050457,
|
| 69 |
+
"mismatches_vs_torch": 15,
|
| 70 |
+
"parity_with_torch": 0.9994972516423113,
|
| 71 |
"per_action": {
|
| 72 |
"check": {
|
| 73 |
+
"acc": 1.0,
|
| 74 |
+
"n": 855
|
| 75 |
},
|
| 76 |
"click": {
|
| 77 |
+
"acc": 1.0,
|
| 78 |
+
"n": 1009
|
| 79 |
},
|
| 80 |
"fill": {
|
| 81 |
+
"acc": 0.9899580985406733,
|
| 82 |
+
"n": 13842
|
| 83 |
},
|
| 84 |
"skip": {
|
| 85 |
+
"acc": 0.994762915782024,
|
| 86 |
+
"n": 14130
|
| 87 |
}
|
| 88 |
},
|
| 89 |
+
"silent_skip_rate_of_fills": 7.224389539083947e-05,
|
| 90 |
+
"skipped_when_fill_expected": 1,
|
| 91 |
+
"top1": 0.9928609733208205
|
|
|
|
| 92 |
},
|
| 93 |
"synthetic_test__cpu": {
|
| 94 |
"compute_units": "ComputeUnit.CPU_ONLY",
|
| 95 |
+
"examples": 29836,
|
| 96 |
+
"latency_ms_median": 1.7267910297960043,
|
| 97 |
+
"latency_ms_p95": 1.9287499599158764,
|
| 98 |
+
"mismatches_vs_torch": 14,
|
| 99 |
+
"parity_with_torch": 0.9995307681994905,
|
| 100 |
"per_action": {
|
| 101 |
"check": {
|
| 102 |
+
"acc": 1.0,
|
| 103 |
+
"n": 855
|
| 104 |
},
|
| 105 |
"click": {
|
| 106 |
+
"acc": 1.0,
|
| 107 |
+
"n": 1009
|
| 108 |
},
|
| 109 |
"fill": {
|
| 110 |
+
"acc": 0.9897413668545008,
|
| 111 |
+
"n": 13842
|
| 112 |
},
|
| 113 |
"skip": {
|
| 114 |
+
"acc": 0.994762915782024,
|
| 115 |
+
"n": 14130
|
| 116 |
}
|
| 117 |
},
|
| 118 |
+
"silent_skip_rate_of_fills": 7.224389539083947e-05,
|
| 119 |
+
"skipped_when_fill_expected": 1,
|
| 120 |
+
"top1": 0.9927604236492827
|
|
|
|
| 121 |
}
|
| 122 |
},
|
| 123 |
"int4": {
|
| 124 |
"handwritten_demo__ane": {
|
| 125 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 126 |
+
"examples": 47,
|
| 127 |
+
"latency_ms_median": 1.8585827201604843,
|
| 128 |
+
"latency_ms_p95": 2.018083818256855,
|
| 129 |
"mismatches_vs_torch": 32,
|
| 130 |
"parity_with_torch": 0.3191489361702128,
|
| 131 |
"per_action": {
|
|
|
|
| 138 |
"n": 3
|
| 139 |
},
|
| 140 |
"fill": {
|
| 141 |
+
"acc": 0.10344827586206896,
|
| 142 |
"n": 29
|
| 143 |
},
|
| 144 |
"skip": {
|
|
|
|
| 146 |
"n": 12
|
| 147 |
}
|
| 148 |
},
|
| 149 |
+
"silent_skip_rate_of_fills": 0.896551724137931,
|
| 150 |
+
"skipped_when_fill_expected": 26,
|
| 151 |
+
"top1": 0.3191489361702128
|
|
|
|
| 152 |
},
|
| 153 |
+
"package_bytes": 492577,
|
| 154 |
"synthetic_test__ane": {
|
| 155 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 156 |
+
"examples": 29836,
|
| 157 |
+
"latency_ms_median": 1.9839999731630087,
|
| 158 |
+
"latency_ms_p95": 2.11525009945035,
|
| 159 |
+
"mismatches_vs_torch": 15015,
|
| 160 |
+
"parity_with_torch": 0.4967488939536131,
|
| 161 |
"per_action": {
|
| 162 |
"check": {
|
| 163 |
+
"acc": 0.012865497076023392,
|
| 164 |
+
"n": 855
|
| 165 |
},
|
| 166 |
"click": {
|
| 167 |
"acc": 0.0,
|
| 168 |
+
"n": 1009
|
| 169 |
},
|
| 170 |
"fill": {
|
| 171 |
+
"acc": 0.06408033521167461,
|
| 172 |
+
"n": 13842
|
| 173 |
},
|
| 174 |
"skip": {
|
| 175 |
+
"acc": 0.9905166312809625,
|
| 176 |
+
"n": 14130
|
| 177 |
}
|
| 178 |
},
|
| 179 |
+
"silent_skip_rate_of_fills": 0.9143909839618553,
|
| 180 |
+
"skipped_when_fill_expected": 12657,
|
| 181 |
+
"top1": 0.4991956026276981
|
|
|
|
| 182 |
}
|
| 183 |
},
|
| 184 |
"int8": {
|
| 185 |
"handwritten_demo__ane": {
|
| 186 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 187 |
+
"examples": 47,
|
| 188 |
+
"latency_ms_median": 1.3158749788999557,
|
| 189 |
+
"latency_ms_p95": 1.4334581792354584,
|
| 190 |
"mismatches_vs_torch": 0,
|
| 191 |
"parity_with_torch": 1.0,
|
| 192 |
"per_action": {
|
|
|
|
| 199 |
"n": 3
|
| 200 |
},
|
| 201 |
"fill": {
|
| 202 |
+
"acc": 1.0,
|
| 203 |
"n": 29
|
| 204 |
},
|
| 205 |
"skip": {
|
| 206 |
+
"acc": 1.0,
|
| 207 |
"n": 12
|
| 208 |
}
|
| 209 |
},
|
| 210 |
+
"silent_skip_rate_of_fills": 0.0,
|
| 211 |
+
"skipped_when_fill_expected": 0,
|
| 212 |
+
"top1": 1.0
|
|
|
|
| 213 |
},
|
| 214 |
+
"package_bytes": 806125,
|
| 215 |
"synthetic_test__ane": {
|
| 216 |
"compute_units": "ComputeUnit.CPU_AND_NE",
|
| 217 |
+
"examples": 29836,
|
| 218 |
+
"latency_ms_median": 1.3136658817529678,
|
| 219 |
+
"latency_ms_p95": 1.4113341458141804,
|
| 220 |
+
"mismatches_vs_torch": 13,
|
| 221 |
+
"parity_with_torch": 0.9995642847566698,
|
| 222 |
"per_action": {
|
| 223 |
"check": {
|
| 224 |
+
"acc": 1.0,
|
| 225 |
+
"n": 855
|
| 226 |
},
|
| 227 |
"click": {
|
| 228 |
+
"acc": 1.0,
|
| 229 |
+
"n": 1009
|
| 230 |
},
|
| 231 |
"fill": {
|
| 232 |
+
"acc": 0.990102586331455,
|
| 233 |
+
"n": 13842
|
| 234 |
},
|
| 235 |
"skip": {
|
| 236 |
+
"acc": 0.994762915782024,
|
| 237 |
+
"n": 14130
|
| 238 |
}
|
| 239 |
},
|
| 240 |
+
"silent_skip_rate_of_fills": 7.224389539083947e-05,
|
| 241 |
+
"skipped_when_fill_expected": 1,
|
| 242 |
+
"top1": 0.992928006435179
|
|
|
|
| 243 |
}
|
| 244 |
}
|
| 245 |
}
|
eval/results-pytorch.json
CHANGED
|
@@ -1,147 +1,11 @@
|
|
| 1 |
{
|
| 2 |
-
"
|
| 3 |
-
|
| 4 |
-
"
|
| 5 |
-
"checkpoint_bytes": 2828784,
|
| 6 |
-
"config": {
|
| 7 |
-
"context_tokens": 224,
|
| 8 |
-
"encoder": "tinyx",
|
| 9 |
-
"heads": 4,
|
| 10 |
-
"hf_model": "Qwen/Qwen2.5-0.5B",
|
| 11 |
-
"layers": 2,
|
| 12 |
-
"option_tokens": 96,
|
| 13 |
-
"rank": 128,
|
| 14 |
-
"width": 128
|
| 15 |
-
},
|
| 16 |
-
"label": "cua-s1-forms-english",
|
| 17 |
-
"sv_handwritten_demo": {
|
| 18 |
-
"action_mix": {
|
| 19 |
-
"check": 3,
|
| 20 |
-
"click": 3,
|
| 21 |
-
"fill": 32,
|
| 22 |
-
"skip": 12
|
| 23 |
-
},
|
| 24 |
-
"ece": 0.660977,
|
| 25 |
-
"examples": 50,
|
| 26 |
-
"majority_baseline": 0.64,
|
| 27 |
-
"per_action": {
|
| 28 |
-
"check": {
|
| 29 |
-
"acc": 0.66667,
|
| 30 |
-
"n": 3
|
| 31 |
-
},
|
| 32 |
-
"click": {
|
| 33 |
-
"acc": 0.33333,
|
| 34 |
-
"n": 3
|
| 35 |
-
},
|
| 36 |
-
"fill": {
|
| 37 |
-
"acc": 0.15625,
|
| 38 |
-
"n": 32
|
| 39 |
-
},
|
| 40 |
-
"skip": {
|
| 41 |
-
"acc": 0.16667,
|
| 42 |
-
"n": 12
|
| 43 |
-
}
|
| 44 |
-
},
|
| 45 |
-
"skipped_when_fill_expected": 16,
|
| 46 |
-
"top1": 0.2
|
| 47 |
-
},
|
| 48 |
-
"sv_handwritten_demo__shuffled_context": {
|
| 49 |
-
"action_mix": {
|
| 50 |
-
"check": 3,
|
| 51 |
-
"click": 3,
|
| 52 |
-
"fill": 32,
|
| 53 |
-
"skip": 12
|
| 54 |
-
},
|
| 55 |
-
"ece": 0.760258,
|
| 56 |
-
"examples": 50,
|
| 57 |
-
"majority_baseline": 0.64,
|
| 58 |
-
"per_action": {
|
| 59 |
-
"check": {
|
| 60 |
-
"acc": 0.66667,
|
| 61 |
-
"n": 3
|
| 62 |
-
},
|
| 63 |
-
"click": {
|
| 64 |
-
"acc": 0.0,
|
| 65 |
-
"n": 3
|
| 66 |
-
},
|
| 67 |
-
"fill": {
|
| 68 |
-
"acc": 0.0,
|
| 69 |
-
"n": 32
|
| 70 |
-
},
|
| 71 |
-
"skip": {
|
| 72 |
-
"acc": 0.25,
|
| 73 |
-
"n": 12
|
| 74 |
-
}
|
| 75 |
-
},
|
| 76 |
-
"skipped_when_fill_expected": 13,
|
| 77 |
-
"top1": 0.1
|
| 78 |
-
},
|
| 79 |
-
"sv_synthetic_test": {
|
| 80 |
-
"action_mix": {
|
| 81 |
-
"check": 58,
|
| 82 |
-
"click": 79,
|
| 83 |
-
"fill": 1010,
|
| 84 |
-
"skip": 1168
|
| 85 |
-
},
|
| 86 |
-
"ece": 0.640725,
|
| 87 |
-
"examples": 2315,
|
| 88 |
-
"majority_baseline": 0.50454,
|
| 89 |
-
"per_action": {
|
| 90 |
-
"check": {
|
| 91 |
-
"acc": 0.93103,
|
| 92 |
-
"n": 58
|
| 93 |
-
},
|
| 94 |
-
"click": {
|
| 95 |
-
"acc": 0.26582,
|
| 96 |
-
"n": 79
|
| 97 |
-
},
|
| 98 |
-
"fill": {
|
| 99 |
-
"acc": 0.05545,
|
| 100 |
-
"n": 1010
|
| 101 |
-
},
|
| 102 |
-
"skip": {
|
| 103 |
-
"acc": 0.31164,
|
| 104 |
-
"n": 1168
|
| 105 |
-
}
|
| 106 |
-
},
|
| 107 |
-
"skipped_when_fill_expected": 371,
|
| 108 |
-
"top1": 0.21382
|
| 109 |
-
},
|
| 110 |
-
"sv_synthetic_test__shuffled_context": {
|
| 111 |
-
"action_mix": {
|
| 112 |
-
"check": 58,
|
| 113 |
-
"click": 79,
|
| 114 |
-
"fill": 1010,
|
| 115 |
-
"skip": 1168
|
| 116 |
-
},
|
| 117 |
-
"ece": 0.679541,
|
| 118 |
-
"examples": 2315,
|
| 119 |
-
"majority_baseline": 0.50454,
|
| 120 |
-
"per_action": {
|
| 121 |
-
"check": {
|
| 122 |
-
"acc": 0.60345,
|
| 123 |
-
"n": 58
|
| 124 |
-
},
|
| 125 |
-
"click": {
|
| 126 |
-
"acc": 0.06329,
|
| 127 |
-
"n": 79
|
| 128 |
-
},
|
| 129 |
-
"fill": {
|
| 130 |
-
"acc": 0.01782,
|
| 131 |
-
"n": 1010
|
| 132 |
-
},
|
| 133 |
-
"skip": {
|
| 134 |
-
"acc": 0.29709,
|
| 135 |
-
"n": 1168
|
| 136 |
-
}
|
| 137 |
-
},
|
| 138 |
-
"skipped_when_fill_expected": 363,
|
| 139 |
-
"top1": 0.17495
|
| 140 |
-
},
|
| 141 |
-
"trainable_params": 706048
|
| 142 |
},
|
| 143 |
-
"
|
| 144 |
-
|
|
|
|
| 145 |
"checkpoint_bytes": 2828784,
|
| 146 |
"config": {
|
| 147 |
"context_tokens": 224,
|
|
@@ -152,15 +16,14 @@
|
|
| 152 |
"rank": 128,
|
| 153 |
"width": 128
|
| 154 |
},
|
| 155 |
-
"
|
| 156 |
-
"sv_handwritten_demo": {
|
| 157 |
"action_mix": {
|
| 158 |
"check": 3,
|
| 159 |
"click": 3,
|
| 160 |
"fill": 32,
|
| 161 |
"skip": 12
|
| 162 |
},
|
| 163 |
-
"ece": 0.
|
| 164 |
"examples": 50,
|
| 165 |
"majority_baseline": 0.64,
|
| 166 |
"per_action": {
|
|
@@ -173,25 +36,25 @@
|
|
| 173 |
"n": 3
|
| 174 |
},
|
| 175 |
"fill": {
|
| 176 |
-
"acc":
|
| 177 |
"n": 32
|
| 178 |
},
|
| 179 |
"skip": {
|
| 180 |
-
"acc":
|
| 181 |
"n": 12
|
| 182 |
}
|
| 183 |
},
|
| 184 |
-
"skipped_when_fill_expected":
|
| 185 |
-
"top1":
|
| 186 |
},
|
| 187 |
-
"
|
| 188 |
"action_mix": {
|
| 189 |
"check": 3,
|
| 190 |
"click": 3,
|
| 191 |
"fill": 32,
|
| 192 |
"skip": 12
|
| 193 |
},
|
| 194 |
-
"ece": 0.
|
| 195 |
"examples": 50,
|
| 196 |
"majority_baseline": 0.64,
|
| 197 |
"per_action": {
|
|
@@ -212,70 +75,71 @@
|
|
| 212 |
"n": 12
|
| 213 |
}
|
| 214 |
},
|
| 215 |
-
"skipped_when_fill_expected":
|
| 216 |
"top1": 0.06
|
| 217 |
},
|
| 218 |
-
"
|
|
|
|
| 219 |
"action_mix": {
|
| 220 |
-
"check":
|
| 221 |
-
"click":
|
| 222 |
-
"fill":
|
| 223 |
-
"skip":
|
| 224 |
-
},
|
| 225 |
-
"ece": 0.
|
| 226 |
-
"examples":
|
| 227 |
-
"majority_baseline": 0.
|
| 228 |
"per_action": {
|
| 229 |
"check": {
|
| 230 |
-
"acc":
|
| 231 |
-
"n":
|
| 232 |
},
|
| 233 |
"click": {
|
| 234 |
-
"acc":
|
| 235 |
-
"n":
|
| 236 |
},
|
| 237 |
"fill": {
|
| 238 |
-
"acc": 0.
|
| 239 |
-
"n":
|
| 240 |
},
|
| 241 |
"skip": {
|
| 242 |
-
"acc": 0.
|
| 243 |
-
"n":
|
| 244 |
}
|
| 245 |
},
|
| 246 |
-
"skipped_when_fill_expected":
|
| 247 |
-
"top1": 0.
|
| 248 |
},
|
| 249 |
-
"
|
| 250 |
"action_mix": {
|
| 251 |
-
"check":
|
| 252 |
-
"click":
|
| 253 |
-
"fill":
|
| 254 |
-
"skip":
|
| 255 |
-
},
|
| 256 |
-
"ece": 0.
|
| 257 |
-
"examples":
|
| 258 |
-
"majority_baseline": 0.
|
| 259 |
"per_action": {
|
| 260 |
"check": {
|
| 261 |
-
"acc": 0.
|
| 262 |
-
"n":
|
| 263 |
},
|
| 264 |
"click": {
|
| 265 |
"acc": 0.0,
|
| 266 |
-
"n":
|
| 267 |
},
|
| 268 |
"fill": {
|
| 269 |
-
"acc": 0.
|
| 270 |
-
"n":
|
| 271 |
},
|
| 272 |
"skip": {
|
| 273 |
-
"acc": 0.
|
| 274 |
-
"n":
|
| 275 |
}
|
| 276 |
},
|
| 277 |
-
"skipped_when_fill_expected":
|
| 278 |
-
"top1": 0.
|
| 279 |
},
|
| 280 |
"trainable_params": 706048
|
| 281 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"datasets": {
|
| 3 |
+
"handwritten_demo": "/Users/hermes-tool/builder-work/one-pass-specialists-67k19_tm/data/sv-10000/demo-handwritten.jsonl",
|
| 4 |
+
"synthetic_test": "/Users/hermes-tool/builder-work/one-pass-specialists-67k19_tm/data/sv-10000/test.jsonl"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
},
|
| 6 |
+
"device": "mps",
|
| 7 |
+
"specialist": {
|
| 8 |
+
"checkpoint": "/Users/hermes-tool/builder-work/one-pass-specialists-67k19_tm/runs/sv-tinyx-10000/model/model.safetensors",
|
| 9 |
"checkpoint_bytes": 2828784,
|
| 10 |
"config": {
|
| 11 |
"context_tokens": 224,
|
|
|
|
| 16 |
"rank": 128,
|
| 17 |
"width": 128
|
| 18 |
},
|
| 19 |
+
"handwritten_demo": {
|
|
|
|
| 20 |
"action_mix": {
|
| 21 |
"check": 3,
|
| 22 |
"click": 3,
|
| 23 |
"fill": 32,
|
| 24 |
"skip": 12
|
| 25 |
},
|
| 26 |
+
"ece": 0.000869,
|
| 27 |
"examples": 50,
|
| 28 |
"majority_baseline": 0.64,
|
| 29 |
"per_action": {
|
|
|
|
| 36 |
"n": 3
|
| 37 |
},
|
| 38 |
"fill": {
|
| 39 |
+
"acc": 1.0,
|
| 40 |
"n": 32
|
| 41 |
},
|
| 42 |
"skip": {
|
| 43 |
+
"acc": 1.0,
|
| 44 |
"n": 12
|
| 45 |
}
|
| 46 |
},
|
| 47 |
+
"skipped_when_fill_expected": 0,
|
| 48 |
+
"top1": 1.0
|
| 49 |
},
|
| 50 |
+
"handwritten_demo__shuffled_context": {
|
| 51 |
"action_mix": {
|
| 52 |
"check": 3,
|
| 53 |
"click": 3,
|
| 54 |
"fill": 32,
|
| 55 |
"skip": 12
|
| 56 |
},
|
| 57 |
+
"ece": 0.819131,
|
| 58 |
"examples": 50,
|
| 59 |
"majority_baseline": 0.64,
|
| 60 |
"per_action": {
|
|
|
|
| 75 |
"n": 12
|
| 76 |
}
|
| 77 |
},
|
| 78 |
+
"skipped_when_fill_expected": 3,
|
| 79 |
"top1": 0.06
|
| 80 |
},
|
| 81 |
+
"label": "specialist",
|
| 82 |
+
"synthetic_test": {
|
| 83 |
"action_mix": {
|
| 84 |
+
"check": 855,
|
| 85 |
+
"click": 1009,
|
| 86 |
+
"fill": 13844,
|
| 87 |
+
"skip": 14131
|
| 88 |
+
},
|
| 89 |
+
"ece": 0.001373,
|
| 90 |
+
"examples": 29839,
|
| 91 |
+
"majority_baseline": 0.47357,
|
| 92 |
"per_action": {
|
| 93 |
"check": {
|
| 94 |
+
"acc": 1.0,
|
| 95 |
+
"n": 855
|
| 96 |
},
|
| 97 |
"click": {
|
| 98 |
+
"acc": 1.0,
|
| 99 |
+
"n": 1009
|
| 100 |
},
|
| 101 |
"fill": {
|
| 102 |
+
"acc": 0.99003,
|
| 103 |
+
"n": 13844
|
| 104 |
},
|
| 105 |
"skip": {
|
| 106 |
+
"acc": 0.99476,
|
| 107 |
+
"n": 14131
|
| 108 |
}
|
| 109 |
},
|
| 110 |
+
"skipped_when_fill_expected": 1,
|
| 111 |
+
"top1": 0.9929
|
| 112 |
},
|
| 113 |
+
"synthetic_test__shuffled_context": {
|
| 114 |
"action_mix": {
|
| 115 |
+
"check": 855,
|
| 116 |
+
"click": 1009,
|
| 117 |
+
"fill": 13844,
|
| 118 |
+
"skip": 14131
|
| 119 |
+
},
|
| 120 |
+
"ece": 0.607719,
|
| 121 |
+
"examples": 29839,
|
| 122 |
+
"majority_baseline": 0.47357,
|
| 123 |
"per_action": {
|
| 124 |
"check": {
|
| 125 |
+
"acc": 0.20936,
|
| 126 |
+
"n": 855
|
| 127 |
},
|
| 128 |
"click": {
|
| 129 |
"acc": 0.0,
|
| 130 |
+
"n": 1009
|
| 131 |
},
|
| 132 |
"fill": {
|
| 133 |
+
"acc": 0.00079,
|
| 134 |
+
"n": 13844
|
| 135 |
},
|
| 136 |
"skip": {
|
| 137 |
+
"acc": 0.66209,
|
| 138 |
+
"n": 14131
|
| 139 |
}
|
| 140 |
},
|
| 141 |
+
"skipped_when_fill_expected": 3774,
|
| 142 |
+
"top1": 0.31992
|
| 143 |
},
|
| 144 |
"trainable_params": 706048
|
| 145 |
}
|
eval/size-sweep.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{"checkpoint": "runs/sv-tinyx-v2/model", "demo_top1": 0.76, "episodes": 900, "epochs": 4, "note": "900-point: corrected generator, 4 epochs, seed 2026", "shuffled_top1": 0.33203, "test_ece": 0.021596, "test_majority": 0.48874, "test_silent_skips": 127, "test_top1": 0.771}
|
| 2 |
+
{"checkpoint": "/Users/hermes-tool/builder-work/one-pass-specialists-67k19_tm/runs/sv-tinyx-4000/model", "demo_top1": 1.0, "episodes": 4000, "epochs": 4, "rows": {"train": 94405}, "seconds": 3376.7, "shuffled_top1": 0.31568, "test_ece": 0.001389, "test_majority": 0.47127, "test_silent_skips": 6, "test_top1": 0.98944}
|
| 3 |
+
{"checkpoint": "/Users/hermes-tool/builder-work/one-pass-specialists-67k19_tm/runs/sv-tinyx-10000/model", "demo_top1": 1.0, "episodes": 10000, "epochs": 4, "rows": {"train": 234921}, "seconds": 9763.0, "shuffled_top1": 0.31992, "test_ece": 0.001373, "test_majority": 0.47357, "test_silent_skips": 1, "test_top1": 0.9929}
|
sv0-forms.json
CHANGED
|
@@ -13,142 +13,142 @@
|
|
| 13 |
"metadata": {
|
| 14 |
"batch_size": 64,
|
| 15 |
"best_validation": {
|
| 16 |
-
"ece": 0.
|
| 17 |
-
"examples":
|
| 18 |
-
"nll": 0.
|
| 19 |
"per_action": {
|
| 20 |
"check": {
|
| 21 |
"acc": 1.0,
|
| 22 |
-
"n":
|
| 23 |
},
|
| 24 |
"click": {
|
| 25 |
-
"acc":
|
| 26 |
-
"n":
|
| 27 |
},
|
| 28 |
"fill": {
|
| 29 |
-
"acc": 0.
|
| 30 |
-
"n":
|
| 31 |
},
|
| 32 |
"skip": {
|
| 33 |
-
"acc": 0.
|
| 34 |
-
"n":
|
| 35 |
}
|
| 36 |
},
|
| 37 |
-
"top1": 0.
|
| 38 |
},
|
| 39 |
"deterministic": false,
|
| 40 |
"epochs": 4,
|
| 41 |
"history": [
|
| 42 |
{
|
| 43 |
"epoch": 1,
|
| 44 |
-
"train_nll":
|
| 45 |
"validation": {
|
| 46 |
-
"ece": 0.
|
| 47 |
-
"examples":
|
| 48 |
-
"nll":
|
| 49 |
"per_action": {
|
| 50 |
"check": {
|
| 51 |
-
"acc": 0.
|
| 52 |
-
"n":
|
| 53 |
},
|
| 54 |
"click": {
|
| 55 |
-
"acc":
|
| 56 |
-
"n":
|
| 57 |
},
|
| 58 |
"fill": {
|
| 59 |
-
"acc": 0.
|
| 60 |
-
"n":
|
| 61 |
},
|
| 62 |
"skip": {
|
| 63 |
-
"acc": 0.
|
| 64 |
-
"n":
|
| 65 |
}
|
| 66 |
},
|
| 67 |
-
"top1": 0.
|
| 68 |
}
|
| 69 |
},
|
| 70 |
{
|
| 71 |
"epoch": 2,
|
| 72 |
-
"train_nll":
|
| 73 |
"validation": {
|
| 74 |
-
"ece": 0.
|
| 75 |
-
"examples":
|
| 76 |
-
"nll":
|
| 77 |
"per_action": {
|
| 78 |
"check": {
|
| 79 |
-
"acc":
|
| 80 |
-
"n":
|
| 81 |
},
|
| 82 |
"click": {
|
| 83 |
-
"acc": 0.
|
| 84 |
-
"n":
|
| 85 |
},
|
| 86 |
"fill": {
|
| 87 |
-
"acc": 0.
|
| 88 |
-
"n":
|
| 89 |
},
|
| 90 |
"skip": {
|
| 91 |
-
"acc": 0.
|
| 92 |
-
"n":
|
| 93 |
}
|
| 94 |
},
|
| 95 |
-
"top1": 0.
|
| 96 |
}
|
| 97 |
},
|
| 98 |
{
|
| 99 |
"epoch": 3,
|
| 100 |
-
"train_nll": 0.
|
| 101 |
"validation": {
|
| 102 |
-
"ece": 0.
|
| 103 |
-
"examples":
|
| 104 |
-
"nll": 0.
|
| 105 |
"per_action": {
|
| 106 |
"check": {
|
| 107 |
-
"acc":
|
| 108 |
-
"n":
|
| 109 |
},
|
| 110 |
"click": {
|
| 111 |
-
"acc":
|
| 112 |
-
"n":
|
| 113 |
},
|
| 114 |
"fill": {
|
| 115 |
-
"acc": 0.
|
| 116 |
-
"n":
|
| 117 |
},
|
| 118 |
"skip": {
|
| 119 |
-
"acc": 0.
|
| 120 |
-
"n":
|
| 121 |
}
|
| 122 |
},
|
| 123 |
-
"top1": 0.
|
| 124 |
}
|
| 125 |
},
|
| 126 |
{
|
| 127 |
"epoch": 4,
|
| 128 |
-
"train_nll": 0.
|
| 129 |
"validation": {
|
| 130 |
-
"ece": 0.
|
| 131 |
-
"examples":
|
| 132 |
-
"nll": 0.
|
| 133 |
"per_action": {
|
| 134 |
"check": {
|
| 135 |
"acc": 1.0,
|
| 136 |
-
"n":
|
| 137 |
},
|
| 138 |
"click": {
|
| 139 |
-
"acc":
|
| 140 |
-
"n":
|
| 141 |
},
|
| 142 |
"fill": {
|
| 143 |
-
"acc": 0.
|
| 144 |
-
"n":
|
| 145 |
},
|
| 146 |
"skip": {
|
| 147 |
-
"acc": 0.
|
| 148 |
-
"n":
|
| 149 |
}
|
| 150 |
},
|
| 151 |
-
"top1": 0.
|
| 152 |
}
|
| 153 |
}
|
| 154 |
],
|
|
@@ -158,5 +158,5 @@
|
|
| 158 |
"warmup": 0.05,
|
| 159 |
"workers": 0
|
| 160 |
},
|
| 161 |
-
"state_signature": "
|
| 162 |
}
|
|
|
|
| 13 |
"metadata": {
|
| 14 |
"batch_size": 64,
|
| 15 |
"best_validation": {
|
| 16 |
+
"ece": 0.0011067466822396455,
|
| 17 |
+
"examples": 29649,
|
| 18 |
+
"nll": 0.014722759442557139,
|
| 19 |
"per_action": {
|
| 20 |
"check": {
|
| 21 |
"acc": 1.0,
|
| 22 |
+
"n": 833
|
| 23 |
},
|
| 24 |
"click": {
|
| 25 |
+
"acc": 1.0,
|
| 26 |
+
"n": 1007
|
| 27 |
},
|
| 28 |
"fill": {
|
| 29 |
+
"acc": 0.9877524709926945,
|
| 30 |
+
"n": 13962
|
| 31 |
},
|
| 32 |
"skip": {
|
| 33 |
+
"acc": 0.9952336246118293,
|
| 34 |
+
"n": 13847
|
| 35 |
}
|
| 36 |
},
|
| 37 |
+
"top1": 0.9920064806938171
|
| 38 |
},
|
| 39 |
"deterministic": false,
|
| 40 |
"epochs": 4,
|
| 41 |
"history": [
|
| 42 |
{
|
| 43 |
"epoch": 1,
|
| 44 |
+
"train_nll": 0.6810737938714119,
|
| 45 |
"validation": {
|
| 46 |
+
"ece": 0.0038536921401828295,
|
| 47 |
+
"examples": 29649,
|
| 48 |
+
"nll": 0.10877726682664057,
|
| 49 |
"per_action": {
|
| 50 |
"check": {
|
| 51 |
+
"acc": 0.9867947178871549,
|
| 52 |
+
"n": 833
|
| 53 |
},
|
| 54 |
"click": {
|
| 55 |
+
"acc": 1.0,
|
| 56 |
+
"n": 1007
|
| 57 |
},
|
| 58 |
"fill": {
|
| 59 |
+
"acc": 0.9732846297092107,
|
| 60 |
+
"n": 13962
|
| 61 |
},
|
| 62 |
"skip": {
|
| 63 |
+
"acc": 0.9447533761825666,
|
| 64 |
+
"n": 13847
|
| 65 |
}
|
| 66 |
},
|
| 67 |
+
"top1": 0.9612466096878052
|
| 68 |
}
|
| 69 |
},
|
| 70 |
{
|
| 71 |
"epoch": 2,
|
| 72 |
+
"train_nll": 0.08150138849369405,
|
| 73 |
"validation": {
|
| 74 |
+
"ece": 0.004962782920756581,
|
| 75 |
+
"examples": 29649,
|
| 76 |
+
"nll": 0.04922109633023761,
|
| 77 |
"per_action": {
|
| 78 |
"check": {
|
| 79 |
+
"acc": 1.0,
|
| 80 |
+
"n": 833
|
| 81 |
},
|
| 82 |
"click": {
|
| 83 |
+
"acc": 0.9940417080436942,
|
| 84 |
+
"n": 1007
|
| 85 |
},
|
| 86 |
"fill": {
|
| 87 |
+
"acc": 0.9852456668099127,
|
| 88 |
+
"n": 13962
|
| 89 |
},
|
| 90 |
"skip": {
|
| 91 |
+
"acc": 0.9790568354156135,
|
| 92 |
+
"n": 13847
|
| 93 |
}
|
| 94 |
},
|
| 95 |
+
"top1": 0.983068585395813
|
| 96 |
}
|
| 97 |
},
|
| 98 |
{
|
| 99 |
"epoch": 3,
|
| 100 |
+
"train_nll": 0.02742721090312225,
|
| 101 |
"validation": {
|
| 102 |
+
"ece": 0.0023602779376687977,
|
| 103 |
+
"examples": 29649,
|
| 104 |
+
"nll": 0.01792668065080643,
|
| 105 |
"per_action": {
|
| 106 |
"check": {
|
| 107 |
+
"acc": 1.0,
|
| 108 |
+
"n": 833
|
| 109 |
},
|
| 110 |
"click": {
|
| 111 |
+
"acc": 1.0,
|
| 112 |
+
"n": 1007
|
| 113 |
},
|
| 114 |
"fill": {
|
| 115 |
+
"acc": 0.988110585875949,
|
| 116 |
+
"n": 13962
|
| 117 |
},
|
| 118 |
"skip": {
|
| 119 |
+
"acc": 0.9944392287138009,
|
| 120 |
+
"n": 13847
|
| 121 |
}
|
| 122 |
},
|
| 123 |
+
"top1": 0.9918041229248047
|
| 124 |
}
|
| 125 |
},
|
| 126 |
{
|
| 127 |
"epoch": 4,
|
| 128 |
+
"train_nll": 0.01454558765468025,
|
| 129 |
"validation": {
|
| 130 |
+
"ece": 0.0011067466822396455,
|
| 131 |
+
"examples": 29649,
|
| 132 |
+
"nll": 0.014722759442557139,
|
| 133 |
"per_action": {
|
| 134 |
"check": {
|
| 135 |
"acc": 1.0,
|
| 136 |
+
"n": 833
|
| 137 |
},
|
| 138 |
"click": {
|
| 139 |
+
"acc": 1.0,
|
| 140 |
+
"n": 1007
|
| 141 |
},
|
| 142 |
"fill": {
|
| 143 |
+
"acc": 0.9877524709926945,
|
| 144 |
+
"n": 13962
|
| 145 |
},
|
| 146 |
"skip": {
|
| 147 |
+
"acc": 0.9952336246118293,
|
| 148 |
+
"n": 13847
|
| 149 |
}
|
| 150 |
},
|
| 151 |
+
"top1": 0.9920064806938171
|
| 152 |
}
|
| 153 |
}
|
| 154 |
],
|
|
|
|
| 158 |
"warmup": 0.05,
|
| 159 |
"workers": 0
|
| 160 |
},
|
| 161 |
+
"state_signature": "7c37ee78ca9c522d7bc0470eb8b4294f35bbf48246197677fe7745972a09824e"
|
| 162 |
}
|
sv0-forms.safetensors
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 2828784
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4f35bfac96dd23c058dfc098986c3f4cff39b836a177fb60e026b5f06c2ba782
|
| 3 |
size 2828784
|