Instructions to use MIRA-MMDeepResearch/MIRA-SFT-35B-A3B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MIRA-MMDeepResearch/MIRA-SFT-35B-A3B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="MIRA-MMDeepResearch/MIRA-SFT-35B-A3B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("MIRA-MMDeepResearch/MIRA-SFT-35B-A3B") model = AutoModelForMultimodalLM.from_pretrained("MIRA-MMDeepResearch/MIRA-SFT-35B-A3B", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use MIRA-MMDeepResearch/MIRA-SFT-35B-A3B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "MIRA-MMDeepResearch/MIRA-SFT-35B-A3B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MIRA-MMDeepResearch/MIRA-SFT-35B-A3B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/MIRA-MMDeepResearch/MIRA-SFT-35B-A3B
- SGLang
How to use MIRA-MMDeepResearch/MIRA-SFT-35B-A3B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "MIRA-MMDeepResearch/MIRA-SFT-35B-A3B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MIRA-MMDeepResearch/MIRA-SFT-35B-A3B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "MIRA-MMDeepResearch/MIRA-SFT-35B-A3B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MIRA-MMDeepResearch/MIRA-SFT-35B-A3B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use MIRA-MMDeepResearch/MIRA-SFT-35B-A3B with Docker Model Runner:
docker model run hf.co/MIRA-MMDeepResearch/MIRA-SFT-35B-A3B
MIRA-SFT-35B-A3B (MIRA-SFT)
MIRA is a multimodal deep research agent from the paper MIRA: A Multimodal Illustrated Deep Research Agent for Controllable Reports. This checkpoint is the agent model: it searches the web, opens pages and images, runs Python, and writes either a short answer or an illustrated report whose length, image count and source count follow the request. It is meant to run inside the MIRA agent runtime and harness (https://github.com/MIRA-MMDeepResearch/MIRA), which provide the tools, the report contract and the submission gate.
| Base model | Qwen/Qwen3.6-35B-A3B |
| Architecture | Qwen3_5MoeForConditionalGeneration: 35B total / 3B active parameters, 256 experts (8 active), 40 layers, vision encoder |
| Context | 262,144 tokens |
| Training | Full-parameter SFT in three stages on MIRA-Data (harness reports, multimodal search trajectories, failure-case repair), learning rate 5e-6, global batch 64 |
| Precision | bfloat16, 70.2 GB in 2 safetensors shards |
Use
Requires transformers>=5.2. Serve with vLLM and call it through the MIRA runtime:
vllm serve MIRA-MMDeepResearch/MIRA-SFT-35B-A3B --served-model-name MIRA \
--max-model-len 262144 --enable-auto-tool-choice --tool-call-parser qwen3_coder \
--allowed-local-media-path / --port 8000
python -m mira.harness.run --endpoint http://localhost:8000 --prompt-profile student \
--mode detail --question "..." --output runs/example
Sampling. temperature 1.0, top-p 0.95, top-k 20, presence penalty 1.5 (the values in
generation_config.json, except presence penalty, which the runtime sets).
Chat template. The bundled chat_template.jinja is the base model's template. Tools are described in the
system turn and called with the XML format <tool_call><function=NAME><parameter=KEY>VALUE</parameter></function></tool_call>.
Reasoning is on: keep enable_thinking true and pass preserve_thinking: true through
chat_template_kwargs so earlier reasoning stays in context across tool calls. The system prompt the model was
trained with is SYS_QWEN36_SFT_S2_MM in mira/agent/prompts/prompt.py; other system prompts reduce accuracy.
Evaluation
Accuracy (%) under the MIRA harness with the same judge for all agents. MMDeepResearch is the official report score.
| Model | Params | MMSearch | MMSearch+ | BrowseComp-VL | SimpleVQA | LiveVQA | FVQA | VDR-Bench | MMDeepResearch |
|---|---|---|---|---|---|---|---|---|---|
| OpenSearch-VL | 30B (3B) | 68.70 | 28.94 | 41.10 | 74.90 | 67.40 | 73.20 | 33.50 | 23.21 |
| Vision-DeepResearch | 30B (3B) | 69.60 | 28.50 | 53.70 | 66.33 | 77.60 | 74.20 | 37.80 | 12.78 |
| WeAgent-MMSearch | 30B (3B) | 77.78 | 37.82 | – | 77.73 | 81.05 | 79.33 | 35.68 | – |
| Qwen3.6-35B-A3B + MIRA-Harness | 35B (3B) | 73.10 | 33.44 | 56.64 | 74.33 | 78.33 | 70.00 | 19.00 | 41.90 |
| MIRA-SFT-35B-A3B | 35B (3B) | 80.70 | 38.91 | 58.40 | 79.00 | 82.00 | 79.33 | 29.80 | 42.61 |
"–" means not reported. Scores for other agents are from the MIRA paper.
Limitations
The report gate checks structure (length, images, sources, citations that resolve), not whether each claim is true. Web content changes over time, so scores drift. The model was distilled from teacher trajectories and inherits their errors.
Citation
@article{mira2027,
title = {MIRA: A Multimodal Illustrated Deep Research Agent for Controllable Reports},
author = {Wu, Hongrui and Tuo, Kaiwen and Wang, Congcong and Li, Gen and Dong, Shuai and
Yu, Xinlei and Hou, Haowen and Peng, Zelin and Wang, Jiaqi},
year = {2027}
}
- Downloads last month
- 59