M3LLM is a specialized medical vision-language model built on InternVL3-8B, finetuned on comprehensive PMC medical imaging datasets to achieve state-of-the-art performance on multi-image medical visual question answering tasks.

Our model demonstrates strong performance on the PMC-MI-Benchmark, a comprehensive evaluation suite for multi-image medical visual question answering:

M3LLM achieves competitive performance across various public medical VQA benchmarks (MMMU-Med and OmnimedVQA):

Performance evaluation on MIMIC-CXR :

M3LLM's training data is generated through a comprehensive 5-stage synthetic data pipeline that processes medical images and captions from PubMed Central (PMC) literature.
Raw PMC Data β Stage 1-3: Preprocessing β Stage 4: Task-Specific QA β Stage 5: Context Refinement β Training Data
| Task Category | Samples | Description |
|---|---|---|
| Pure Text QA | 40,382 | Text-only medical QA |
| Bounding Box VQA | 40,293 | Spatial relationship questions |
| Single Sub-image | 40,287 | Single sub-image reasoning |
| Multiple Sub-images | 39,462 | Multi-image reasoning |
| Sub-image Options | 40,295 | Multiple-choice questions |
| Compound Images | 37,029 | Compound figure understanding |
| Total | ~238K | Six diverse task types |
Stage 1-3: Data Preprocessing
1_inline_text_summarization.py: Summarizes medical observations from inline text2_medical_knowledge_complementation.py: Extracts keywords and generates medical knowledge3_visual_perception_enhancement.py: Creates visual perception descriptions using multimodal modelsStage 4: Task-Specific QA Generation
Stage 5: Context Refinement
π Detailed pipeline documentation: See Instruction_data_generation/ for implementation details and usage instructions.
M3LLM provides two training approaches to accommodate different computational resources:
# Navigate to training directory
cd InternVL
# LoRA training (recommended for limited resources)
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-lora.sh
# Full model training (better performance)
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-fullmodel.sh
π Detailed training documentation: See InternVL/ for configuration details, hyperparameters, and troubleshooting.
git clone https://github.com/franciszchen/M3LLM.git
cd M3LLM
We should have two conda environments.
β±οΈ Typical install time: The installation process typically takes between 5 to 15 minutes on a "normal" desktop computer with a standard broadband internet connection. This includes the time required to clone the repository, create a Conda environment, and install the necessary dependencies listed in requirements.txt.
Please refer to the setup guidance in the benchmark/ folder for evaluation-specific environment configuration.
Follow the installation instructions from the official InternVL repository:
Please download our training data and benchmark data here: Data
cd InternVL
# For LoRA training
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-lora.sh
# For full model training
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-fullmodel.sh
β±οΈ Typical Training time: It takes around 30 hours for one epoch, full parameter training (InternVL-3 8B) using one H200 150G GPU.
Please check readme for detailed implementation instructions.
Normally, it takes around 1 hour to finish evaluations (The baseline models we selected are 7B or 8B) on 6 sub-tasks of our PMC-MI-Bench dataset using A100 80G GPU.
M3LLM/
βββ Instruction_data_generation/ # Synthetic data generation pipeline
β βββ 1_inline_text_summarization.py
β βββ 2_medical_knowledge_complementation.py
β βββ 3_visual_perception_enhancement.py
β βββ 4_*.py # Stage 4: Task-specific QA generation
β βββ 5_*.py # Stage 5: Context refinement
β
βββ InternVL/ # Training codebase
β βββ internvl_chat/
β β βββ shell/
β β β βββ data/
β β β β βββ PMC-data.json # Dataset configuration
β β β βββ internvl3.0/
β β β βββ 2nd_finetune/ # Training scripts
β β βββ internvl/
β β β βββ model/ # Model implementations
β β β βββ train/ # Training utilities
β β βββ eval/ # Evaluation scripts
β βββ README.md # Detailed training documentation
β
βββ benchmark/ # Evaluation benchmarks
β βββ MIMIC-unified-inference/ # MIMIC evaluation framework
β
βββ README.md # This file
We release the following model checkpoints:
| Model | Training Method | Download Link |
|---|---|---|
| M3LLM-LoRA | LoRA (rank 16) | [Coming Soon] |
| M3LLM-Full | Full Finetuning | [Coming Soon] |
from transformers import AutoModel, AutoTokenizer
# Load model
model = AutoModel.from_pretrained("path/to/m3llm-checkpoint")
tokenizer = AutoTokenizer.from_pretrained("path/to/m3llm-checkpoint")
# Example inference
# [Add inference example]
We welcome contributions! Please feel free to:
This project is released under the MIT License.
The InternVL codebase is subject to its original license terms. Please refer to the InternVL repository for details.
If you find M3LLM useful for your research, please cite:
@article{chen2025compound,
title={From Compound Figures to Composite Understanding: Developing a Multi-Modal LLM from Biomedical Literature with Medical Multiple-Image Benchmarking and Validation},
author={Chen, Zhen and Fu, Yihang and Madera, Gabriel and Giuffre, Mauro and Applebaum, Serina and Kim, Hyunjae and Xu, Hua and Chen, Qingyu},
journal={arXiv preprint arXiv:2511.22232},
year={2025}
}
Please also cite the base model:
@article{internvl3,
title={InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks},
author={Chen, Zhe and others},
journal={arXiv preprint},
year={2024}
}
If you are using MIMIC-cxr dataset, please cite:
@inproceedings{mimic_xray,
title={Learning to exploit temporal structure for biomedical vision-language processing},
author={Bannur, Shruthi and Hyland, Stephanie and Liu, Qianchu and Perez-Garcia, Fernando and Ilse, Maximilian and Castro, Daniel C and Boecking, Benedikt and Sharma, Harshita and Bouzid, Kenza and Thieme, Anja and others},
booktitle={CVPR},
pages={15016--15027},
year={2023}
}
16 commits
2 commits
Python
59.4%
Jupyter Notebook
34.2%
Shell
5.8%
M3LLM is a specialized medical vision-language model built on InternVL3-8B, finetuned on comprehensive PMC medical imaging datasets to achieve state-of-the-art performance on multi-image medical visual question answering tasks.

Our model demonstrates strong performance on the PMC-MI-Benchmark, a comprehensive evaluation suite for multi-image medical visual question answering:

M3LLM achieves competitive performance across various public medical VQA benchmarks (MMMU-Med and OmnimedVQA):

Performance evaluation on MIMIC-CXR :

M3LLM's training data is generated through a comprehensive 5-stage synthetic data pipeline that processes medical images and captions from PubMed Central (PMC) literature.
Raw PMC Data β Stage 1-3: Preprocessing β Stage 4: Task-Specific QA β Stage 5: Context Refinement β Training Data
| Task Category | Samples | Description |
|---|---|---|
| Pure Text QA | 40,382 | Text-only medical QA |
| Bounding Box VQA | 40,293 | Spatial relationship questions |
| Single Sub-image | 40,287 | Single sub-image reasoning |
| Multiple Sub-images | 39,462 | Multi-image reasoning |
| Sub-image Options | 40,295 | Multiple-choice questions |
| Compound Images | 37,029 | Compound figure understanding |
| Total | ~238K | Six diverse task types |
Stage 1-3: Data Preprocessing
1_inline_text_summarization.py: Summarizes medical observations from inline text2_medical_knowledge_complementation.py: Extracts keywords and generates medical knowledge3_visual_perception_enhancement.py: Creates visual perception descriptions using multimodal modelsStage 4: Task-Specific QA Generation
Stage 5: Context Refinement
π Detailed pipeline documentation: See Instruction_data_generation/ for implementation details and usage instructions.
M3LLM provides two training approaches to accommodate different computational resources:
# Navigate to training directory
cd InternVL
# LoRA training (recommended for limited resources)
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-lora.sh
# Full model training (better performance)
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-fullmodel.sh
π Detailed training documentation: See InternVL/ for configuration details, hyperparameters, and troubleshooting.
git clone https://github.com/franciszchen/M3LLM.git
cd M3LLM
We should have two conda environments.
β±οΈ Typical install time: The installation process typically takes between 5 to 15 minutes on a "normal" desktop computer with a standard broadband internet connection. This includes the time required to clone the repository, create a Conda environment, and install the necessary dependencies listed in requirements.txt.
Please refer to the setup guidance in the benchmark/ folder for evaluation-specific environment configuration.
Follow the installation instructions from the official InternVL repository:
Please download our training data and benchmark data here: Data
cd InternVL
# For LoRA training
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-lora.sh
# For full model training
bash internvl_chat/shell/internvl3.0/2nd_finetune/M3LLM-fulldata-fullmodel.sh
β±οΈ Typical Training time: It takes around 30 hours for one epoch, full parameter training (InternVL-3 8B) using one H200 150G GPU.
Please check readme for detailed implementation instructions.
Normally, it takes around 1 hour to finish evaluations (The baseline models we selected are 7B or 8B) on 6 sub-tasks of our PMC-MI-Bench dataset using A100 80G GPU.
M3LLM/
βββ Instruction_data_generation/ # Synthetic data generation pipeline
β βββ 1_inline_text_summarization.py
β βββ 2_medical_knowledge_complementation.py
β βββ 3_visual_perception_enhancement.py
β βββ 4_*.py # Stage 4: Task-specific QA generation
β βββ 5_*.py # Stage 5: Context refinement
β
βββ InternVL/ # Training codebase
β βββ internvl_chat/
β β βββ shell/
β β β βββ data/
β β β β βββ PMC-data.json # Dataset configuration
β β β βββ internvl3.0/
β β β βββ 2nd_finetune/ # Training scripts
β β βββ internvl/
β β β βββ model/ # Model implementations
β β β βββ train/ # Training utilities
β β βββ eval/ # Evaluation scripts
β βββ README.md # Detailed training documentation
β
βββ benchmark/ # Evaluation benchmarks
β βββ MIMIC-unified-inference/ # MIMIC evaluation framework
β
βββ README.md # This file
We release the following model checkpoints:
| Model | Training Method | Download Link |
|---|---|---|
| M3LLM-LoRA | LoRA (rank 16) | [Coming Soon] |
| M3LLM-Full | Full Finetuning | [Coming Soon] |
from transformers import AutoModel, AutoTokenizer
# Load model
model = AutoModel.from_pretrained("path/to/m3llm-checkpoint")
tokenizer = AutoTokenizer.from_pretrained("path/to/m3llm-checkpoint")
# Example inference
# [Add inference example]
We welcome contributions! Please feel free to:
This project is released under the MIT License.
The InternVL codebase is subject to its original license terms. Please refer to the InternVL repository for details.
If you find M3LLM useful for your research, please cite:
@article{chen2025compound,
title={From Compound Figures to Composite Understanding: Developing a Multi-Modal LLM from Biomedical Literature with Medical Multiple-Image Benchmarking and Validation},
author={Chen, Zhen and Fu, Yihang and Madera, Gabriel and Giuffre, Mauro and Applebaum, Serina and Kim, Hyunjae and Xu, Hua and Chen, Qingyu},
journal={arXiv preprint arXiv:2511.22232},
year={2025}
}
Please also cite the base model:
@article{internvl3,
title={InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks},
author={Chen, Zhe and others},
journal={arXiv preprint},
year={2024}
}
If you are using MIMIC-cxr dataset, please cite:
@inproceedings{mimic_xray,
title={Learning to exploit temporal structure for biomedical vision-language processing},
author={Bannur, Shruthi and Hyland, Stephanie and Liu, Qianchu and Perez-Garcia, Fernando and Ilse, Maximilian and Castro, Daniel C and Boecking, Benedikt and Sharma, Harshita and Bouzid, Kenza and Thieme, Anja and others},
booktitle={CVPR},
pages={15016--15027},
year={2023}
}
16 commits
2 commits
Python
59.4%
Jupyter Notebook
34.2%
Shell
5.8%