CoolFace
Modelpublic

HumanAIConvention/simsat-lfm25vl-450m-v1

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes3downloads
Model Card

SimSat LFM2.5-VL-450M v1 — LoRA adapter (superseded by v3)

NOTE — superseded by [`HumanAIConvention/simsat-lfm25vl-450m-v3`](https://huggingface.co/HumanAIConvention/simsat-lfm25vl-450m-v3). v1 stays published for reference; v3 is canonical. v3 holdout numbers (+18.8 pp action / -47 pp MAE over v1 Run 14) are documented on the v3 model card.

LoRA fine-tune of `LiquidAI/LFM2.5-VL-450M` trained on operator-reviewed Sentinel-2 tiles for the AI in Space Hackathon (DPhi Space x Liquid AI) — Liquid Track.

Holdout eval (matched-pair, 32 samples, 8 per action class)

MetricBaseTuned (this adapter)Tuned + `repetition_penalty=1.05` (Run A)
exact_action_agreement0.2500.6560.750
score_mae (lower is better)0.3120.1020.080
parse_rate1.0000.9061.000

The 9.4 pp parse-rate dip on tuned-without-reppenalty came from a numeric-field repetition loop on a single scene. Run A confirmed `repetitionpenalty=1.05, norepeatngram_size=20` at inference time recovers parse rate to 1.000 and lifts action agreement +9.4 pp without any retraining. v3 replicates this decode hardening AND adds 56 more operator-reviewed train rows.

Recipe (preserved for v1 reproducibility)

  • —TRL SFTTrainer + PEFT LoRA, transformers (main).
  • —109 train / 32 holdout (8 per class) / 4 legacy eval.
  • —LoRA r=16, alpha=32, dropout=0.05; assistant-only loss masking.
  • —AdamW lr=2e-4, 5 epochs, effective batch 8, bfloat16, T4 GPU.
  • —4,456,448 trainable / 453,175,296 total params (0.98%).

Public training kernel: benhaslam/simsat-lfm2-5-vl-v1-training on Kaggle.

Inference (recommended: use v3 instead)

python
# v3 adapter, applied to the same base model:
from transformers import AutoModelForImageTextToText, AutoProcessor
from peft import PeftModel

base = "LiquidAI/LFM2.5-VL-450M"
model = AutoModelForImageTextToText.from_pretrained(base, torch_dtype="bfloat16")
processor = AutoProcessor.from_pretrained(base)
model = PeftModel.from_pretrained(model, "HumanAIConvention/simsat-lfm25vl-450m-v3")

out = model.generate(
    **inputs, max_new_tokens=256, do_sample=False,
    repetition_penalty=1.05, no_repeat_ngram_size=20,
)

License

Apache-2.0, matching the LFM2.5-VL-450M base model. Sentinel-2 imagery (c) European Union, Copernicus Sentinel-2 data 2024-2026, redistributable under the Sentinel data legal notice.