AstroBridge Captioner
n-modality (image + spectra) astronomy captioner. LoRA adapter + fusion stack trained on top of
a frozen google/gemma-4-12B-it. The base model itself is NOT included here — load it fresh from
google/gemma-4-12B-it and apply this adapter on top.
How to load
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base = AutoModelForCausalLM.from_pretrained(
"google/gemma-4-12B-it", dtype=torch.bfloat16, trust_remote_code=True
)
llm = PeftModel.from_pretrained(base, "UniverseTBD/astrobridge-model-v3_gemma4")
tokenizer = AutoTokenizer.from_pretrained("UniverseTBD/astrobridge-model-v3_gemma4")
# 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: 6edb5050158286e7
- quantization: None
- git_sha: 9073424365f11596bc8ba3407e243a5e42fd0387
- tier_histogram: {"single": 5432}
Eval (groundedness gate)
{
"per_modality": {
"image": {
"shuffle_test": {
"modality": "image",
"n": 26,
"mean_edit_distance": 495.53846153846155,
"null_result": false
},
"ablation_test": {
"modality": "image",
"n": 73,
"fraction_caption_changed": 1.0,
"null_result": false
}
},
"spectra": {
"shuffle_test": {
"modality": "spectra",
"n": 46,
"mean_edit_distance": 273.9347826086956,
"null_result": false
},
"ablation_test": {
"modality": "spectra",
"n": 105,
"fraction_caption_changed": 1.0,
"null_result": false
}
},
"lightcurve": {
"shuffle_test": {
"modality": "lightcurve",
"n": 3,
"mean_edit_distance": 271.3333333333333,
"null_result": false
},
"ablation_test": {
"modality": "lightcurve",
"n": 22,
"fraction_caption_changed": 1.0,
"null_result": false
}
}
}
}
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support