Sahil-nith's picture
Upload 47 files
0127c21 verified
|
Raw History Blame Contribute Delete
4.28 kB
# Remote-sensing adaptation pipeline (Phase 5)
Satisfies the PS-mandatory requirement: *"At least one visual or
vision-language component must be fine-tuned or otherwise adapted using
BigEarthNet.txt or the any open source training data."*
## Pipeline
```
BigEarthNet.txt manifest ──▢ prepare_bigearthnet.py ──▢ *_vqa_train.jsonl
β”‚
β–Ό
train_lora_vqa.py
β”‚
β–Ό
backend/models/checkpoints/vqa_lora_bigearthnet/
β”‚
β–Ό
backend/models/vqa.py loads it
automatically on next restart
```
## Status: scripts are real and runnable β€” no adapter is checked in
`backend/models/checkpoints/vqa_lora_bigearthnet/` is empty in this
repo. Until someone actually runs `train_lora_vqa.py`, the backend
correctly reports `adapted: false` in every VQA response and uses base
`Salesforce/blip-vqa-base` weights. **This is the honest state, not a
bug** β€” do not check in a fabricated/untrained adapter directory just to
flip that flag.
## Before running this for real
1. **Get the actual PS-linked dataset** (arxiv.org/abs/2603.29630) and
inspect its real manifest format. `prepare_bigearthnet.py`'s expected
CSV/JSONL columns (`caption` or `labels`/`label_1..n`) are a
reasonable guess based on the PS description, not a verified schema
β€” update the parsing in that file to match what you actually
download before trusting its output.
2. Decide compute: LoRA fine-tuning of BLIP-VQA-base is realistic on a
single consumer GPU in well under a day for a few thousand examples;
CPU-only will be much slower β€” cap `--limit` accordingly in
`prepare_bigearthnet.py`.
3. Install training-only deps (`pip install peft accelerate datasets`)
β€” these are deliberately NOT in `backend/requirements.txt` since the
running API doesn't need `datasets`/`accelerate`, only `peft` at
inference time to load the resulting adapter.
## Phase 12 β€” what was actually verified this session (and what wasn't)
Attempted, in the sandbox used to build Phase 12: install `torch`/`transformers`/`peft`
and actually run this pipeline end-to-end. Result, stated plainly:
- **`prepare_bigearthnet.py` was smoke-tested for real** against a small hand-built,
clearly-synthetic manifest (5 rows, random-noise PNGs, invented captions/labels β€”
nothing from the actual BigEarthNet.txt dataset). It ran cleanly and produced a
correctly-shaped `vqa_train.jsonl`. This proves the CSV/JSONL parsing logic and
the templated-question generation work as written β€” it does **not** prove
`prepare_bigearthnet.py`'s column-name assumptions (`caption` / `labels` /
`label_1..n`) match the real PS-linked dataset's actual schema, because that
dataset was never fetched (see below). Verify that for real before trusting this
script's output on the real data.
- **`train_lora_vqa.py` was NOT run**, even on the synthetic data above, and could
not be in this environment: (1) the dataset host (arxiv.org and whatever hosts
the actual BigEarthNet.txt files) is not reachable from the sandbox this Phase
was built in, and (2) `huggingface.co` β€” needed to download the base
`Salesforce/blip-vqa-base` weights β€” is also not reachable from it. Both are
infrastructure constraints of that particular build environment, not a flaw in
the script. `backend/models/checkpoints/vqa_lora_bigearthnet/` remains empty;
`adapted: false` remains the honest, correct state.
**Bottom line, unchanged from every prior phase:** running this for real β€” with the
actual PS-linked dataset and a machine that can reach huggingface.co β€” is still an
execution task for whoever has that access, not something that can be faked here.
Do not check in a checkpoint that wasn't actually produced by a real training run.