AstroBridge Captioner
n-modality (image + spectra) astronomy captioner. LoRA adapter + fusion stack trained on top of
a frozen Qwen/Qwen3.5-9B. The base model itself is NOT included here โ load it fresh from
Qwen/Qwen3.5-9B and apply this adapter on top.
How to load
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3.5-9B", dtype=torch.bfloat16, trust_remote_code=True
)
llm = PeftModel.from_pretrained(base, "twiggly/astrobridge-model-v4_qwen")
tokenizer = AutoTokenizer.from_pretrained("twiggly/astrobridge-model-v4_qwen")
# middle.pt (fusion stack: projectors/modality_identity/qformer/adapter) needs the captioner
# package's FusionStack class to reload โ see captioner/model/captioner.py and
# captioner/train/stage1.py's run_stage1 for how it's constructed and wired to the LLM.
Training info
- config_hash: e31aa529acd7db40
- quantization: None
- git_sha: e7b57fc9e983ca8afe504799f050969855db7b17
- tier_histogram: {"single": 4120, "joint": 1318}
Eval (groundedness gate)
{
"per_modality": {
"image": {
"shuffle_test": {
"modality": "image",
"n": 77,
"mean_edit_distance": 369.90909090909093,
"null_result": false
},
"ablation_test": {
"modality": "image",
"n": 129,
"fraction_caption_changed": 1.0,
"null_result": false
}
},
"spectra": {
"shuffle_test": {
"modality": "spectra",
"n": 14,
"mean_edit_distance": 231.92857142857142,
"null_result": false
},
"ablation_test": {
"modality": "spectra",
"n": 47,
"fraction_caption_changed": 1.0,
"null_result": false
}
},
"lightcurve": {
"shuffle_test": {
"modality": "lightcurve",
"n": 4,
"mean_edit_distance": 225.75,
"null_result": false
},
"ablation_test": {
"modality": "lightcurve",
"n": 24,
"fraction_caption_changed": 1.0,
"null_result": false
}
}
}
}
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐ Ask for provider support