es-ude / es-ude/OnDeviceTraining-base-project
har_benchmark: Accuracy je Fenster melden (rig_marker v0.2.8, rig_window_end_ex)
- Dominant language
- C
- Stars
- 0
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Follow-up zu LeoBuron/odt-energy-rig#20: seit rig_marker **v0.2.8** kann eine Firmware neben dem Loss weitere Kennzahlen je Fenster melden. `har_benchmark` soll die Trainingsgenauigkeit des Fensters mitsenden.
## Was die Bibliothek anbietet (v0.2.8)
```c
void rig_window_end(float loss); /* unveraendert */
void rig_window_end_ex(float loss, const char *extra); /* extra: "key=value,...", hinter loss= angehaengt */
```
Vereinbarung (INTERFACE-419.md §3): `acc=/` ueber die `steps*batch` Samples des Fensters. Der Rig-Host schreibt daraus `acc_first`/`acc_last` je Repeat in `meta.toml` (analog zu `loss_first`/`loss_last`); `rigctl check` bewertet die Accuracy nicht, sie ist Information.
## Aenderung in `src/examples/har_benchmark.c` (nach Merge von #2)
- `cmake/har_benchmark.cmake`: `ODT_RIG_GIT_TAG` von `v0.2.1` auf `v0.2.8`.
- Im Fenster einen Trefferzaehler fuehren: nach `calculateGradsSequential` den argmax von `stats->output` (Forward-Ausgabe der Laenge `NUM_CLASSES`) gegen `y` vergleichen, `hits++` bei Gleichheit. Falls `trainingStats_t` die Ausgabe nicht traegt, ist ein separater Forward vor dem Trainingsschritt NICHT akzeptabel (verfaelscht die Energiemessung) -- dann die Ausgabe ueber den OdtHook-Event abgreifen oder das Feld in ODT nachruesten.
- `rig_window_end(mean)` durch
```c
char extra[24];
snprintf(extra, sizeof extra, "acc=%u/%u", hits, (unsigned)(ODT_BENCH_STEPS_PER_WINDOW * BATCH));
rig_window_end_ex(lossSum / (float)(ODT_BENCH_STEPS_PER_WINDOW * BATCH), extra);
```
ersetzen. Das `snprintf` liegt hinter `rig_window_end_ex`s D0-low nicht, sondern davor -- es laeuft also im Messfenster; bei ~1 s Fenstern (float32) bzw. ~2 s (sym8) ist das vernachlaessigbar, aber der Vollstaendigkeit halber: es sind einige Mikrosekunden CPU ohne Peripheriewechsel.
- `scripts/check_har_benchmark_log.py`: `acc` optional mitparsen, wenn es die win-Zeilen prueft.
- README-Abschnitt zum Benchmark: `acc_first`/`acc_last` in `meta.toml` erwaehnen.
Bei 8 Samples je Fenster ist die Accuracy grob (Schritte von 12,5 %); aussagekraeftig wird sie erst ueber einen Repeat oder den ganzen Job gemittelt -- das passiert host-seitig.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with src/examples/har_benchmark.c and inspect trainingStats_t and the OdtHook event path to determine where the forward output is available without an extra forward pass. Update cmake/har_benchmark.cmake, scripts/check_har_benchmark_log.py, and the benchmark README as described, then run the existing benchmark log checks. Done means window records include acc and the resulting meta.toml documents acc_first and acc_last.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, cmake, python
- Domain
- build-system, documentation, embedded-iot, testing-qa
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100