Spaces:
Running
Running
org card: per-experiment hyperparameters and VQA/caption results
Browse files- README.md +200 -13
- index.html +143 -13
README.md
CHANGED
|
@@ -7,11 +7,38 @@ sdk: static
|
|
| 7 |
pinned: false
|
| 8 |
---
|
| 9 |
|
| 10 |
-
# Aspaklarya
|
| 11 |
|
| 12 |
-
LoRA finetunes of **Qwen3-VL-8B-Instruct**, trained jointly on **visual
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
| Item | Value |
|
| 17 |
|---|---|
|
|
@@ -26,7 +53,7 @@ LoRA finetunes of **Qwen3-VL-8B-Instruct**, trained jointly on **visual question
|
|
| 26 |
|
| 27 |
Winners are merged into the bf16 base and re-validated. For runs 001-017 that merge also removes a train/serve mismatch, since those adapters were fitted on a 4-bit base but are served from bf16 weights; runs 018 onward have no such mismatch.
|
| 28 |
|
| 29 |
-
## Configurations
|
| 30 |
|
| 31 |
| Model | r / alpha | Dropout | LR | Sched | Vision | Per image | Items | Change |
|
| 32 |
|---|---|---|---|---|---|---|---|---|
|
|
@@ -54,7 +81,7 @@ Winners are merged into the bf16 base and re-validated. For runs 001-017 that me
|
|
| 54 |
|
| 55 |
Constant everywhere: effective batch 32 (except 014 at 16, 015-017 at 64), warmup 0.03, grad clip 0.3 (1.0 for 011/012), seed 3407.
|
| 56 |
|
| 57 |
-
## Results
|
| 58 |
|
| 59 |
Best checkpoint per run on a fixed 1000-image draw (2000 graded items), with bootstrap standard error. **Overall** = mean of caption and VQA. **In-dom.** = the target overhead-imagery subset (491 images); **RSICD** = the public RSICD remote-sensing benchmark subset (509 images). Sorted by in-domain overall; **bold marks the best value in each column**.
|
| 60 |
|
|
@@ -85,7 +112,7 @@ Best checkpoint per run on a fixed 1000-image draw (2000 graded items), with boo
|
|
| 85 |
| Qwen3-VL-8B (base) | 68.37 ±0.89 | 58.94 ±1.50 | 63.66 ±0.92 | 65.68 ±0.66 | 56.01 ±1.01 | 60.84 ±0.62 | 63.07 ±0.94 | 53.18 ±1.46 | 58.13 ±0.91 |
|
| 86 |
|
| 87 |
Every finetune beats both references overall. The selected model, Aspaklarya-020, is **+17.9** over the base model and **+9.4** over the in-house reference on the full set.
|
| 88 |
-
## Learning rate at large batch
|
| 89 |
|
| 90 |
Aspaklarya-015 gave the best captioning in the table at effective batch 64, but it was trained at 2e-4 — the rate tuned for batch 32. Two follow-ups tested whether the batch-64 recipe was simply under-stepped. Scores below come from a separate 500-image draw used for live checkpoint selection, so they compare only with each other.
|
| 91 |
|
|
@@ -99,7 +126,7 @@ Linear LR scaling is **wrong** for LoRA here: 4e-4 peaked at epoch 1 and then lo
|
|
| 99 |
|
| 100 |
On the shared 1000-image set, neither batch-64 rate beat the reference: 2e-4 is **-0.56** overall and **-0.09** in-domain, 3e-4 is **-0.34** and **-0.87**. Effective batch 64 is therefore refuted at every learning rate tried, and the loss is consistently in VQA while captioning holds or improves. Together with the batch-16 result this closes the batch-size and learning-rate axes: **no hyperparameter lever remains untested**, and further gains have to come from the training data.
|
| 101 |
|
| 102 |
-
## Error bars
|
| 103 |
|
| 104 |
Bootstrap over images, 3000 resamples. Absolute standard error:
|
| 105 |
|
|
@@ -113,11 +140,11 @@ Paired model-vs-model error is smaller because image difficulty cancels: **0.42*
|
|
| 113 |
|
| 114 |
Applied exhaustively to the five leading checkpoints (020, 018, 019, 001, 011), the paired bootstrap separates **0 of 10 pairs overall and 0 of 10 in-domain** at 95% — in-domain every pair sits at p ≥ 0.67. The only significant pairs anywhere are three on the RSICD slice, all of them 020 against another model. **The ordering of the results table below the top line is not a measurement.**
|
| 115 |
|
| 116 |
-
## Caveat
|
| 117 |
|
| 118 |
The hyperparameter runs are statistically tied with each other: among runs 001-019, every confidence interval against the leader straddles zero. **VQA error is ~2.3x caption error**, so no finetune-vs-finetune VQA difference in any column is resolvable; only caption gaps, the gaps to the two references, and the data-scaling result of run 020 are real. Doubling the eval set from 500 to 1000 images did not separate the tied field, and it reshuffled its order.
|
| 119 |
|
| 120 |
-
## Findings
|
| 121 |
|
| 122 |
- **Hyperparameters are saturated; data is not.** LR, rank, alpha, dropout, weight decay, gradient clipping, batch geometry, effective batch size, LR scaling at large batch and base-weight precision were all swept without beating the noise floor. Adding 91% more training images cleared it on the first attempt.
|
| 123 |
- **The slices disagree — but data breaks the trade.** Ranking by in-domain score almost inverts the RSICD ranking, and every hyperparameter lever that moved one slice moved the other the opposite way. Extra data is the exception: it lifted RSICD by 1.57 while leaving in-domain unchanged.
|
|
@@ -129,7 +156,7 @@ The hyperparameter runs are statistically tied with each other: among runs 001-0
|
|
| 129 |
- **Training in bf16 instead of 4-bit is a small, consistent positive** — the only change in the whole sweep that never loses on any slice — but it is still inside the error bar.
|
| 130 |
- **Data is the remaining lever**, not hyperparameters — and it is not exhausted: the run that used it had not converged when its schedule ended.
|
| 131 |
|
| 132 |
-
## Base-weight precision
|
| 133 |
|
| 134 |
Runs 001-017 all trained their adapters against **4-bit quantized** base weights, while evaluation and the final merge both use the **bf16** base. That is a train/serve mismatch: the adapter was fitted to compensate for quantization error that is absent at inference time.
|
| 135 |
|
|
@@ -146,7 +173,7 @@ The mechanism is not the expected one. Removing quantization error should mostly
|
|
| 146 |
|
| 147 |
Removing quantization also costs **~9 GB of GPU memory** during training (19 GB vs 10 GB), which is a real constraint on a shared 40 GB card.
|
| 148 |
|
| 149 |
-
## Training data
|
| 150 |
|
| 151 |
Every run up to 017 trained on 6,288 images / 18,864 samples. The source table also carries **5,706 further images** that the dataset author left unassigned (`Notes == other`, RSICD only). They are fully populated, statistically indistinguishable from the assigned training rows, and have **zero image-name overlap with either the train or the validation split**, so they are safe to train on.
|
| 152 |
|
|
@@ -168,7 +195,7 @@ Two further points matter for anyone repeating this:
|
|
| 168 |
|
| 169 |
More data is therefore the live axis, and the only one still producing movement.
|
| 170 |
|
| 171 |
-
## Schedule length
|
| 172 |
|
| 173 |
**Aspaklarya-021** repeats 020 on the same enlarged corpus with **8 epochs instead of 4** (9,000 steps, checkpoints step-aligned with 020). It peaked at step 4,720 and then declined; the stop rule ended it at step 5,900 with 3,100 steps unspent.
|
| 174 |
|
|
@@ -186,10 +213,170 @@ Its best checkpoint, paired against 020 on the same 1000 images, is negative on
|
|
| 186 |
|
| 187 |
The failure mode is asymmetric and worth recording: at step 5,900 **captioning was intact (80.75) while VQA collapsed (76.52 → 74.45)**. Overtraining this recipe degrades VQA first, so a stop rule watching captioning alone would not catch it.
|
| 188 |
|
| 189 |
-
## Status
|
| 190 |
|
| 191 |
The **hyperparameter** search is closed. Rank, alpha, dropout, learning rate, schedule, weight decay, gradient clipping, vision-tower freezing, QA-per-image, caption prompt pool, batch geometry, effective batch size, learning rate at large batch and base-weight precision were all swept across 19 recipes under identical conditions. None displaced the reference recipe by more than the paired error bar.
|
| 192 |
|
| 193 |
Batch size and learning rate illustrate that ceiling. Effective batch 16 came in at **-0.59** overall, batch 64 at 2e-4 at **-0.56**, and batch 64 at 3e-4 at **-0.34** overall and **-0.87** in-domain; batch 64 at 4e-4 was stopped at epoch 4 while declining. In each case captioning held steady or improved while VQA fell.
|
| 194 |
|
| 195 |
Enlarging the training set did what none of those could, and training it longer did not extend the gain. That narrows the remaining question to **data composition**: the corpus added was RSICD-only, and the gain it produced is correspondingly RSICD-only while in-domain stays flat. Additional in-domain imagery is the targeted next step.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
pinned: false
|
| 8 |
---
|
| 9 |
|
| 10 |
+
# Aspaklarya - Qwen3-VL-8B for remote-sensing VQA + captioning
|
| 11 |
|
| 12 |
+
LoRA finetunes of **Qwen3-VL-8B-Instruct**, trained jointly on **visual
|
| 13 |
+
question answering** and **image captioning** over overhead imagery. All model
|
| 14 |
+
repos are private.
|
| 15 |
|
| 16 |
+
The programme has run in **two rounds against two different answer styles**.
|
| 17 |
+
They are not comparable to each other and are not scored on the same
|
| 18 |
+
benchmark.
|
| 19 |
+
|
| 20 |
+
| | Round 0XX | Round 1XX |
|
| 21 |
+
|---|---|---|
|
| 22 |
+
| runs | Aspaklarya-001 ... 021 (21, 20 evaluated) | Aspaklarya-101, 102 |
|
| 23 |
+
| VQA column | `VQA` | `VQA_1126` |
|
| 24 |
+
| reference answers | ~4 characters (`yes`, `3`, `river`) | ~300 characters, grounded reasoning |
|
| 25 |
+
| model output | one word | 270-295 characters |
|
| 26 |
+
| benchmark | 1,000-image union draw, 2,000 graded items | 982 questions over 491 in-domain images |
|
| 27 |
+
| best | Aspaklarya-020-step4500 | Aspaklarya-102-step1770 |
|
| 28 |
+
| what it answered | hyperparameters are saturated, data is the lever | verbose supervision is worth +8, extra data is not |
|
| 29 |
+
|
| 30 |
+
**Scores from the two rounds must never be ranked against each other.** The
|
| 31 |
+
two benchmarks reward opposite answer styles; see *Why the legacy score
|
| 32 |
+
drops* below.
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
## Round 0XX - terse answers (Aspaklarya-001 ... 021)
|
| 36 |
+
|
| 37 |
+
The original 21-experiment programme, trained on the one-word `VQA`
|
| 38 |
+
column and scored on the 1,000-image union draw. Everything below this
|
| 39 |
+
heading refers to that round only.
|
| 40 |
+
|
| 41 |
+
### Setup
|
| 42 |
|
| 43 |
| Item | Value |
|
| 44 |
|---|---|
|
|
|
|
| 53 |
|
| 54 |
Winners are merged into the bf16 base and re-validated. For runs 001-017 that merge also removes a train/serve mismatch, since those adapters were fitted on a 4-bit base but are served from bf16 weights; runs 018 onward have no such mismatch.
|
| 55 |
|
| 56 |
+
### Configurations
|
| 57 |
|
| 58 |
| Model | r / alpha | Dropout | LR | Sched | Vision | Per image | Items | Change |
|
| 59 |
|---|---|---|---|---|---|---|---|---|
|
|
|
|
| 81 |
|
| 82 |
Constant everywhere: effective batch 32 (except 014 at 16, 015-017 at 64), warmup 0.03, grad clip 0.3 (1.0 for 011/012), seed 3407.
|
| 83 |
|
| 84 |
+
### Results
|
| 85 |
|
| 86 |
Best checkpoint per run on a fixed 1000-image draw (2000 graded items), with bootstrap standard error. **Overall** = mean of caption and VQA. **In-dom.** = the target overhead-imagery subset (491 images); **RSICD** = the public RSICD remote-sensing benchmark subset (509 images). Sorted by in-domain overall; **bold marks the best value in each column**.
|
| 87 |
|
|
|
|
| 112 |
| Qwen3-VL-8B (base) | 68.37 ±0.89 | 58.94 ±1.50 | 63.66 ±0.92 | 65.68 ±0.66 | 56.01 ±1.01 | 60.84 ±0.62 | 63.07 ±0.94 | 53.18 ±1.46 | 58.13 ±0.91 |
|
| 113 |
|
| 114 |
Every finetune beats both references overall. The selected model, Aspaklarya-020, is **+17.9** over the base model and **+9.4** over the in-house reference on the full set.
|
| 115 |
+
### Learning rate at large batch
|
| 116 |
|
| 117 |
Aspaklarya-015 gave the best captioning in the table at effective batch 64, but it was trained at 2e-4 — the rate tuned for batch 32. Two follow-ups tested whether the batch-64 recipe was simply under-stepped. Scores below come from a separate 500-image draw used for live checkpoint selection, so they compare only with each other.
|
| 118 |
|
|
|
|
| 126 |
|
| 127 |
On the shared 1000-image set, neither batch-64 rate beat the reference: 2e-4 is **-0.56** overall and **-0.09** in-domain, 3e-4 is **-0.34** and **-0.87**. Effective batch 64 is therefore refuted at every learning rate tried, and the loss is consistently in VQA while captioning holds or improves. Together with the batch-16 result this closes the batch-size and learning-rate axes: **no hyperparameter lever remains untested**, and further gains have to come from the training data.
|
| 128 |
|
| 129 |
+
### Error bars
|
| 130 |
|
| 131 |
Bootstrap over images, 3000 resamples. Absolute standard error:
|
| 132 |
|
|
|
|
| 140 |
|
| 141 |
Applied exhaustively to the five leading checkpoints (020, 018, 019, 001, 011), the paired bootstrap separates **0 of 10 pairs overall and 0 of 10 in-domain** at 95% — in-domain every pair sits at p ≥ 0.67. The only significant pairs anywhere are three on the RSICD slice, all of them 020 against another model. **The ordering of the results table below the top line is not a measurement.**
|
| 142 |
|
| 143 |
+
### Caveat
|
| 144 |
|
| 145 |
The hyperparameter runs are statistically tied with each other: among runs 001-019, every confidence interval against the leader straddles zero. **VQA error is ~2.3x caption error**, so no finetune-vs-finetune VQA difference in any column is resolvable; only caption gaps, the gaps to the two references, and the data-scaling result of run 020 are real. Doubling the eval set from 500 to 1000 images did not separate the tied field, and it reshuffled its order.
|
| 146 |
|
| 147 |
+
### Findings
|
| 148 |
|
| 149 |
- **Hyperparameters are saturated; data is not.** LR, rank, alpha, dropout, weight decay, gradient clipping, batch geometry, effective batch size, LR scaling at large batch and base-weight precision were all swept without beating the noise floor. Adding 91% more training images cleared it on the first attempt.
|
| 150 |
- **The slices disagree — but data breaks the trade.** Ranking by in-domain score almost inverts the RSICD ranking, and every hyperparameter lever that moved one slice moved the other the opposite way. Extra data is the exception: it lifted RSICD by 1.57 while leaving in-domain unchanged.
|
|
|
|
| 156 |
- **Training in bf16 instead of 4-bit is a small, consistent positive** — the only change in the whole sweep that never loses on any slice — but it is still inside the error bar.
|
| 157 |
- **Data is the remaining lever**, not hyperparameters — and it is not exhausted: the run that used it had not converged when its schedule ended.
|
| 158 |
|
| 159 |
+
### Base-weight precision
|
| 160 |
|
| 161 |
Runs 001-017 all trained their adapters against **4-bit quantized** base weights, while evaluation and the final merge both use the **bf16** base. That is a train/serve mismatch: the adapter was fitted to compensate for quantization error that is absent at inference time.
|
| 162 |
|
|
|
|
| 173 |
|
| 174 |
Removing quantization also costs **~9 GB of GPU memory** during training (19 GB vs 10 GB), which is a real constraint on a shared 40 GB card.
|
| 175 |
|
| 176 |
+
### Training data
|
| 177 |
|
| 178 |
Every run up to 017 trained on 6,288 images / 18,864 samples. The source table also carries **5,706 further images** that the dataset author left unassigned (`Notes == other`, RSICD only). They are fully populated, statistically indistinguishable from the assigned training rows, and have **zero image-name overlap with either the train or the validation split**, so they are safe to train on.
|
| 179 |
|
|
|
|
| 195 |
|
| 196 |
More data is therefore the live axis, and the only one still producing movement.
|
| 197 |
|
| 198 |
+
### Schedule length
|
| 199 |
|
| 200 |
**Aspaklarya-021** repeats 020 on the same enlarged corpus with **8 epochs instead of 4** (9,000 steps, checkpoints step-aligned with 020). It peaked at step 4,720 and then declined; the stop rule ended it at step 5,900 with 3,100 steps unspent.
|
| 201 |
|
|
|
|
| 213 |
|
| 214 |
The failure mode is asymmetric and worth recording: at step 5,900 **captioning was intact (80.75) while VQA collapsed (76.52 → 74.45)**. Overtraining this recipe degrades VQA first, so a stop rule watching captioning alone would not catch it.
|
| 215 |
|
| 216 |
+
### Status
|
| 217 |
|
| 218 |
The **hyperparameter** search is closed. Rank, alpha, dropout, learning rate, schedule, weight decay, gradient clipping, vision-tower freezing, QA-per-image, caption prompt pool, batch geometry, effective batch size, learning rate at large batch and base-weight precision were all swept across 19 recipes under identical conditions. None displaced the reference recipe by more than the paired error bar.
|
| 219 |
|
| 220 |
Batch size and learning rate illustrate that ceiling. Effective batch 16 came in at **-0.59** overall, batch 64 at 2e-4 at **-0.56**, and batch 64 at 3e-4 at **-0.34** overall and **-0.87** in-domain; batch 64 at 4e-4 was stopped at epoch 4 while declining. In each case captioning held steady or improved while VQA fell.
|
| 221 |
|
| 222 |
Enlarging the training set did what none of those could, and training it longer did not extend the gain. That narrows the remaining question to **data composition**: the corpus added was RSICD-only, and the gain it produced is correspondingly RSICD-only while in-domain stays flat. Additional in-domain imagery is the targeted next step.
|
| 223 |
+
|
| 224 |
+
|
| 225 |
+
## Round 1XX - verbose grounded answers (Aspaklarya-101, 102)
|
| 226 |
+
|
| 227 |
+
### Why a second round
|
| 228 |
+
|
| 229 |
+
The 0XX round closed with hyperparameters saturated and data identified as
|
| 230 |
+
the only live lever. It also left a product problem: every 0XX model answers
|
| 231 |
+
in one word, because its supervision was one word. `yes` is a correct answer
|
| 232 |
+
to *"are there any anomalies in the scene?"* and a useless one.
|
| 233 |
+
|
| 234 |
+
The dataset author then supplied a new column, **`VQA_1126`**, replacing the
|
| 235 |
+
terse answers for the in-domain (DM) images with ~300-character grounded
|
| 236 |
+
answers that name objects, locations and context. The RSICD rows are
|
| 237 |
+
byte-identical to the old column; only the 5,148 DM rows changed, from a mean
|
| 238 |
+
of 5.9 characters to ~304.
|
| 239 |
+
|
| 240 |
+
Round 1XX trains on that column and is evaluated on a new benchmark built
|
| 241 |
+
from it: **982 questions over 491 in-domain images**, frozen, same draw for
|
| 242 |
+
every model.
|
| 243 |
+
|
| 244 |
+
### Configurations
|
| 245 |
+
|
| 246 |
+
Both runs use the Aspaklarya-020 recipe unchanged. The **only** variable
|
| 247 |
+
between them is corpus size.
|
| 248 |
+
|
| 249 |
+
| Model | r / alpha | Dropout | LR | Sched | Vision | Per image | Split | Items | Images |
|
| 250 |
+
|---|---|---|---|---|---|---|---|---|---|
|
| 251 |
+
| Aspaklarya-101 | 16 / 16 | 0.0 | 2e-4 | linear | trained | 1c + 2q | `train,other` | 35,979 | 11,994 |
|
| 252 |
+
| Aspaklarya-102 | 16 / 16 | 0.0 | 2e-4 | linear | trained | 1c + 2q | `train` | 18,862 | 6,288 |
|
| 253 |
+
|
| 254 |
+
Constant: bf16 base (no 4-bit), effective batch 32 (4 x 8), 4 epochs, warmup
|
| 255 |
+
0.03, weight decay 0.001, grad clip 0.3, max seq 2048, seed 3407. 101 ran
|
| 256 |
+
588 min / 4,500 steps; 102 ran ~320 min / 2,360 steps.
|
| 257 |
+
|
| 258 |
+
### Results
|
| 259 |
+
|
| 260 |
+
LLM-as-judge (`gemma-4-31b-it-imiai`), greedy, 160 new tokens, 982 items.
|
| 261 |
+
`new` is the VQA_1126 benchmark; `legacy` is the old 2,000-item union draw
|
| 262 |
+
carried over from round 0XX for continuity. **Bold marks the best value.**
|
| 263 |
+
|
| 264 |
+
| Model | new | 95% CI | correct (0-5) | concise (0-2) | chars | legacy combined |
|
| 265 |
+
|---|---|---|---|---|---|---|
|
| 266 |
+
| **Aspaklarya-102-step1770** | **74.30** | (71.9, 76.5) | 3.740 | 1.695 | 272 | 74.84 |
|
| 267 |
+
| Aspaklarya-101-step3540 | 74.15 | (71.9, 76.4) | **3.760** | 1.600 | 291 | 75.37 |
|
| 268 |
+
| Aspaklarya-101-step1180 | 74.14 | (71.9, 76.3) | 3.693 | 1.703 | 273 | 74.73 |
|
| 269 |
+
| Aspaklarya-101-step4500 | 74.02 | (71.9, 76.1) | 3.747 | 1.620 | 294 | **75.66** |
|
| 270 |
+
| Aspaklarya-102-step2360 | 73.68 | (71.5, 75.9) | 3.718 | 1.643 | 285 | 74.79 |
|
| 271 |
+
| Aspaklarya-102-step590 | 72.98 | (70.7, 75.2) | 3.675 | 1.663 | 282 | 73.70 |
|
| 272 |
+
| Aspaklarya-101-step2360 | 72.44 | (70.2, 74.6) | 3.655 | 1.634 | 282 | 75.26 |
|
| 273 |
+
| Aspaklarya-102-step1180 | 72.44 | (70.1, 74.7) | 3.637 | 1.675 | 277 | 74.25 |
|
| 274 |
+
| Aspaklarya-011 (0XX) | 66.40 | (64.1, 68.7) | 3.225 | **2.000** | 4.4 | - |
|
| 275 |
+
| Aspaklarya-020 (0XX) | 66.05 | (63.8, 68.2) | 3.200 | **2.000** | 4.1 | 78.83 |
|
| 276 |
+
| in-house reference | 64.78 | (62.5, 67.2) | 3.130 | **2.000** | 4.2 | - |
|
| 277 |
+
| Qwen3-VL-8B (base) | 60.24 | (58.2, 62.3) | 3.346 | 0.634 | 674 | - |
|
| 278 |
+
|
| 279 |
+
**Verbose supervision is worth about +8 points** over the best 0XX model on
|
| 280 |
+
the new benchmark, with non-overlapping confidence intervals. It is the
|
| 281 |
+
second change in the whole programme to clear the error bar.
|
| 282 |
+
|
| 283 |
+
The stock base model was **re-baselined at 160 new tokens** for this round.
|
| 284 |
+
At the 48-token budget used earlier it scored 53.84, which was a truncation
|
| 285 |
+
artefact; the honest figure is 60.24 and the honest lead over it is +14, not
|
| 286 |
+
+20.
|
| 287 |
+
|
| 288 |
+
### Data volume does not matter here
|
| 289 |
+
|
| 290 |
+
101 and 102 differ only in corpus size: 35,979 items over 11,994 images
|
| 291 |
+
versus 18,862 over 6,288. Best checkpoints land at **74.30 vs 74.15** -
|
| 292 |
+
statistically identical, with 102 nominally ahead on half the data and half
|
| 293 |
+
the GPU time.
|
| 294 |
+
|
| 295 |
+
This **does not contradict** the 0XX data-scaling result. The data added in
|
| 296 |
+
both cases is the `other` split, which is RSICD-only, and the round-1XX
|
| 297 |
+
benchmark is in-domain-only. Extra RSICD images lifted the RSICD slice in
|
| 298 |
+
round 0XX and are invisible here. For a DM-targeted product, the larger
|
| 299 |
+
corpus buys nothing.
|
| 300 |
+
|
| 301 |
+
### Four epochs are three too many
|
| 302 |
+
|
| 303 |
+
Scores by epoch on the new benchmark:
|
| 304 |
+
|
| 305 |
+
| run | ep 1 | ep 2 | ep 3 | ep 4 |
|
| 306 |
+
|---|---|---|---|---|
|
| 307 |
+
| Aspaklarya-101 | 74.14 | 72.44 | 74.15 | 74.02 |
|
| 308 |
+
| Aspaklarya-102 | 72.98 | 72.44 | 74.30 | 73.68 |
|
| 309 |
+
|
| 310 |
+
Both curves are flat from the first epoch, and every point sits inside every
|
| 311 |
+
other point's interval. The format is learned almost immediately and the
|
| 312 |
+
remaining epochs are noise. **One epoch would have produced the same model**
|
| 313 |
+
for a quarter of the cost - about 7 GPU-hours per run are being spent on
|
| 314 |
+
nothing.
|
| 315 |
+
|
| 316 |
+
### Why the legacy score drops
|
| 317 |
+
|
| 318 |
+
Every 1XX model scores ~75 on the legacy benchmark against Aspaklarya-020's
|
| 319 |
+
78.83. That is **not a capability regression**. Per-axis, at matched steps:
|
| 320 |
+
|
| 321 |
+
| benchmark | model | correct (0-5) | conciseness (0-2) | overall |
|
| 322 |
+
|---|---|---|---|---|
|
| 323 |
+
| legacy (4-char refs) | Aspaklarya-020 | 3.710 | **2.000** | 76.25 |
|
| 324 |
+
| legacy | Aspaklarya-101 | 3.700 | 1.405 | 70.28 |
|
| 325 |
+
| new (300-char refs) | Aspaklarya-020 | 3.200 | **2.000** | 66.05 |
|
| 326 |
+
| new | Aspaklarya-101 | **3.747** | 1.620 | 74.02 |
|
| 327 |
+
|
| 328 |
+
On the legacy set the two models are **tied on correctness** (3.700 vs
|
| 329 |
+
3.710) and the entire gap is the conciseness axis. The legacy rubric caps a
|
| 330 |
+
padded-but-correct answer at 89/100 by construction, so a 290-character model
|
| 331 |
+
cannot reach the top band however accurate it is. Captioning, which has long
|
| 332 |
+
references, is unaffected (81.03 vs 81.42).
|
| 333 |
+
|
| 334 |
+
On the new set the asymmetry does **not** reverse: Aspaklarya-020 still
|
| 335 |
+
scores a perfect 2.000 conciseness, so it wins the format axis on both
|
| 336 |
+
benchmarks and loses by 8 anyway - on the axis whose rubric explicitly states
|
| 337 |
+
that verbosity is irrelevant.
|
| 338 |
+
|
| 339 |
+
### Detail-prompt ablation
|
| 340 |
+
|
| 341 |
+
To rule out the alternative explanation - that the 0XX models had the content
|
| 342 |
+
and were merely withholding it - both terse models were re-run on the 982
|
| 343 |
+
questions with an explicit *"answer in detail"* instruction appended.
|
| 344 |
+
|
| 345 |
+
| model | prompt | chars | correct (0-5) | new overall |
|
| 346 |
+
|---|---|---|---|---|
|
| 347 |
+
| Aspaklarya-020 | normal | 4.1 | 3.200 | 66.05 |
|
| 348 |
+
| Aspaklarya-020 | detail | 112.3 | 3.249 | 65.31 |
|
| 349 |
+
| in-house reference | normal | 4.2 | 3.130 | 64.78 |
|
| 350 |
+
| in-house reference | detail | 6.9 | 3.026 | 62.97 |
|
| 351 |
+
|
| 352 |
+
Aspaklarya-020 complied - 4 to 112 characters - and its correctness did not
|
| 353 |
+
move. The verbosity was elicitable; the content was not there to elicit. The
|
| 354 |
+
in-house reference ignored the instruction almost entirely, which confirms
|
| 355 |
+
the prompt is not doing the work.
|
| 356 |
+
|
| 357 |
+
Qualitatively, on *"are there any anomalies in the scene?"*: prompted for
|
| 358 |
+
detail, Aspaklarya-020 produces 450 characters of generic scene description
|
| 359 |
+
that never names an anomaly, while Aspaklarya-101 identifies a specific
|
| 360 |
+
bright irregular object and says why it is out of place.
|
| 361 |
+
|
| 362 |
+
**The round-1XX lead is substantive and the legacy dip is cosmetic.**
|
| 363 |
+
|
| 364 |
+
### Caveat
|
| 365 |
+
|
| 366 |
+
The judge is **text-only**. It compares an answer against a reference and
|
| 367 |
+
never sees the image, so it measures agreement with the reference, not
|
| 368 |
+
verified truth. For a round whose whole premise is longer answers, this
|
| 369 |
+
matters more than it did in round 0XX: the judge can confirm that a model
|
| 370 |
+
supplies reference-matching content, but not that the content is true of the
|
| 371 |
+
pixels. Human spot-checks are the only way to close that gap.
|
| 372 |
+
|
| 373 |
+
### Status
|
| 374 |
+
|
| 375 |
+
- **Aspaklarya-102-step1770 is the round reference** - equal-best score, half
|
| 376 |
+
the corpus, half the training time.
|
| 377 |
+
- The legacy benchmark should be treated as **deprecated for this line**. It
|
| 378 |
+
encodes a terse answer style the product no longer wants, and no single
|
| 379 |
+
model can lead both benchmarks.
|
| 380 |
+
- Open levers: one-epoch training at a quarter of the cost, in-domain data
|
| 381 |
+
volume (as opposed to RSICD volume), and a LoRA soup over the eight tied
|
| 382 |
+
adapters.
|
index.html
CHANGED
|
@@ -37,9 +37,26 @@ a { color: #0969da; }
|
|
| 37 |
</head>
|
| 38 |
<body>
|
| 39 |
<main>
|
| 40 |
-
<h1>Aspaklarya
|
| 41 |
-
<p>LoRA finetunes of <strong>Qwen3-VL-8B-Instruct</strong>, trained jointly on <strong>visual question answering</strong> and <strong>image captioning</strong> over overhead imagery.
|
| 42 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 44 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Item</th>
|
| 45 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Value</th>
|
|
@@ -54,7 +71,7 @@ a { color: #0969da; }
|
|
| 54 |
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">References</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">stock Qwen3-VL-8B, plus an in-house finetuned model</td></tr>
|
| 55 |
</tbody></table>
|
| 56 |
<p>Winners are merged into the bf16 base and re-validated. For runs 001-017 that merge also removes a train/serve mismatch, since those adapters were fitted on a 4-bit base but are served from bf16 weights; runs 018 onward have no such mismatch.</p>
|
| 57 |
-
<
|
| 58 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 59 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Model</th>
|
| 60 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">r / alpha</th>
|
|
@@ -89,7 +106,7 @@ a { color: #0969da; }
|
|
| 89 |
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-021</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">16 / 16</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">0.0</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">2e-4</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">linear</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">trained</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1c + 2q</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>35,981</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">as 020, <strong>8 epochs</strong> not 4</td></tr>
|
| 90 |
</tbody></table>
|
| 91 |
<p>Constant everywhere: effective batch 32 (except 014 at 16, 015-017 at 64), warmup 0.03, grad clip 0.3 (1.0 for 011/012), seed 3407.</p>
|
| 92 |
-
<
|
| 93 |
<p>Best checkpoint per run on a fixed 1000-image draw (2000 graded items), with bootstrap standard error. <strong>Overall</strong> = mean of caption and VQA. <strong>In-dom.</strong> = the target overhead-imagery subset (491 images); <strong>RSICD</strong> = the public RSICD remote-sensing benchmark subset (509 images). Sorted by in-domain overall; <strong>bold marks the best value in each column</strong>.</p>
|
| 94 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 95 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Model</th>
|
|
@@ -128,7 +145,7 @@ a { color: #0969da; }
|
|
| 128 |
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Qwen3-VL-8B (base)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">68.37 ±0.89</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">58.94 ±1.50</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">63.66 ±0.92</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">65.68 ±0.66</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">56.01 ±1.01</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">60.84 ±0.62</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">63.07 ±0.94</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">53.18 ±1.46</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">58.13 ±0.91</td></tr>
|
| 129 |
</tbody></table>
|
| 130 |
<p>Every finetune beats both references overall. The selected model, Aspaklarya-020, is <strong>+17.9</strong> over the base model and <strong>+9.4</strong> over the in-house reference on the full set.</p>
|
| 131 |
-
<
|
| 132 |
<p>Aspaklarya-015 gave the best captioning in the table at effective batch 64, but it was trained at 2e-4 — the rate tuned for batch 32. Two follow-ups tested whether the batch-64 recipe was simply under-stepped. Scores below come from a separate 500-image draw used for live checkpoint selection, so they compare only with each other.</p>
|
| 133 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 134 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">LR at batch 64</th>
|
|
@@ -145,7 +162,7 @@ a { color: #0969da; }
|
|
| 145 |
</tbody></table>
|
| 146 |
<p>Linear LR scaling is <strong>wrong</strong> for LoRA here: 4e-4 peaked at epoch 1 and then lost ground at every later checkpoint, ending below where 2e-4 started. The adapter's effective step size does not follow the full-finetune scaling rule, so raising LR with batch size overshoots rather than compensating. The intermediate rate 3e-4 traced almost exactly the same curve as 2e-4 and peaked at the same epoch, one tenth of a point lower.</p>
|
| 147 |
<p>On the shared 1000-image set, neither batch-64 rate beat the reference: 2e-4 is <strong>-0.56</strong> overall and <strong>-0.09</strong> in-domain, 3e-4 is <strong>-0.34</strong> and <strong>-0.87</strong>. Effective batch 64 is therefore refuted at every learning rate tried, and the loss is consistently in VQA while captioning holds or improves. Together with the batch-16 result this closes the batch-size and learning-rate axes: <strong>no hyperparameter lever remains untested</strong>, and further gains have to come from the training data.</p>
|
| 148 |
-
<
|
| 149 |
<p>Bootstrap over images, 3000 resamples. Absolute standard error:</p>
|
| 150 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 151 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Slice</th>
|
|
@@ -159,9 +176,9 @@ a { color: #0969da; }
|
|
| 159 |
</tbody></table>
|
| 160 |
<p>Paired model-vs-model error is smaller because image difficulty cancels: <strong>0.42</strong> overall on the full set, <strong>0.56</strong> in-domain. Use the paired figure for any "A beats B" claim.</p>
|
| 161 |
<p>Applied exhaustively to the five leading checkpoints (020, 018, 019, 001, 011), the paired bootstrap separates <strong>0 of 10 pairs overall and 0 of 10 in-domain</strong> at 95% — in-domain every pair sits at p ≥ 0.67. The only significant pairs anywhere are three on the RSICD slice, all of them 020 against another model. <strong>The ordering of the results table below the top line is not a measurement.</strong></p>
|
| 162 |
-
<
|
| 163 |
<p>The hyperparameter runs are statistically tied with each other: among runs 001-019, every confidence interval against the leader straddles zero. <strong>VQA error is ~2.3x caption error</strong>, so no finetune-vs-finetune VQA difference in any column is resolvable; only caption gaps, the gaps to the two references, and the data-scaling result of run 020 are real. Doubling the eval set from 500 to 1000 images did not separate the tied field, and it reshuffled its order.</p>
|
| 164 |
-
<
|
| 165 |
<ul>
|
| 166 |
<li><strong>Hyperparameters are saturated; data is not.</strong> LR, rank, alpha, dropout, weight decay, gradient clipping, batch geometry, effective batch size, LR scaling at large batch and base-weight precision were all swept without beating the noise floor. Adding 91% more training images cleared it on the first attempt.</li>
|
| 167 |
<li><strong>The slices disagree — but data breaks the trade.</strong> Ranking by in-domain score almost inverts the RSICD ranking, and every hyperparameter lever that moved one slice moved the other the opposite way. Extra data is the exception: it lifted RSICD by 1.57 while leaving in-domain unchanged.</li>
|
|
@@ -173,7 +190,7 @@ a { color: #0969da; }
|
|
| 173 |
<li><strong>Training in bf16 instead of 4-bit is a small, consistent positive</strong> — the only change in the whole sweep that never loses on any slice — but it is still inside the error bar.</li>
|
| 174 |
<li><strong>Data is the remaining lever</strong>, not hyperparameters — and it is not exhausted: the run that used it had not converged when its schedule ended.</li>
|
| 175 |
</ul>
|
| 176 |
-
<
|
| 177 |
<p>Runs 001-017 all trained their adapters against <strong>4-bit quantized</strong> base weights, while evaluation and the final merge both use the <strong>bf16</strong> base. That is a train/serve mismatch: the adapter was fitted to compensate for quantization error that is absent at inference time.</p>
|
| 178 |
<p>Runs <strong>018</strong> and <strong>019</strong> repeat the two strongest recipes with the base loaded in bf16 and nothing else changed. Against the reference, paired on 1000 images:</p>
|
| 179 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
|
@@ -188,7 +205,7 @@ a { color: #0969da; }
|
|
| 188 |
<p>These are the first two runs in the sweep to post a positive overall delta, and <strong>018</strong> is the only run that is not worse than the reference on any slice. Both are still well inside the paired error bar (p = 0.34 that each is in fact worse), so neither is promoted.</p>
|
| 189 |
<p>The mechanism is not the expected one. Removing quantization error should mostly help the harder task, VQA; instead the gain is <strong>entirely in captioning</strong> (+0.48 and +0.35) while VQA is flat to slightly negative. That is the same caption-up / VQA-flat signature produced by every other lever in the sweep, which suggests precision is acting through the same saturated channel rather than unlocking anything new.</p>
|
| 190 |
<p>Removing quantization also costs <strong>~9 GB of GPU memory</strong> during training (19 GB vs 10 GB), which is a real constraint on a shared 40 GB card.</p>
|
| 191 |
-
<
|
| 192 |
<p>Every run up to 017 trained on 6,288 images / 18,864 samples. The source table also carries <strong>5,706 further images</strong> that the dataset author left unassigned (<code>Notes == other</code>, RSICD only). They are fully populated, statistically indistinguishable from the assigned training rows, and have <strong>zero image-name overlap with either the train or the validation split</strong>, so they are safe to train on.</p>
|
| 193 |
<p><strong>Aspaklarya-020</strong> adds them, taking training data to 11,994 images / 35,981 samples (<strong>+91%</strong>). Everything else is identical to 018. Paired against the previous selection on the same 1000 images:</p>
|
| 194 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
|
@@ -209,7 +226,7 @@ a { color: #0969da; }
|
|
| 209 |
<li><strong>The climb to the final checkpoint was schedule, not headroom.</strong> Overall score rose at all seven checkpoints including the last, which suggested an unexhausted budget. <strong>Aspaklarya-021 tested that directly and refuted it</strong> — see below.</li>
|
| 210 |
</ul>
|
| 211 |
<p>More data is therefore the live axis, and the only one still producing movement.</p>
|
| 212 |
-
<
|
| 213 |
<p><strong>Aspaklarya-021</strong> repeats 020 on the same enlarged corpus with <strong>8 epochs instead of 4</strong> (9,000 steps, checkpoints step-aligned with 020). It peaked at step 4,720 and then declined; the stop rule ended it at step 5,900 with 3,100 steps unspent.</p>
|
| 214 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 215 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">step</th>
|
|
@@ -227,10 +244,123 @@ a { color: #0969da; }
|
|
| 227 |
<p>Its best checkpoint, paired against 020 on the same 1000 images, is negative on every slice and significant on none: overall <strong>-0.53 ±0.43</strong>, in-domain <strong>-0.39 ±0.60</strong>, RSICD <strong>-0.66 ±0.64</strong>.</p>
|
| 228 |
<p><strong>Data volume helped; data duration did not.</strong> Four epochs is already the right length at this corpus size.</p>
|
| 229 |
<p>The failure mode is asymmetric and worth recording: at step 5,900 <strong>captioning was intact (80.75) while VQA collapsed (76.52 → 74.45)</strong>. Overtraining this recipe degrades VQA first, so a stop rule watching captioning alone would not catch it.</p>
|
| 230 |
-
<
|
| 231 |
<p>The <strong>hyperparameter</strong> search is closed. Rank, alpha, dropout, learning rate, schedule, weight decay, gradient clipping, vision-tower freezing, QA-per-image, caption prompt pool, batch geometry, effective batch size, learning rate at large batch and base-weight precision were all swept across 19 recipes under identical conditions. None displaced the reference recipe by more than the paired error bar.</p>
|
| 232 |
<p>Batch size and learning rate illustrate that ceiling. Effective batch 16 came in at <strong>-0.59</strong> overall, batch 64 at 2e-4 at <strong>-0.56</strong>, and batch 64 at 3e-4 at <strong>-0.34</strong> overall and <strong>-0.87</strong> in-domain; batch 64 at 4e-4 was stopped at epoch 4 while declining. In each case captioning held steady or improved while VQA fell.</p>
|
| 233 |
<p>Enlarging the training set did what none of those could, and training it longer did not extend the gain. That narrows the remaining question to <strong>data composition</strong>: the corpus added was RSICD-only, and the gain it produced is correspondingly RSICD-only while in-domain stays flat. Additional in-domain imagery is the targeted next step.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 234 |
</main>
|
| 235 |
</body>
|
| 236 |
</html>
|
|
|
|
| 37 |
</head>
|
| 38 |
<body>
|
| 39 |
<main>
|
| 40 |
+
<h1>Aspaklarya - Qwen3-VL-8B for remote-sensing VQA + captioning</h1>
|
| 41 |
+
<p>LoRA finetunes of <strong>Qwen3-VL-8B-Instruct</strong>, trained jointly on <strong>visual question answering</strong> and <strong>image captioning</strong> over overhead imagery. All model repos are private.</p>
|
| 42 |
+
<p>The programme has run in <strong>two rounds against two different answer styles</strong>. They are not comparable to each other and are not scored on the same benchmark.</p>
|
| 43 |
+
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 44 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap"></th>
|
| 45 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Round 0XX</th>
|
| 46 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Round 1XX</th>
|
| 47 |
+
</tr></thead><tbody>
|
| 48 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">runs</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-001 ... 021 (21, 20 evaluated)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101, 102</td></tr>
|
| 49 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">VQA column</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><code>VQA</code></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><code>VQA_1126</code></td></tr>
|
| 50 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">reference answers</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">~4 characters (<code>yes</code>, <code>3</code>, <code>river</code>)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">~300 characters, grounded reasoning</td></tr>
|
| 51 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">model output</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">one word</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">270-295 characters</td></tr>
|
| 52 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">benchmark</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1,000-image union draw, 2,000 graded items</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">982 questions over 491 in-domain images</td></tr>
|
| 53 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">best</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-020-step4500</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-102-step1770</td></tr>
|
| 54 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">what it answered</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">hyperparameters are saturated, data is the lever</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">verbose supervision is worth +8, extra data is not</td></tr>
|
| 55 |
+
</tbody></table>
|
| 56 |
+
<p><strong>Scores from the two rounds must never be ranked against each other.</strong> The two benchmarks reward opposite answer styles; see <em>Why the legacy score drops</em> below.</p>
|
| 57 |
+
<h2>Round 0XX - terse answers (Aspaklarya-001 ... 021)</h2>
|
| 58 |
+
<p>The original 21-experiment programme, trained on the one-word <code>VQA</code> column and scored on the 1,000-image union draw. Everything below this heading refers to that round only.</p>
|
| 59 |
+
<h3>Setup</h3>
|
| 60 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 61 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Item</th>
|
| 62 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Value</th>
|
|
|
|
| 71 |
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">References</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">stock Qwen3-VL-8B, plus an in-house finetuned model</td></tr>
|
| 72 |
</tbody></table>
|
| 73 |
<p>Winners are merged into the bf16 base and re-validated. For runs 001-017 that merge also removes a train/serve mismatch, since those adapters were fitted on a 4-bit base but are served from bf16 weights; runs 018 onward have no such mismatch.</p>
|
| 74 |
+
<h3>Configurations</h3>
|
| 75 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 76 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Model</th>
|
| 77 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">r / alpha</th>
|
|
|
|
| 106 |
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-021</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">16 / 16</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">0.0</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">2e-4</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">linear</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">trained</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1c + 2q</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>35,981</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">as 020, <strong>8 epochs</strong> not 4</td></tr>
|
| 107 |
</tbody></table>
|
| 108 |
<p>Constant everywhere: effective batch 32 (except 014 at 16, 015-017 at 64), warmup 0.03, grad clip 0.3 (1.0 for 011/012), seed 3407.</p>
|
| 109 |
+
<h3>Results</h3>
|
| 110 |
<p>Best checkpoint per run on a fixed 1000-image draw (2000 graded items), with bootstrap standard error. <strong>Overall</strong> = mean of caption and VQA. <strong>In-dom.</strong> = the target overhead-imagery subset (491 images); <strong>RSICD</strong> = the public RSICD remote-sensing benchmark subset (509 images). Sorted by in-domain overall; <strong>bold marks the best value in each column</strong>.</p>
|
| 111 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 112 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Model</th>
|
|
|
|
| 145 |
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Qwen3-VL-8B (base)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">68.37 ±0.89</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">58.94 ±1.50</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">63.66 ±0.92</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">65.68 ±0.66</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">56.01 ±1.01</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">60.84 ±0.62</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">63.07 ±0.94</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">53.18 ±1.46</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">58.13 ±0.91</td></tr>
|
| 146 |
</tbody></table>
|
| 147 |
<p>Every finetune beats both references overall. The selected model, Aspaklarya-020, is <strong>+17.9</strong> over the base model and <strong>+9.4</strong> over the in-house reference on the full set.</p>
|
| 148 |
+
<h3>Learning rate at large batch</h3>
|
| 149 |
<p>Aspaklarya-015 gave the best captioning in the table at effective batch 64, but it was trained at 2e-4 — the rate tuned for batch 32. Two follow-ups tested whether the batch-64 recipe was simply under-stepped. Scores below come from a separate 500-image draw used for live checkpoint selection, so they compare only with each other.</p>
|
| 150 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 151 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">LR at batch 64</th>
|
|
|
|
| 162 |
</tbody></table>
|
| 163 |
<p>Linear LR scaling is <strong>wrong</strong> for LoRA here: 4e-4 peaked at epoch 1 and then lost ground at every later checkpoint, ending below where 2e-4 started. The adapter's effective step size does not follow the full-finetune scaling rule, so raising LR with batch size overshoots rather than compensating. The intermediate rate 3e-4 traced almost exactly the same curve as 2e-4 and peaked at the same epoch, one tenth of a point lower.</p>
|
| 164 |
<p>On the shared 1000-image set, neither batch-64 rate beat the reference: 2e-4 is <strong>-0.56</strong> overall and <strong>-0.09</strong> in-domain, 3e-4 is <strong>-0.34</strong> and <strong>-0.87</strong>. Effective batch 64 is therefore refuted at every learning rate tried, and the loss is consistently in VQA while captioning holds or improves. Together with the batch-16 result this closes the batch-size and learning-rate axes: <strong>no hyperparameter lever remains untested</strong>, and further gains have to come from the training data.</p>
|
| 165 |
+
<h3>Error bars</h3>
|
| 166 |
<p>Bootstrap over images, 3000 resamples. Absolute standard error:</p>
|
| 167 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 168 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Slice</th>
|
|
|
|
| 176 |
</tbody></table>
|
| 177 |
<p>Paired model-vs-model error is smaller because image difficulty cancels: <strong>0.42</strong> overall on the full set, <strong>0.56</strong> in-domain. Use the paired figure for any "A beats B" claim.</p>
|
| 178 |
<p>Applied exhaustively to the five leading checkpoints (020, 018, 019, 001, 011), the paired bootstrap separates <strong>0 of 10 pairs overall and 0 of 10 in-domain</strong> at 95% — in-domain every pair sits at p ≥ 0.67. The only significant pairs anywhere are three on the RSICD slice, all of them 020 against another model. <strong>The ordering of the results table below the top line is not a measurement.</strong></p>
|
| 179 |
+
<h3>Caveat</h3>
|
| 180 |
<p>The hyperparameter runs are statistically tied with each other: among runs 001-019, every confidence interval against the leader straddles zero. <strong>VQA error is ~2.3x caption error</strong>, so no finetune-vs-finetune VQA difference in any column is resolvable; only caption gaps, the gaps to the two references, and the data-scaling result of run 020 are real. Doubling the eval set from 500 to 1000 images did not separate the tied field, and it reshuffled its order.</p>
|
| 181 |
+
<h3>Findings</h3>
|
| 182 |
<ul>
|
| 183 |
<li><strong>Hyperparameters are saturated; data is not.</strong> LR, rank, alpha, dropout, weight decay, gradient clipping, batch geometry, effective batch size, LR scaling at large batch and base-weight precision were all swept without beating the noise floor. Adding 91% more training images cleared it on the first attempt.</li>
|
| 184 |
<li><strong>The slices disagree — but data breaks the trade.</strong> Ranking by in-domain score almost inverts the RSICD ranking, and every hyperparameter lever that moved one slice moved the other the opposite way. Extra data is the exception: it lifted RSICD by 1.57 while leaving in-domain unchanged.</li>
|
|
|
|
| 190 |
<li><strong>Training in bf16 instead of 4-bit is a small, consistent positive</strong> — the only change in the whole sweep that never loses on any slice — but it is still inside the error bar.</li>
|
| 191 |
<li><strong>Data is the remaining lever</strong>, not hyperparameters — and it is not exhausted: the run that used it had not converged when its schedule ended.</li>
|
| 192 |
</ul>
|
| 193 |
+
<h3>Base-weight precision</h3>
|
| 194 |
<p>Runs 001-017 all trained their adapters against <strong>4-bit quantized</strong> base weights, while evaluation and the final merge both use the <strong>bf16</strong> base. That is a train/serve mismatch: the adapter was fitted to compensate for quantization error that is absent at inference time.</p>
|
| 195 |
<p>Runs <strong>018</strong> and <strong>019</strong> repeat the two strongest recipes with the base loaded in bf16 and nothing else changed. Against the reference, paired on 1000 images:</p>
|
| 196 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
|
|
|
| 205 |
<p>These are the first two runs in the sweep to post a positive overall delta, and <strong>018</strong> is the only run that is not worse than the reference on any slice. Both are still well inside the paired error bar (p = 0.34 that each is in fact worse), so neither is promoted.</p>
|
| 206 |
<p>The mechanism is not the expected one. Removing quantization error should mostly help the harder task, VQA; instead the gain is <strong>entirely in captioning</strong> (+0.48 and +0.35) while VQA is flat to slightly negative. That is the same caption-up / VQA-flat signature produced by every other lever in the sweep, which suggests precision is acting through the same saturated channel rather than unlocking anything new.</p>
|
| 207 |
<p>Removing quantization also costs <strong>~9 GB of GPU memory</strong> during training (19 GB vs 10 GB), which is a real constraint on a shared 40 GB card.</p>
|
| 208 |
+
<h3>Training data</h3>
|
| 209 |
<p>Every run up to 017 trained on 6,288 images / 18,864 samples. The source table also carries <strong>5,706 further images</strong> that the dataset author left unassigned (<code>Notes == other</code>, RSICD only). They are fully populated, statistically indistinguishable from the assigned training rows, and have <strong>zero image-name overlap with either the train or the validation split</strong>, so they are safe to train on.</p>
|
| 210 |
<p><strong>Aspaklarya-020</strong> adds them, taking training data to 11,994 images / 35,981 samples (<strong>+91%</strong>). Everything else is identical to 018. Paired against the previous selection on the same 1000 images:</p>
|
| 211 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
|
|
|
| 226 |
<li><strong>The climb to the final checkpoint was schedule, not headroom.</strong> Overall score rose at all seven checkpoints including the last, which suggested an unexhausted budget. <strong>Aspaklarya-021 tested that directly and refuted it</strong> — see below.</li>
|
| 227 |
</ul>
|
| 228 |
<p>More data is therefore the live axis, and the only one still producing movement.</p>
|
| 229 |
+
<h3>Schedule length</h3>
|
| 230 |
<p><strong>Aspaklarya-021</strong> repeats 020 on the same enlarged corpus with <strong>8 epochs instead of 4</strong> (9,000 steps, checkpoints step-aligned with 020). It peaked at step 4,720 and then declined; the stop rule ended it at step 5,900 with 3,100 steps unspent.</p>
|
| 231 |
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 232 |
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">step</th>
|
|
|
|
| 244 |
<p>Its best checkpoint, paired against 020 on the same 1000 images, is negative on every slice and significant on none: overall <strong>-0.53 ±0.43</strong>, in-domain <strong>-0.39 ±0.60</strong>, RSICD <strong>-0.66 ±0.64</strong>.</p>
|
| 245 |
<p><strong>Data volume helped; data duration did not.</strong> Four epochs is already the right length at this corpus size.</p>
|
| 246 |
<p>The failure mode is asymmetric and worth recording: at step 5,900 <strong>captioning was intact (80.75) while VQA collapsed (76.52 → 74.45)</strong>. Overtraining this recipe degrades VQA first, so a stop rule watching captioning alone would not catch it.</p>
|
| 247 |
+
<h3>Status</h3>
|
| 248 |
<p>The <strong>hyperparameter</strong> search is closed. Rank, alpha, dropout, learning rate, schedule, weight decay, gradient clipping, vision-tower freezing, QA-per-image, caption prompt pool, batch geometry, effective batch size, learning rate at large batch and base-weight precision were all swept across 19 recipes under identical conditions. None displaced the reference recipe by more than the paired error bar.</p>
|
| 249 |
<p>Batch size and learning rate illustrate that ceiling. Effective batch 16 came in at <strong>-0.59</strong> overall, batch 64 at 2e-4 at <strong>-0.56</strong>, and batch 64 at 3e-4 at <strong>-0.34</strong> overall and <strong>-0.87</strong> in-domain; batch 64 at 4e-4 was stopped at epoch 4 while declining. In each case captioning held steady or improved while VQA fell.</p>
|
| 250 |
<p>Enlarging the training set did what none of those could, and training it longer did not extend the gain. That narrows the remaining question to <strong>data composition</strong>: the corpus added was RSICD-only, and the gain it produced is correspondingly RSICD-only while in-domain stays flat. Additional in-domain imagery is the targeted next step.</p>
|
| 251 |
+
<h2>Round 1XX - verbose grounded answers (Aspaklarya-101, 102)</h2>
|
| 252 |
+
<h3>Why a second round</h3>
|
| 253 |
+
<p>The 0XX round closed with hyperparameters saturated and data identified as the only live lever. It also left a product problem: every 0XX model answers in one word, because its supervision was one word. <code>yes</code> is a correct answer to <em>"are there any anomalies in the scene?"</em> and a useless one.</p>
|
| 254 |
+
<p>The dataset author then supplied a new column, <strong><code>VQA_1126</code></strong>, replacing the terse answers for the in-domain (DM) images with ~300-character grounded answers that name objects, locations and context. The RSICD rows are byte-identical to the old column; only the 5,148 DM rows changed, from a mean of 5.9 characters to ~304.</p>
|
| 255 |
+
<p>Round 1XX trains on that column and is evaluated on a new benchmark built from it: <strong>982 questions over 491 in-domain images</strong>, frozen, same draw for every model.</p>
|
| 256 |
+
<h3>Configurations</h3>
|
| 257 |
+
<p>Both runs use the Aspaklarya-020 recipe unchanged. The <strong>only</strong> variable between them is corpus size.</p>
|
| 258 |
+
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 259 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Model</th>
|
| 260 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">r / alpha</th>
|
| 261 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Dropout</th>
|
| 262 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">LR</th>
|
| 263 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Sched</th>
|
| 264 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Vision</th>
|
| 265 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Per image</th>
|
| 266 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Split</th>
|
| 267 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Items</th>
|
| 268 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Images</th>
|
| 269 |
+
</tr></thead><tbody>
|
| 270 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">16 / 16</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">0.0</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">2e-4</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">linear</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">trained</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1c + 2q</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><code>train,other</code></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">35,979</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">11,994</td></tr>
|
| 271 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-102</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">16 / 16</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">0.0</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">2e-4</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">linear</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">trained</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1c + 2q</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><code>train</code></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">18,862</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">6,288</td></tr>
|
| 272 |
+
</tbody></table>
|
| 273 |
+
<p>Constant: bf16 base (no 4-bit), effective batch 32 (4 x 8), 4 epochs, warmup 0.03, weight decay 0.001, grad clip 0.3, max seq 2048, seed 3407. 101 ran 588 min / 4,500 steps; 102 ran ~320 min / 2,360 steps.</p>
|
| 274 |
+
<h3>Results</h3>
|
| 275 |
+
<p>LLM-as-judge (<code>gemma-4-31b-it-imiai</code>), greedy, 160 new tokens, 982 items. <code>new</code> is the VQA_1126 benchmark; <code>legacy</code> is the old 2,000-item union draw carried over from round 0XX for continuity. <strong>Bold marks the best value.</strong></p>
|
| 276 |
+
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 277 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">Model</th>
|
| 278 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">new</th>
|
| 279 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">95% CI</th>
|
| 280 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">correct (0-5)</th>
|
| 281 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">concise (0-2)</th>
|
| 282 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">chars</th>
|
| 283 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">legacy combined</th>
|
| 284 |
+
</tr></thead><tbody>
|
| 285 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>Aspaklarya-102-step1770</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>74.30</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(71.9, 76.5)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.740</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.695</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">272</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.84</td></tr>
|
| 286 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101-step3540</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.15</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(71.9, 76.4)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>3.760</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.600</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">291</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">75.37</td></tr>
|
| 287 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101-step1180</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.14</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(71.9, 76.3)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.693</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.703</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">273</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.73</td></tr>
|
| 288 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101-step4500</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.02</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(71.9, 76.1)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.747</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.620</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">294</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>75.66</strong></td></tr>
|
| 289 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-102-step2360</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">73.68</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(71.5, 75.9)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.718</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.643</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">285</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.79</td></tr>
|
| 290 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-102-step590</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">72.98</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(70.7, 75.2)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.675</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.663</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">282</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">73.70</td></tr>
|
| 291 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101-step2360</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">72.44</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(70.2, 74.6)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.655</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.634</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">282</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">75.26</td></tr>
|
| 292 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-102-step1180</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">72.44</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(70.1, 74.7)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.637</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.675</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">277</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.25</td></tr>
|
| 293 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-011 (0XX)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">66.40</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(64.1, 68.7)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.225</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>2.000</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">4.4</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">-</td></tr>
|
| 294 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-020 (0XX)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">66.05</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(63.8, 68.2)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.200</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>2.000</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">4.1</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">78.83</td></tr>
|
| 295 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">in-house reference</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">64.78</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(62.5, 67.2)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.130</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>2.000</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">4.2</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">-</td></tr>
|
| 296 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Qwen3-VL-8B (base)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">60.24</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">(58.2, 62.3)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.346</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">0.634</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">674</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">-</td></tr>
|
| 297 |
+
</tbody></table>
|
| 298 |
+
<p><strong>Verbose supervision is worth about +8 points</strong> over the best 0XX model on the new benchmark, with non-overlapping confidence intervals. It is the second change in the whole programme to clear the error bar.</p>
|
| 299 |
+
<p>The stock base model was <strong>re-baselined at 160 new tokens</strong> for this round. At the 48-token budget used earlier it scored 53.84, which was a truncation artefact; the honest figure is 60.24 and the honest lead over it is +14, not +20.</p>
|
| 300 |
+
<h3>Data volume does not matter here</h3>
|
| 301 |
+
<p>101 and 102 differ only in corpus size: 35,979 items over 11,994 images versus 18,862 over 6,288. Best checkpoints land at <strong>74.30 vs 74.15</strong> - statistically identical, with 102 nominally ahead on half the data and half the GPU time.</p>
|
| 302 |
+
<p>This <strong>does not contradict</strong> the 0XX data-scaling result. The data added in both cases is the <code>other</code> split, which is RSICD-only, and the round-1XX benchmark is in-domain-only. Extra RSICD images lifted the RSICD slice in round 0XX and are invisible here. For a DM-targeted product, the larger corpus buys nothing.</p>
|
| 303 |
+
<h3>Four epochs are three too many</h3>
|
| 304 |
+
<p>Scores by epoch on the new benchmark:</p>
|
| 305 |
+
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 306 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">run</th>
|
| 307 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">ep 1</th>
|
| 308 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">ep 2</th>
|
| 309 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">ep 3</th>
|
| 310 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">ep 4</th>
|
| 311 |
+
</tr></thead><tbody>
|
| 312 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.14</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">72.44</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.15</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.02</td></tr>
|
| 313 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-102</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">72.98</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">72.44</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.30</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">73.68</td></tr>
|
| 314 |
+
</tbody></table>
|
| 315 |
+
<p>Both curves are flat from the first epoch, and every point sits inside every other point's interval. The format is learned almost immediately and the remaining epochs are noise. <strong>One epoch would have produced the same model</strong> for a quarter of the cost - about 7 GPU-hours per run are being spent on nothing.</p>
|
| 316 |
+
<h3>Why the legacy score drops</h3>
|
| 317 |
+
<p>Every 1XX model scores ~75 on the legacy benchmark against Aspaklarya-020's 78.83. That is <strong>not a capability regression</strong>. Per-axis, at matched steps:</p>
|
| 318 |
+
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 319 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">benchmark</th>
|
| 320 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">model</th>
|
| 321 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">correct (0-5)</th>
|
| 322 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">conciseness (0-2)</th>
|
| 323 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">overall</th>
|
| 324 |
+
</tr></thead><tbody>
|
| 325 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">legacy (4-char refs)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-020</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.710</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>2.000</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">76.25</td></tr>
|
| 326 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">legacy</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.700</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.405</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">70.28</td></tr>
|
| 327 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">new (300-char refs)</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-020</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.200</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>2.000</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">66.05</td></tr>
|
| 328 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">new</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-101</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap"><strong>3.747</strong></td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">1.620</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">74.02</td></tr>
|
| 329 |
+
</tbody></table>
|
| 330 |
+
<p>On the legacy set the two models are <strong>tied on correctness</strong> (3.700 vs 3.710) and the entire gap is the conciseness axis. The legacy rubric caps a padded-but-correct answer at 89/100 by construction, so a 290-character model cannot reach the top band however accurate it is. Captioning, which has long references, is unaffected (81.03 vs 81.42).</p>
|
| 331 |
+
<p>On the new set the asymmetry does <strong>not</strong> reverse: Aspaklarya-020 still scores a perfect 2.000 conciseness, so it wins the format axis on both benchmarks and loses by 8 anyway - on the axis whose rubric explicitly states that verbosity is irrelevant.</p>
|
| 332 |
+
<h3>Detail-prompt ablation</h3>
|
| 333 |
+
<p>To rule out the alternative explanation - that the 0XX models had the content and were merely withholding it - both terse models were re-run on the 982 questions with an explicit <em>"answer in detail"</em> instruction appended.</p>
|
| 334 |
+
<table style="border-collapse:collapse;margin:1rem 0;font-size:.85rem;border:1px solid #d0d7de"><thead><tr>
|
| 335 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">model</th>
|
| 336 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">prompt</th>
|
| 337 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">chars</th>
|
| 338 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">correct (0-5)</th>
|
| 339 |
+
<th style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;background:#f6f8fa;font-weight:600;white-space:nowrap">new overall</th>
|
| 340 |
+
</tr></thead><tbody>
|
| 341 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-020</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">normal</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">4.1</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.200</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">66.05</td></tr>
|
| 342 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">Aspaklarya-020</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">detail</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">112.3</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.249</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">65.31</td></tr>
|
| 343 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">in-house reference</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">normal</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">4.2</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.130</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">64.78</td></tr>
|
| 344 |
+
<tr><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">in-house reference</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">detail</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">6.9</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">3.026</td><td style="border:1px solid #d0d7de;padding:5px 10px;text-align:left;white-space:nowrap">62.97</td></tr>
|
| 345 |
+
</tbody></table>
|
| 346 |
+
<p>Aspaklarya-020 complied - 4 to 112 characters - and its correctness did not move. The verbosity was elicitable; the content was not there to elicit. The in-house reference ignored the instruction almost entirely, which confirms the prompt is not doing the work.</p>
|
| 347 |
+
<p>Qualitatively, on <em>"are there any anomalies in the scene?"</em>: prompted for detail, Aspaklarya-020 produces 450 characters of generic scene description that never names an anomaly, while Aspaklarya-101 identifies a specific bright irregular object and says why it is out of place.</p>
|
| 348 |
+
<p><strong>The round-1XX lead is substantive and the legacy dip is cosmetic.</strong></p>
|
| 349 |
+
<h3>Caveat</h3>
|
| 350 |
+
<p>The judge is <strong>text-only</strong>. It compares an answer against a reference and never sees the image, so it measures agreement with the reference, not verified truth. For a round whose whole premise is longer answers, this matters more than it did in round 0XX: the judge can confirm that a model supplies reference-matching content, but not that the content is true of the pixels. Human spot-checks are the only way to close that gap.</p>
|
| 351 |
+
<h3>Status</h3>
|
| 352 |
+
<ul>
|
| 353 |
+
<li><strong>Aspaklarya-102-step1770 is the round reference</strong> - equal-best score, half</li>
|
| 354 |
+
</ul>
|
| 355 |
+
<p> the corpus, half the training time.</p>
|
| 356 |
+
<ul>
|
| 357 |
+
<li>The legacy benchmark should be treated as <strong>deprecated for this line</strong>. It</li>
|
| 358 |
+
</ul>
|
| 359 |
+
<p> encodes a terse answer style the product no longer wants, and no single model can lead both benchmarks.</p>
|
| 360 |
+
<ul>
|
| 361 |
+
<li>Open levers: one-epoch training at a quarter of the cost, in-domain data</li>
|
| 362 |
+
</ul>
|
| 363 |
+
<p> volume (as opposed to RSICD volume), and a LoRA soup over the eight tied adapters.</p>
|
| 364 |
</main>
|
| 365 |
</body>
|
| 366 |
</html>
|