NateRunsA-LIST's picture
README: v2 sol-refit release notes
8f2caee verified
|
Raw History Blame Contribute Delete
1.83 kB
---
license: other
license_name: proprietary
license_link: LICENSE
tags:
- coreml
- regression
- a-list
library_name: coreml
---
# A-LIST exercise extractor (Core ML)
On-device replacement for the remote LLM that extracts structured numbers from
free-text exercise entries in the A-LIST app (locomo mode). Single fp16 Core ML
graph: MiniLM-L6 encoder (frozen, mean-pool + L2-norm inside the graph) + MLP
heads.
- **Inputs**: `input_ids` int32 (1,128) WordPiece/bert-base-uncased; `attention_mask`
int32 (1,128); `parsed` float32 (1,10) regex features (see the app's
`ExerciseFeatureParser` for the exact order and transforms).
- **Output**: float32 (1,8) — `[log1p(duration_min), log1p(calories), heart_rate_bpm,
intensity_1_10, steps_gate_logit, log1p(steps), distance_gate_logit, log1p(distance_km)]`.
## Versions
- **`v2/` (current, 2026-08-23)**: identical graph retrained on the sol-relabeled
dataset (exercise-text-unified:v0 — one uniform frontier teacher, calorie CV 1.6%
vs the old labels' ~11%). On the frozen held-out-user sol eval (1,127 entries) it
beats the v1 artifact on every field: duration 68.5% vs 62.7%, calories 58.0% vs
51.5%, heart rate ±10bpm 76.0% vs 67.6%, intensity ±1 81.7% vs 76.0%, steps gate
94.9% vs 88.6%, distance gate 94.6% vs 90.8%. Same I/O contract and footprint.
- **Root files (v1, 2026-08-16)**: distilled from ~14.5k historical production
extractions (mixed teacher generations). Kept resolvable for rollback; the app's
`ExerciseExtractorDescriptor.v1()` still pins these bytes.
- `golden_cases.json` holds 10 input→output cases generated from the v1 artifact —
the app uses them to pin the *decode rules* (weights-independent), so they remain
valid across versions.
Internal model for the A-LIST iOS app. Not intended for third-party use.