ThinkMorph-SSL-Instruct

ThinkMorph-SSL-Instruct is a unified multimodal model that reasons with interleaved text and generated images. It is trained from BAGEL-7B-MoT with the two-stage PRIMER recipe:

  1. Stage 1 (pretext). Training on Pretext-270K, which has 270,896 instruction-free text-image-text traces built from source images. This repository starts from the Stage 1 EMA weights at step 5,500, published separately as ThinkMorph-SSL-Base.
  2. Stage 2 (instruction). Training on Instruct-181K, which has 181,291 question-driven interleaved traces.

This repository holds the Stage 2 EMA weights at step 5,500. They are the weights the paper reports.

Files

File Bytes SHA256
ema.safetensors 29,351,872,574 6497ea617dea4193d06135b97f00bc10bbdee1733789e489cae0f3c57141123f
ae.safetensors 167,664,678 e49d48aa3474df744ad718d11736d87f38d52bf7ca57dee6b8417978bfbfc9ad
config.json 5,175 4bc85a4daaef591f0b539216d09a1ee2294a1f3a3bda9f95885c13ed191ae701
llm_config.json 2,136 cb884fc65d117b8e5ec3856090224cd739c511e01c5c1de488cede5a54c8e994
vit_config.json 1,830 78664013bf6778ad4ecaebe78c153ef7fd46f7638fa78c0df1cb17d5bd7df0ab
generation_config.json 243 3a8f9087e486054c8a4a08dae2e5a3ba62e23da212b5b8c08bc42cb983c3459f
vocab.json 3,383,407 87a257b04b17642a0688c98cd1df89c398bda4fee532d6f88b38a659ecb4ac8d
merges.txt 1,671,853 8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5
added_tokens.json 630 a0582f48ed8e795fda5b7b8eb2d98b492842dc229e78b66793bf545ce7ec52c8
special_tokens_map.json 613 76862e765266b85aa9459767e33cbaf13970f327a0e88d1c65846c2ddd3a1ecd
tokenizer_config.json 4,864 b7af0d4c9b917db05150006b466cfa2e8424b3915ff5fe2023a6f512a5e16dd5
  • ema.safetensors holds the EMA weights in bfloat16: 1,451 tensors, 14,675,840,307 parameters. The training model also had a 26th SigLIP layer. BAGEL inference never uses that layer (vit_select_layer = -2), so it is not stored, as in the original BAGEL release.
  • ae.safetensors is the VAE used in training (about 160 MB). It is the one from lmms-lab/BAGEL-7B-MoT-ver.LE. Do not replace it with the 320 MB VAE of the public BAGEL release.
  • Use the tokenizer files shipped here. They include the added special tokens used in training.

Loading

The directory has the same layout as the original BAGEL-7B-MoT release, and the weights file has the same name, ema.safetensors. To load:

  • Official BAGEL inference code (https://github.com/ByteDance-Seed/Bagel): point model_path at a local copy of this repository. The loader reads llm_config.json, vit_config.json, ae.safetensors and ema.safetensors.
  • PRIMER code release: Bagel.from_pretrained(model_path, config, training_config=...) detects ema.safetensors and loads it directly. The evaluation wrapper wrapper: Bagel also reads ema.safetensors when there is no model.safetensors.
hf download ThinkMorph/ThinkMorph-SSL-Instruct --local-dir ThinkMorph-SSL-Instruct

Training

Item Stage 1 (pretext) Stage 2 (instruction)
Run 0503_stage0_270k_32gpu 0505_s0s2_173k_48gpus
Initialization BAGEL-7B-MoT (lmms-lab/BAGEL-7B-MoT-ver.LE layout) Stage 1 EMA, step 5,500
Data Pretext-270K: 270,896 train rows; the val files are not used Instruct-181K: all 21 subsets, train and val files
GPUs 32 (4 nodes × 8) 48 (6 nodes × 8)
Learning rate 2.83e-5 (warmup 1,000) 2e-5 (warmup 1,000)
Configured horizon 10,000 steps 12,000 steps
Released save EMA, step 5,500 EMA, step 5,500
EMA decay 0.9998 from step 1,000, fp32 shadow decay 0.9998 from step 1,000, fp32 shadow
Packing dynamic, up to 16,384 tokens dynamic, up to 20,480 tokens

The losses are text cross-entropy and image flow matching, both with weight 1. The VAE is frozen, and the SigLIP encoder is trained. Stage 2 keeps only traces that have a first reasoning image and an answer (require_reasoning_image_0_and_answer), and it trains on the val files too (include_val_in_training).

Evaluation

The scores will be filled in after the paper's main table is final.

Benchmark group ThinkMorph-SSL-Instruct
Visible evidence TBD
Spatial structure TBD
Scene reconstruction TBD

Intended use and limitations

This is a research model. It answers visual questions by writing text and generating intermediate images.

  • The intermediate images can leave out or change evidence that the question depends on.
  • Default inference generates images, which costs a lot of compute.
  • The earlier ThinkMorph/ThinkMorph-7B is a different model and cannot stand in for this one.

License

The weights are released under Apache-2.0, following BAGEL-7B-MoT. The datasets carry their own source terms; see their cards.

Citation

@misc{thinkmorphssl2026,
  title  = {TBD},
  author = {TBD},
  year   = {2026}
}
Downloads last month
1
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ThinkMorph/ThinkMorph-SSL-Instruct

Base model

Qwen/Qwen2.5-7B
Finetuned
(75)
this model

Datasets used to train ThinkMorph/ThinkMorph-SSL-Instruct