Aspaklarya — Qwen3-VL-8B for remote-sensing VQA + captioning

LoRA finetunes of Qwen3-VL-8B-Instruct, trained jointly on visual question answering and image captioning over overhead imagery. 17 experiments, 17 evaluated recipes. All model repos are private.

Setup

Item Value
BaseQwen3-VL-8B-Instruct
MethodLoRA (Unsloth), 4-bit base, bf16 compute
Targetsall linear layers, vision + language towers
Data~6.3k images, 1 caption + 2 QA each (~18.9k samples)
Caption promptssampled from a 30-prompt pool, so the model learns the task not one phrasing
Evalfixed 1000-image draw = 2000 graded items, same seed for every model
ScoringLLM-as-judge, 0-100 per item
Referencesstock Qwen3-VL-8B, plus an in-house finetuned model

Winners are merged into the bf16 base and re-validated: adapters are evaluated on a 4-bit base, merged weights are not.

Configurations

Model r / alpha Dropout LR Sched Vision Per image Items Change
Aspaklarya-00116 / 160.02e-4lineartrained1c + 2q18,864reference recipe
Aspaklarya-00232 / 640.051e-4cosinetrained1c + 2q18,864higher rank, lower LR
Aspaklarya-00316 / 160.02e-4lineartrained2c + 4q37,7282x resampled data
Aspaklarya-00416 / 160.02e-4linearfrozen1c + 2q18,864language-only
Aspaklarya-00516 / 160.02e-4cosinetrained1c + 6q43,864VQA-heavy
Aspaklarya-00616 / 160.02e-4lineartrained1c + 2q18,864batch 4 x accum 8
Aspaklarya-0078 / 80.02e-4lineartrained1c + 2q18,864low rank
Aspaklarya-00816 / 160.01e-4lineartrained1c + 4q31,440more QA, lower LR
Aspaklarya-00932 / 320.02e-4lineartrained1c + 2q18,864high rank
Aspaklarya-01016 / 160.02e-4lineartrained1c + 2q18,864wider prompt pool
Aspaklarya-01116 / 160.052e-4lineartrained1c + 2q18,864dropout, wd 0.05, clip 1.0
Aspaklarya-01216 / 160.02e-4lineartrained1c + 2q18,864as 011, no dropout
Aspaklarya-01316 / 160.01e-4lineartrained1c + 2q18,864low LR, long schedule
Aspaklarya-01416 / 160.02e-4lineartrained1c + 2q18,864effective batch 16
Aspaklarya-01516 / 160.02e-4lineartrained1c + 2q18,864effective batch 64
Aspaklarya-01616 / 160.04e-4lineartrained1c + 2q18,864batch 64 + linear LR scaling
Aspaklarya-01716 / 160.03e-4lineartrained1c + 2q18,864batch 64 + sqrt LR scaling (running)

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.

Results

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.

Model In-dom. cap In-dom. vqa In-dom. overall All cap All vqa All overall RSICD cap RSICD vqa RSICD overall
Aspaklarya-01181.85 ±0.6683.51 ±1.4882.68 ±0.8479.92 ±0.4975.78 ±1.1377.85 ±0.6478.06 ±0.6768.33 ±1.6473.20 ±0.92
Aspaklarya-00181.84 ±0.6683.23 ±1.4482.54 ±0.8179.97 ±0.4875.94 ±1.1277.95 ±0.6378.17 ±0.6968.89 ±1.6673.53 ±0.93
Aspaklarya-01582.14 ±0.6482.76 ±1.4682.45 ±0.8280.07 ±0.4974.73 ±1.1377.40 ±0.6378.07 ±0.7266.98 ±1.6572.52 ±0.92
Aspaklarya-00681.40 ±0.7182.95 ±1.5082.18 ±0.9079.81 ±0.5075.79 ±1.1277.80 ±0.6578.26 ±0.6868.88 ±1.6373.57 ±0.91
Aspaklarya-00581.37 ±0.6782.37 ±1.5081.87 ±0.8579.55 ±0.4975.74 ±1.1177.64 ±0.6277.79 ±0.7169.35 ±1.6573.57 ±0.93
Aspaklarya-01281.68 ±0.6682.05 ±1.5381.86 ±0.8679.73 ±0.4875.02 ±1.1377.37 ±0.6477.85 ±0.7168.23 ±1.6373.04 ±0.90
Aspaklarya-01481.51 ±0.6781.93 ±1.4881.72 ±0.8379.95 ±0.4974.77 ±1.1377.36 ±0.6378.45 ±0.7167.87 ±1.6673.16 ±0.92
Aspaklarya-00381.23 ±0.7182.18 ±1.4781.71 ±0.8579.55 ±0.4975.52 ±1.1277.53 ±0.6377.92 ±0.6669.10 ±1.6673.51 ±0.91
Aspaklarya-001 (ep5)80.60 ±0.7282.25 ±1.4981.42 ±0.8479.30 ±0.5076.17 ±1.1277.73 ±0.6378.05 ±0.6970.31 ±1.6474.18 ±0.91
Aspaklarya-01380.58 ±0.6982.20 ±1.4881.39 ±0.8479.11 ±0.4975.35 ±1.1077.23 ±0.6177.70 ±0.6968.74 ±1.6073.22 ±0.90
Aspaklarya-00980.01 ±0.7182.34 ±1.4681.18 ±0.8478.53 ±0.5275.85 ±1.1177.19 ±0.6377.09 ±0.7369.59 ±1.6373.34 ±0.91
Aspaklarya-00880.62 ±0.7481.42 ±1.5181.02 ±0.8679.82 ±0.5075.40 ±1.1277.61 ±0.6379.05 ±0.6569.60 ±1.6274.33 ±0.89
Aspaklarya-00781.13 ±0.7180.82 ±1.5180.97 ±0.8679.33 ±0.5175.33 ±1.1277.33 ±0.6477.60 ±0.7070.03 ±1.6273.81 ±0.90
Aspaklarya-00480.31 ±0.7281.47 ±1.4880.89 ±0.8478.76 ±0.5175.33 ±1.1177.04 ±0.6477.26 ±0.7469.40 ±1.6173.33 ±0.92
Aspaklarya-00280.70 ±0.7280.63 ±1.5180.67 ±0.8579.36 ±0.5074.33 ±1.1376.85 ±0.6478.07 ±0.7168.25 ±1.6373.16 ±0.92
Aspaklarya-01080.50 ±0.7480.66 ±1.5880.58 ±0.9078.88 ±0.5274.28 ±1.1376.58 ±0.6477.32 ±0.7268.12 ±1.6572.72 ±0.91
in-house reference71.88 ±1.2383.62 ±1.4977.75 ±1.0265.18 ±0.8373.34 ±1.1369.26 ±0.7458.72 ±1.0963.44 ±1.6261.08 ±1.02
Qwen3-VL-8B (base)68.37 ±0.8958.94 ±1.5063.66 ±0.9265.68 ±0.6656.01 ±1.0160.84 ±0.6263.07 ±0.9453.18 ±1.4658.13 ±0.91

Every finetune beats both references overall: +17.1 over the base model and +8.7 over the in-house reference on the full set.

Learning rate at large batch

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.

LR at batch 64 ep 1 ep 2 ep 3 ep 4 ep 5 Outcome
2e-4 (015)76.9277.0377.2577.6477.92peak at epoch 5
4e-4 (016)77.6776.9376.4276.89—stopped at epoch 4, declining
3e-4 (017)running

Linear LR scaling is wrong 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.

Error bars

Bootstrap over images, 3000 resamples. Absolute standard error:

Slice Caption VQA Overall
All (1000 img)0.481.120.63
In-domain (491)0.661.460.82
RSICD (509)0.691.640.91

Paired model-vs-model error is smaller because image difficulty cancels: 0.42 overall on the full set, 0.56 in-domain. Use the paired figure for any "A beats B" claim.

Caveat

The top eight runs are statistically tied: 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 and the gaps to the two references are real. Doubling the eval set from 500 to 1000 images did not separate the field, and it reshuffled the order.

Findings