Files
boc/intelligence/build-a3-torrkorning.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

5.3 KiB

BUILD-A3: Torrkörning — Valideringsresultat (aamos_train_v3 / aamos_val_v3)

Datum: 2026-06-06
Utfört av: Subagent BUILD-A3
Script körd på: AAMOS-server (ej GPU-boxen — ingen GPU krävdes)
Valideringsscript: /home/bernt/.openclaw/workspace/build/validate_training_data.py


🟢 SLUTDOM: DATAN ÄR KLAR FÖR TRÄNING

Noll problem hittades. Alla 37 052 exempel (33 352 träning + 3 700 validering) passerar samtliga tester.


Resultat per test

[1] JSONL-integritet

Mätvärde Träning Validering
Icke-tomma rader 33 352 3 700
Korrekt laddade records 33 352 3 700
JSON-parse-fel 0 0
Format-distribution messages_key: 33352 messages_key: 3700

Alla rader är giltig JSON. Alla hamnar direkt i messages_key-grenen — det enklaste och mest robusta flödet i load_dataset_from_jsonl().


[2] Chat-format validering

Kontroll Träning Validering
Har system-meddelande 33 352 / 33 352 3 700 / 3 700
Har user-meddelande 33 352 / 33 352 3 700 / 3 700
Har assistant-meddelande 33 352 / 33 352 3 700 / 3 700
Tomma content-fält 0 0
Valideringsfel (messages) 0 0
Roll-profil [assistant, system, user] (100%) [assistant, system, user] (100%)

100% av exemplen har exakt triaden system+user+assistant. Noll avvikelser.


[3] Token-längd-distribution

Uppskattningsmetod: len(text) // 4 på ChatML-formaterad text (<|im_start|>role\ncontent<|im_end|>\n)

Träningsdata (33 352 exempel)

Percentil Tokens
p50 (median) 176
p75 202
p90 339
p95 632
p99 723
p100 (max) 1 006

Histogram:

0-200     :  24 544 ( 73.6%) █████████████████████████████
200-400   :   5 607 ( 16.8%) ██████
400-600   :     878 (  2.6%) █
600-800   :   2 233 (  6.7%) ██
800-1000  :      89 (  0.3%)
1000-1200 :       1 (  0.0%)
1200+     :       0 (  0.0%)

Valideringsdata (3 700 exempel)

Percentil Tokens
p50 176
p95 626
p99 702
max 884

[4] Verifiering av load_dataset_from_jsonl()

Scriptet simulerade exakt load_dataset_from_jsonl()-logiken mot de faktiska filerna:

  • Alla 33 352 träningsexempel laddas utan fel
  • Alla 3 700 valideringsexempel laddas utan fel
  • Samtliga hamnar i messages_key-grenen (rätt format)
  • Dataset.from_list() kan köras utan problem
  • Alla content-fält är strängar (inga null, inga icke-strängar)
  • Strikt [system, user, assistant]-struktur i 100% av fallen

Scriptet hanterar formatet korrekt utan modifikationer.


[5] CANON-stickprov

Nyckelord Träning Validering Status
infrastrukturkontroll 97 förekomster 0 (injicerat i träning, ej val — förväntat)
559141-7042 (korrekt org-nr) 33 352 förekomster 3 700 (finns i ALLA system-prompts)
eskalera 156 förekomster 5
559316-3881 (felaktigt org-nr) 0 förekomster 0 Rensat

CANON-fix bekräftad: Det gamla felaktiga org-numret 559316-3881 finns i noll rader. Det korrekta 559141-7042 är genomgående i 100% av exemplen (i system-prompten).

Att infrastrukturkontroll inte finns i valdata är förväntat — CANON-exempel injicerades primärt i träningsdatan.


max_seq_length-rekommendation (A2-relevant)

Statistik Värde
p95 632 tokens
p99 723 tokens
max 1 006 tokens
Överstiger 2048 0 av 33 352 (0.0%)
Överstiger 1024 0 av 33 352 (0.0%)

DOM: max_seq_length=2048 ÄR TILLRÄCKLIGT

Det längsta exemplet i hela datasetet är ~1 006 tokens. Det innebär att max_seq_length=2048 ger dubbel marginal mot det faktiska maximum. Ingen trunkering sker överhuvudtaget.

Konsekvens för A2:s VRAM-kalkyl: A2:s antagande om max_seq_length=2048 är korrekt — men om VRAM är ont kan max_seq_length=1024 användas utan dataförlust (99% av exemplen är ≤723 tokens). Det längsta enskilda exemplet (1 006 tokens) skulle trunkeras marginellt vid 1024.

Rekommendation: Behåll max_seq_length=2048 som planerat. Det ger säker marginal och inga pad/truncation-överraskningar. Sänk till 1024 om VRAM är ett problem (inga reella dataförluster, minimal effekt på kvalitet).


Sammanfattning

Träningsdata:    33 352 records — 0 fel
Valideringsdata:  3 700 records — 0 fel
JSON-parse-fel:  0
Format-fel:      0
Tomma content:   0
Överstiger 2048: 0 (max är 1006 tokens)
CANON korrekt:   Ja (org-nr, nyckelbegrepp, 0 fel org-nr)
load_dataset():  Fungerar korrekt
DOM:             🟢 KLAR FÖR TRÄNING

Bilagor

  • Valideringsscript: /home/bernt/.openclaw/workspace/build/validate_training_data.py
  • Träningsscript: /home/bernt/.openclaw/workspace/build/train_eslm.py
  • Träningsdata: /opt/amos/data/finetune-exports/aamos_train_v3.jsonl (33 352 rader)
  • Valideringsdata: /opt/amos/data/finetune-exports/aamos_val_v3.jsonl (3 700 rader)