File size: 4,911 Bytes
0b6a72d
7374ac2
0b6a72d
7374ac2
0b6a72d
 
 
7374ac2
0b6a72d
7374ac2
0b6a72d
 
7374ac2
0b6a72d
 
7374ac2
 
 
0b6a72d
7374ac2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0b6a72d
 
 
 
7374ac2
 
 
 
 
 
0b6a72d
 
7374ac2
 
 
 
 
 
3c9c77e
7374ac2
 
 
0b6a72d
7374ac2
 
0b6a72d
7374ac2
 
0b6a72d
7374ac2
0b6a72d
7374ac2
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
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/<arm>/train_log.jsonl, e15/<arm>/ckpt-STEP/      # E15 arms (jevkt.jev9b_ft)
e15/F1-cs/<ds>-s<seed>N<N>/ckpt-*/                   # one block per cold-start cell
e16/<arm>/train_log.jsonl, e16/<arm>/ckpt-STEP/      # E16 driver (jevkt.e16_rl): S1 (incl. E17-E20, LODO), S2 RL arms
meta_only/pod{A,C}/e1x/<arm>/                        # configs + train logs ONLY (weights not uploaded yet)
pykt/<ds>/pykt-<model>-s<seed>/, pykt/<ds>/coldstart/ # pyKT DLKT baselines: qid_model.ckpt + train_info.json
classical/<model>__<ds>__s<seed>.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 <ds> --state h25knn --adapter <ckpt dir> --lora-name <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).