munod commited on
Commit
599df58
·
1 Parent(s): 426039c

Raise multilingual LoRA rank to 64 (accuracy 0.702 -> 0.853, es ECE 0.170 -> 0.038)

Browse files
README.md CHANGED
@@ -19,9 +19,10 @@ pipeline_tag: text-classification
19
 
20
  # jeba-multi (System One decision engine)
21
 
22
- > **Status: pre-release.** This card describes the intended release. **Weights and measured
23
- > metrics are pending** the RTX 3060 training run (`uv sync --extra train`); numbers below are
24
- > placeholders to be replaced by `benchmarks/report.md`.
 
25
 
26
  ## Model details
27
 
@@ -70,14 +71,21 @@ checkpointing.
70
 
71
  | Checkpoint | Accuracy | ECE (calibrated) | p50 (ms) |
72
  | --- | --- | --- | --- |
73
- | English (ModernBERT-large + LoRA + choice head) | 0.781 | 0.077 | 22.9 |
74
- | Multilingual (mmBERT-base + LoRA + choice head) | 0.711 | 0.073 | 12.4 |
75
-
76
- Per primitive (English): `choice` 0.708, `noul` 0.744, `score` 0.892; (multilingual): `choice`
77
- 0.734, `noul` 0.716, `score` 0.682. The localized, per-record-RNG data (B-1) lifted multilingual
78
- `choice` from 0.40 to 0.73 and English overall from 0.72 to 0.78. Per-language calibration for a
79
- few multilingual languages (`es`, `nl`, `de`) and multilingual `score` remain the next targets.
 
 
80
  The CUDA-graph fast path (`JEBA_FAST=1`) gives a 2.7× p50 speedup with 0 top-label flips.
 
 
 
 
 
81
  Full tables and environment are in
82
  [`benchmarks/report.md`](https://github.com/munod/jeba/blob/main/benchmarks/report.md).
83
 
 
19
 
20
  # jeba-multi (System One decision engine)
21
 
22
+ > **Status: released (`v0.2.0`).** Trained on a single RTX 3060 12GB and published as LoRA
23
+ > adapters ([`munod/jeba-en`](https://huggingface.co/munod/jeba-en),
24
+ > [`munod/jeba-multi`](https://huggingface.co/munod/jeba-multi)); measured numbers below come
25
+ > from `benchmarks/report.md`.
26
 
27
  ## Model details
28
 
 
71
 
72
  | Checkpoint | Accuracy | ECE (calibrated) | p50 (ms) |
73
  | --- | --- | --- | --- |
74
+ | English (ModernBERT-large + LoRA r=16 + choice head) | 0.763 | 0.061 | 22.6 |
75
+ | Multilingual (mmBERT-base + LoRA r=64 + choice head) | 0.853 | 0.038 | 13.3 |
76
+
77
+ Per primitive (English): `choice` 0.834, `noul` 0.744, `score` 0.712; (multilingual): `choice`
78
+ 0.684, `noul` 0.960, `score` 0.916. The localized, per-record-RNG data (B-1) lifted multilingual
79
+ `choice` from 0.40 to 0.68 and English overall from 0.72 to 0.76. **Raising the multilingual LoRA
80
+ rank from 16 to 64** (alpha 128) removed the cross-language capacity bottleneck: overall accuracy
81
+ 0.702 → 0.853 and `es` ECE 0.170 → 0.038 (`es` accuracy 0.472 → 0.956). Five of six languages now
82
+ meet ECE ≤ 0.05; `nl` (ECE 0.104, accuracy 0.663) remains the outlier (NFR-C06 partially open).
83
  The CUDA-graph fast path (`JEBA_FAST=1`) gives a 2.7× p50 speedup with 0 top-label flips.
84
+
85
+ **Robustness (B-4).** On a noisy view (one surface edit — typo/accents/casing — applied to 15% of
86
+ states) English drops only 0.763 → 0.760 and multilingual (r=64) 0.853 → 0.847, so the released
87
+ adapters are already robust to this noise model.
88
+
89
  Full tables and environment are in
90
  [`benchmarks/report.md`](https://github.com/munod/jeba/blob/main/benchmarks/report.md).
91
 
adapter_config.json CHANGED
@@ -20,7 +20,7 @@
20
  "layers_pattern": null,
21
  "layers_to_transform": null,
22
  "loftq_config": {},
23
- "lora_alpha": 32,
24
  "lora_bias": false,
25
  "lora_dropout": 0.05,
26
  "lora_ga_config": null,
@@ -31,13 +31,13 @@
31
  "peft_type": "LORA",
32
  "peft_version": "0.21.0",
33
  "qalora_group_size": 16,
34
- "r": 16,
35
  "rank_pattern": {},
36
  "revision": null,
37
  "target_modules": [
38
- "Wo",
39
  "Wqkv",
40
- "Wi"
41
  ],
42
  "target_parameters": null,
43
  "task_type": null,
 
20
  "layers_pattern": null,
21
  "layers_to_transform": null,
22
  "loftq_config": {},
23
+ "lora_alpha": 128,
24
  "lora_bias": false,
25
  "lora_dropout": 0.05,
26
  "lora_ga_config": null,
 
31
  "peft_type": "LORA",
32
  "peft_version": "0.21.0",
33
  "qalora_group_size": 16,
34
+ "r": 64,
35
  "rank_pattern": {},
36
  "revision": null,
37
  "target_modules": [
38
+ "Wi",
39
  "Wqkv",
40
+ "Wo"
41
  ],
42
  "target_parameters": null,
43
  "task_type": null,
adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:6f529ee66b8d859121e075662702384dce21aaddc14d1fdf288b4383c479ae19
3
- size 13537472
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:18df64c5321be3c487171eb1f6bceda6a0bc15f6731ba60083de76932187fb9f
3
+ size 54088096
choice_head.json CHANGED
The diff for this file is too large to render. See raw diff
 
finetune_config.json CHANGED
@@ -8,13 +8,13 @@
8
  "grad_accum": 4,
9
  "gradient_checkpointing": true,
10
  "learning_rate": 0.0001,
11
- "lora_alpha": 32,
12
  "lora_dropout": 0.05,
13
- "lora_rank": 16,
14
  "max_len": 1024,
15
  "max_records": null,
16
  "model_id": "jhu-clsp/mmBERT-base",
17
- "out_dir": "checkpoints/multi",
18
  "seed": 42,
19
  "use_4bit": false,
20
  "val_split": 0.1
 
8
  "grad_accum": 4,
9
  "gradient_checkpointing": true,
10
  "learning_rate": 0.0001,
11
+ "lora_alpha": 128,
12
  "lora_dropout": 0.05,
13
+ "lora_rank": 64,
14
  "max_len": 1024,
15
  "max_records": null,
16
  "model_id": "jhu-clsp/mmBERT-base",
17
+ "out_dir": "checkpoints/multi_r64",
18
  "seed": 42,
19
  "use_4bit": false,
20
  "val_split": 0.1
temperature_calibration.json CHANGED
@@ -4,132 +4,132 @@
4
  "choice": {
5
  "by_language": {
6
  "de": {
7
- "ece_after": 0.249286,
8
- "ece_before": 0.335616,
9
  "n": 83,
10
- "temperature": 3.0
11
  },
12
  "es": {
13
- "ece_after": 0.295552,
14
- "ece_before": 0.395429,
15
  "n": 84,
16
- "temperature": 3.0
17
  },
18
  "fr": {
19
- "ece_after": 0.031722,
20
- "ece_before": 0.031722,
21
  "n": 83,
22
- "temperature": 1.0
23
  },
24
  "it": {
25
- "ece_after": 0.000804,
26
- "ece_before": 0.013927,
27
  "n": 83,
28
- "temperature": 1.25
29
  },
30
  "nl": {
31
- "ece_after": 0.154009,
32
- "ece_before": 0.22301,
33
  "n": 83,
34
- "temperature": 2.0
35
  },
36
  "pt": {
37
- "ece_after": 0.059923,
38
- "ece_before": 0.083558,
39
  "n": 84,
40
  "temperature": 0.5
41
  }
42
  },
43
- "ece_after": 0.118556,
44
- "ece_before": 0.153826,
45
  "n": 500,
46
- "temperature": 2.0
47
  },
48
  "noul": {
49
  "by_language": {
50
  "de": {
51
- "ece_after": 0.012124,
52
- "ece_before": 0.068245,
53
  "n": 83,
54
- "temperature": 3.0
55
  },
56
  "es": {
57
- "ece_after": 0.087329,
58
- "ece_before": 0.224015,
59
  "n": 84,
60
- "temperature": 10.0
61
  },
62
  "fr": {
63
- "ece_after": 0.006848,
64
- "ece_before": 0.310798,
65
  "n": 83,
66
- "temperature": 0.1
67
  },
68
  "it": {
69
- "ece_after": 0.040417,
70
- "ece_before": 0.259646,
71
  "n": 83,
72
- "temperature": 0.25
73
  },
74
  "nl": {
75
- "ece_after": 0.078314,
76
- "ece_before": 0.218552,
77
  "n": 83,
78
- "temperature": 10.0
79
  },
80
  "pt": {
81
- "ece_after": 0.006405,
82
- "ece_before": 0.29764,
83
  "n": 84,
84
- "temperature": 0.15
85
  }
86
  },
87
- "ece_after": 0.06769,
88
- "ece_before": 0.071107,
89
  "n": 500,
90
- "temperature": 0.75
91
  },
92
  "score": {
93
  "by_language": {
94
  "de": {
95
- "ece_after": 0.128129,
96
- "ece_before": 0.313627,
97
  "n": 83,
98
- "temperature": 0.15
99
  },
100
  "es": {
101
- "ece_after": 0.160055,
102
- "ece_before": 0.25,
103
  "n": 84,
104
  "temperature": 0.25
105
  },
106
  "fr": {
107
- "ece_after": 0.103257,
108
- "ece_before": 0.178855,
109
  "n": 83,
110
  "temperature": 0.25
111
  },
112
  "it": {
113
- "ece_after": 0.118342,
114
- "ece_before": 0.160282,
115
  "n": 83,
116
- "temperature": 0.75
117
  },
118
  "nl": {
119
- "ece_after": 0.112712,
120
- "ece_before": 0.359823,
121
  "n": 83,
122
- "temperature": 0.15
123
  },
124
  "pt": {
125
- "ece_after": 0.102839,
126
- "ece_before": 0.213012,
127
  "n": 84,
128
  "temperature": 0.25
129
  }
130
  },
131
- "ece_after": 0.094548,
132
- "ece_before": 0.233416,
133
  "n": 500,
134
  "temperature": 0.25
135
  }
 
4
  "choice": {
5
  "by_language": {
6
  "de": {
7
+ "ece_after": 0.180605,
8
+ "ece_before": 0.241955,
9
  "n": 83,
10
+ "temperature": 0.5
11
  },
12
  "es": {
13
+ "ece_after": 0.031482,
14
+ "ece_before": 0.245513,
15
  "n": 84,
16
+ "temperature": 0.05
17
  },
18
  "fr": {
19
+ "ece_after": 0.082135,
20
+ "ece_before": 0.127981,
21
  "n": 83,
22
+ "temperature": 0.5
23
  },
24
  "it": {
25
+ "ece_after": 0.104306,
26
+ "ece_before": 0.132043,
27
  "n": 83,
28
+ "temperature": 0.75
29
  },
30
  "nl": {
31
+ "ece_after": 0.223918,
32
+ "ece_before": 0.35971,
33
  "n": 83,
34
+ "temperature": 5.0
35
  },
36
  "pt": {
37
+ "ece_after": 0.074149,
38
+ "ece_before": 0.080335,
39
  "n": 84,
40
  "temperature": 0.5
41
  }
42
  },
43
+ "ece_after": 0.121825,
44
+ "ece_before": 0.153996,
45
  "n": 500,
46
+ "temperature": 0.75
47
  },
48
  "noul": {
49
  "by_language": {
50
  "de": {
51
+ "ece_after": 0.06539,
52
+ "ece_before": 0.382207,
53
  "n": 83,
54
+ "temperature": 0.05
55
  },
56
  "es": {
57
+ "ece_after": 0.06501,
58
+ "ece_before": 0.40446,
59
  "n": 84,
60
+ "temperature": 0.05
61
  },
62
  "fr": {
63
+ "ece_after": 0.018942,
64
+ "ece_before": 0.30131,
65
  "n": 83,
66
+ "temperature": 0.05
67
  },
68
  "it": {
69
+ "ece_after": 0.015752,
70
+ "ece_before": 0.33742,
71
  "n": 83,
72
+ "temperature": 0.1
73
  },
74
  "nl": {
75
+ "ece_after": 0.086522,
76
+ "ece_before": 0.317352,
77
  "n": 83,
78
+ "temperature": 0.1
79
  },
80
  "pt": {
81
+ "ece_after": 0.019275,
82
+ "ece_before": 0.306618,
83
  "n": 84,
84
+ "temperature": 0.1
85
  }
86
  },
87
+ "ece_after": 0.029595,
88
+ "ece_before": 0.341617,
89
  "n": 500,
90
+ "temperature": 0.05
91
  },
92
  "score": {
93
  "by_language": {
94
  "de": {
95
+ "ece_after": 0.025083,
96
+ "ece_before": 0.414687,
97
  "n": 83,
98
+ "temperature": 0.25
99
  },
100
  "es": {
101
+ "ece_after": 0.024446,
102
+ "ece_before": 0.399067,
103
  "n": 84,
104
  "temperature": 0.25
105
  },
106
  "fr": {
107
+ "ece_after": 0.064809,
108
+ "ece_before": 0.383335,
109
  "n": 83,
110
  "temperature": 0.25
111
  },
112
  "it": {
113
+ "ece_after": 0.032551,
114
+ "ece_before": 0.388731,
115
  "n": 83,
116
+ "temperature": 0.25
117
  },
118
  "nl": {
119
+ "ece_after": 0.014055,
120
+ "ece_before": 0.406849,
121
  "n": 83,
122
+ "temperature": 0.25
123
  },
124
  "pt": {
125
+ "ece_after": 0.032676,
126
+ "ece_before": 0.379573,
127
  "n": 84,
128
  "temperature": 0.25
129
  }
130
  },
131
+ "ece_after": 0.032023,
132
+ "ece_before": 0.393027,
133
  "n": 500,
134
  "temperature": 0.25
135
  }