--- license: apache-2.0 base_model: autotrust/JEV-9B library_name: peft tags: - knowledge-tracing - system-one - typed-decisions - lora - calibration --- # jevkt-checkpoints Fine-tuned System-One blocks (LoRA adapter + typed decision head + calibration) on top of **autotrust/JEV-9B** (Apache-2.0; backbone Qwen/Qwen3.5-9B), plus the pyKT / classical knowledge-tracing baselines of the **Jev-KT** project. Training data that can be shared is in [LEAP-LAB-KUS/jevkt-synthetic](https://huggingface.co/datasets/LEAP-LAB-KUS/jevkt-synthetic). ## Licence - Our adapters, heads and calibration files: **Apache-2.0**. The base model's licence (autotrust/JEV-9B, Apache-2.0; Qwen3.5-9B) applies to the combined model. - Several arms carry extra restrictions from their training data (next section). For those arms the rule is **research use; respect the source licences**. ## Training-data provenance and use restrictions All E16-driver (S1) arms also mix 5 % replay rows from SargeDev/jev-distill-corpus-v3 (Apache-2.0). **Commercial Jev teacher labels.** These arms were trained on targets that include labels from TypeSafe's commercial Jev API, called through OpenRouter: - `typesafe/jev-1.13-20260917`: `e16/S1-ABCLODO16-*` (A+B+C LODO), `e16/S1-G-d*` (E18 grid, except `-a100`). - `typesafe/jev-1.14-20261014`: `e16/S1-E19-*` α 0.5 arms (`a1-n16k-1model`, `a1-n16k-nopersona`, `a2-n64k`, `b-n64k`, `b-n128k`), `e16/S1-SS-hlr-n16k-syn`, `e16/S1-SS-mix-n16k-syn`. - Both versions: `e16/S1-MIX-E18E19-n16k-syn`, `e16/S1-MIX3-n16k-syn`. - Indirect, through the Jev-distilled jev-distill corpus: `e15/F3-gen`. - Without Jev labels: E19 `-a100` / `-soft-a100` arms, `e15/F2-flat`, and all real-KT arms listed below. **Research use; respect the source licences.** | Arms | Source | Licence / terms | |---|---|---| | `e16/S1-SS-hlr-n16k-syn`, `e16/S1-SS-mix-n16k-syn`, `e16/S1-MIX3-n16k-syn` | Duolingo HLR interaction structure | **CC BY-NC 4.0** (non-commercial) | | `meta_only/podA/e16/S1-O1-near` | Duolingo HLR | **CC BY-NC 4.0** (config + log only) | | `meta_only/podA/e16/S1-Dmix-oth`, `meta_only/podC/e16/S1-T-mix`, `S1-O3-syn`, `S1-O3x16-syn` | ChaosNLI (via T-cls / D-mix) | **CC BY-NC 4.0** (configs + logs only) | | `e16/S1-E19-a2-*` | XES3G5M question text (KCQRL English translation) | unclear redistribution terms | | `e15/F1-LODO-*`, `e15/F1-cs/*`, `e15/P`, `e16/S1-ABCLODO16-*`, `e16/S1-F1pool64-rp`, `e16/S2-*`, `pykt/*`, `classical/*` | public KT benchmarks (ASSISTments 2009/2017, Eedi NIPS 2020 tasks 3–4, XES3G5M, DBE-KT22, KDD Cup 2010 Algebra 2005, Junyi) | each dataset's own terms | | `meta_only/podC/e16/S1-T-seq`, `S1-P-seq`, `S1-D-seq*` | KuaiRec (CC BY-SA 4.0), Lichess / football results (CC0) | ShareAlike + attribution (configs + logs only) | | `e16/S1-E19-*` | simulated-student answers from Llama 3.1/3.2, Gemma 3, Qwen 2.5 | Llama Community Licence and Gemma Terms of Use conditions on models trained on their outputs | ## Layout ``` e15//train_log.jsonl, e15//ckpt-STEP/ # E15 arms (jevkt.jev9b_ft) e15/F1-cs/-sN/ckpt-*/ # one block per cold-start cell e16//train_log.jsonl, e16//ckpt-STEP/ # E16 driver (jevkt.e16_rl): S1 (incl. E17-E20, LODO), S2 RL arms meta_only/pod{A,C}/e1x// # configs + train logs ONLY (weights not uploaded yet) pykt//pykt--s/, pykt//coldstart/ # pyKT DLKT baselines: qid_model.ckpt + train_info.json classical/____s.pt # leap-kt-toolkit baselines ``` Each `ckpt-STEP/` (STEP = training rows seen) holds: - `adapter_vllm/`: vLLM LoRA export (`adapter_config.json`, `adapter_model.safetensors`, `decision_head.json`). - `adapter/`: the same LoRA in PEFT layout. - `head.safetensors`: the typed decision head. PPO arms also have `value_head.safetensors`. - `judge_config.json`: slot layout and verbalizers. - `calibration.json`: per-kind temperature fitted on the arm's validation split. The first line of each `train_log.jsonl` records the data path, its train sha256, the objective, the replay file and the seed. Config files carry the training machines' absolute paths (`/workspace/jev_kt/...`, `/root/models/...`); these are informational only. pyKT note: some pyKT checkpoints hold dataset-level aggregates as model inputs: `gkt_graph_transition.npz` (KC×KC transition matrix) and `dimkt_diff.json` (per-question difficulty levels). Neither contains learner sequences. Usage with JEV-9B served by vLLM (code in the Jev-KT repo): `python -m jevkt.jev9b_kt --ds --state h25knn --adapter --lora-name --load-lora`. ## Not yet included - Weights for 68 checkpoints that are still only on stopped training pods. Their configs and logs are in `meta_only/`. - Arms that were still training at upload time: E19-b-n256k, E19-a2-n16k-a100, S2-grpo-log, E27 (27B).