Load
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
from peft import PeftModel
base_id = "Qwen/Qwen2.5-VL-3B-Instruct"
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
base_id, torch_dtype="auto", device_map="auto"
)
model = PeftModel.from_pretrained(model, "hackiit-neeraj/qwen25vl-ahc-lora-ckpt400")
processor = AutoProcessor.from_pretrained(base_id)
Trained against unsloth/qwen2.5-vl-3b-instruct-unsloth-bnb-4bit. The
official Qwen/Qwen2.5-VL-3B-Instruct weights are the same architecture
and load this adapter.
Training
Table | |
|---|
| Method | Unsloth QLoRA, 4-bit base, PEFT LoRA |
| Rank / alpha / dropout | r=16, alpha=16, dropout=0 |
| Targets | language-model attention + MLP projections |
| Hardware | Kaggle Tesla T4 |
| This checkpoint | warm-start from checkpoint-500, seed 1234, lr 3e-5, 400 steps, 0 non-finite losses |
| Eval | AHC public test, adaptive multi-frame, min_frames=2 → macro-F1 0.437 |
Do not load optimizer.pt / trainer state — those were stripped on purpose.
Intended use
Offline / gated Stage-3 labelling of drone frames. A still frame cannot
see motion, so this adapter should describe what is visible (and name
an appearance class). Tracker / motion rules should own stop / stall /
wrong-way decisions.
License
Adapter is Apache-2.0, same as the Qwen2.5-VL base. You need the base
model weights separately.